Yo! Dies ist wahrscheinlich eine dumme Frage, aber ich habe nie gesehen, dass sie explizit niedergeschrieben wurde, wenn beispielsweise die Entscheidbarkeit der Typprüfung der starken Normalisierungseigenschaft entspricht. Daher stelle ich diese Frage, um alle möglichen Zusammenhänge zwischen Typprüfung, Typisierbarkeit und starker Normalisierung zu klären.
Lassen Sie mich meine Motivation erklären. Für Typentheorien (ich bin hier absichtlich vage, aber ich interessiere mich hauptsächlich für abhängige Typentheorien) wird eine starke Normalisierung verwendet, um die Entscheidbarkeit der Typprüfung zu beweisen. Auf der anderen Seite haben alle typisierten Systeme, die ich kenne und die eine dieser Eigenschaften haben, auch die andere. Ich habe jedoch nie explizit gesehen, dass eine starke Normalisierung gleichbedeutend mit der Entscheidbarkeit der Typprüfung ist.
Um die Typisierbarkeit zu beweisen, reduziert man normalerweise (vielleicht immer) einen Begriff auf eine normale Form. Es ist jedoch bekannt, dass die Typisierbarkeit für abhängige Typentheorien nicht gilt, wohingegen eine starke Normalisierung gelten kann.
1) Stimmt es, dass die Entscheidbarkeit der Typprüfung gleichbedeutend damit ist, dass jeder Begriff stark normalisierbar ist?
2) Welche Beziehung besteht allgemein zwischen der Entscheidbarkeit der Typprüfung, der Typisierbarkeit und der starken Normalisierung? Welches impliziert das andere?
Danke im Voraus.
BEARBEITEN
Angesichts der Unzufriedenheit mit dem Grad der Allgemeinheit meiner Frage (die mir nicht bekannt war) möchte ich sie nur auf Pure Type Systems beschränken. Natürlich sind zusätzliche Kommentare oder Gegenbeispiele zu anderen Typentheorien von großem Nutzen.
quelle
Antworten:
Technisch: eine gute für diese Fragen technischen Rahmenbedingungen ist die Einstellung von reinen Typsysteme , in der Normalisierung tut decidability der Typprüfung implizieren. Das Ergebnis ist folkloristisch, aber nicht trivial, da eine Strategie für die Anwendung der Konvertierungsregel gefunden werden muss. Die naheliegende Strategie besteht darin, abgeleitete Typen vor allen Anwendungen der Anwendungsregel zu normalisieren. Selbst hier gibt es einige Feinheiten, bei denen die Richtigkeit einer natürlichen (effizienteren) Strategie, die als Expansionsverschiebung bezeichnet wird, eine Weile offen war, aber seitdem geklärt wurde.
Es gibt Typensysteme, die normalisieren, aber nicht entscheidbar sind, insbesondere das System mit Schnittpunkttypen, die genau die normalisierenden Begriffe eingeben und daher unentscheidbar sein müssen (da es sonst zur Identifizierung normalisierender Begriffe verwendet werden könnte). Es wäre verlockend, hier zu sagen, dass das System in dem Sinne defekt ist, dass es nicht typgesteuert ist , dh die Begriffe enthalten nicht genügend Informationen, um den Typ herauszufinden.
Das allgemeine Problem ist jedoch für allgemeine Systeme vom reinen Typ noch offen, obwohl allgemein angenommen wird, dass es wahr ist, und einige Teilergebnisse wurden in dieser Richtung gezeigt, z . B. hier .
quelle
(1) Falsch. Gegenbeispiel: Java, Scala, Haskell, ...
(2) Keine allgemeinen Beziehungen gelten, hängt wirklich von den Details des Sprach- / Schreibsystems ab. Es gibt eine Ausnahme: Für vernünftige Sprachen und Typisierungssysteme stelle ich mir vor, dass die Entscheidbarkeit der Typinferenz (von der ich annehme, dass Sie sie mit "Typisierbarkeit" meinen) trivial eine Typprüfung impliziert. Aber ich wäre nicht überrascht, wenn man ein verrücktes System erfinden könnte, in dem selbst diese Implikation nicht zutrifft.
quelle