Entscheidbarkeit der Typinferenz und Typprüfung in MLTT

9
  1. In Martin-Löfs Eine intuitionistische Theorie der Typen: Prädikativer Teil wird bewiesen, dass die Typprüfung unter dem Vorbehalt Typisierbarkeit entscheidend ist , indem ein Normalisierungssatz für geschlossene typisierbare Begriffe bewiesen wird. Andererseits habe ich an mehreren Stellen (Wikipedia, Nördstrom usw.) gesehen, dass das Einchecken von (intensiven) MLTT-Entscheidungen entscheidbar ist. beschränken sie sich implizit auf typisierbare Begriffe?ein::EINein

  2. Ist etwas über die Entscheidbarkeit der Typinferenz oder der Typprüfung in der intensiven MLTT bekannt, wenn wir uns nicht auf die typisierbaren Begriffe beschränken? Zum Beispiel gibt es vielleicht einen Entscheidungsprozess, der untypisierbare Begriffe erkennt, beispielsweise indem er auf eine Form normalisiert, die keinem der Konstruktoren entspricht, oder indem gezeigt wird, dass es für einen nicht typisierbaren Begriff keine nicht periodische Folge von Reduzierungen gibt.

    Ich konnte in der Literatur nicht viel finden.

Josh Chen
quelle

Antworten:

9

Sicher das Entscheidungsproblem

Gegeben ein (Vor-) Term Gibt es einen Typ so dass in MLTT ableitbar ist?einEINein::EIN

Manchmal geschrieben(und das Typinferenzproblem genannt ) ist entscheidbar, das heißt, es spielt keine Rolle, ob gut typisiert ist oder nicht, um eine Antwort zu erhalten. In der Tat implementieren alle auf MLTT basierenden Proofprüfer eine Version dieses Entscheidungsalgorithmus!ein :: ?ein

Offensichtlich ist das Problem in einem nicht leeren Kontext ( ) Auch entscheidbar. Normalerweise müssen Sie das letztere lösen, um das erstere zu lösen.Γein :: ?

Dies sollte die Fragen 1 und 2 beantworten. Der Algorithmus beinhaltet keine Normalisierung von , was im Allgemeinen eine schlechte Nachricht wäre, da nicht entschieden werden kann, ob sich ein untypisierter Begriff auf irgendetwas normalisiert. Der Typprüfungsalgorithmus beinhaltet jedoch das Normalisieren von Typen , die konstruktionsbedingt selbst gut typisiert sind.ein

Infolgedessen ist die Normalisierung gut typisierter Terme eine notwendige Bedingung, damit das Typinferenzproblem entscheidbar ist.

Vielleicht möchten Sie Nordström, Petersson und Smith für eine Einführung überprüfen .


Mir ist keine generische Beschreibung eines Typinferenzalgorithmus zur Normalisierung von Typentheorien bekannt, obwohl Pollack einen ziemlich guten Überblick (obwohl sich der Stand der Technik verbessert hat) in Typechecking in Pure Type Systems gibt .

Cody
quelle
Wie wäre es mit Pretypen (Begriffe, die angeblich einen Typ bezeichnen)? Es könnte sich auch lohnen, ihren Status zu klären.
Andrej Bauer
Vielen Dank, Cody, beziehen Sie sich auf die Algorithmen zur Typprüfung, die von Proof-Assistenten wie ALF und Coq implementiert wurden? Nach meinem Verständnis sind dies Algorithmen für die spezifischen Varianten von MLTT, auf denen sie basieren (CIC für Coq, etwas anderes für ALF), aber es ist mir unklar, wie diese verwendet werden können, um die spezifische MLTT von '73 zu überprüfen. Insbesondere wenn die Universumshierarchie oder andere Unterschiede im Detail etwas ändern könnten ...
Josh Chen
... oder sind die Algorithmen allgemein genug, um diese Unterschiede abzudecken? Ich habe Probleme, Ergebnisse in einer solchen Allgemeinheit zu finden. Alles, was ich bei meiner Literaturrecherche zu finden scheine, sind sehr spezifische Ergebnisse, die oft besonders auf die zugrunde liegende Theorie eines Beweisassistenten zugeschnitten sind.
Josh Chen
1
@JoshChen sind die Algorithmen im Kern sehr allgemein gehalten, da sie eine typgerichtete Suche beinhalten, die sich mit Normalisierungsschritten für gut typisierte Begriffe abwechselt, wie Andrej erklärte. Eine generische Beschreibung des Algorithmus ist mir leider nicht bekannt, obwohl ich meiner Antwort einen Teilverweis hinzufügen werde.
Cody
1
@JoshChen Sie klären nicht, aber sie beziehen sich möglicherweise auf abgeleitete Typen für Begriffe im "Curry-Stil", für die keine Schlussfolgerung möglich ist. Ich gehe hier näher darauf ein: cs.stackexchange.com/a/12957/988
cody
8

Ich möchte die Antwort durch cody durch eine allgemeine Beobachtung ergänzen, die mein Verständnis darüber vermittelt, warum die Algorithmen zur Typprüfung funktionieren.

Für eine breite Klasse von Typentheorien wird die Typprüfung oder Inferenz so durchgeführt, dass wir niemals versuchen, einen Begriff zu normalisieren, es sei denn, wir haben zuvor festgestellt, dass er gut typisiert ist. Ebenso versuchen wir niemals, einen Typ zu normalisieren, es sei denn, wir haben bereits festgestellt, dass es sich um einen Typ handelt. Aus diesem Grund können wir sicher sein, dass die Normalisierung beendet wird (was einen separaten Beweis erfordert).

Man muss sich bestimmte Algorithmen ansehen und sehen, dass sie wirklich so funktionieren, aber sie tun es. Ich wollte nur sagen, was sie zum Ticken bringt. Oder besser, das ist der Grund, warum sie aufhören zu ticken.

Andrej Bauer
quelle