Zrozumienie dowodu silnej normalizacji rachunku konstrukcji


9

Mam trudności ze zrozumieniem dowodu silnej normalizacji dla rachunku konstrukcji. Staram się podążać za dowodem zawartym w pracy Hermana Geuversa „Krótki i elastyczny dowód silnej normalizacji dla rachunku konstrukcji”.

Potrafię dobrze podążać za główną linią rozumowania. Konstrukcje Geuvers dla każdego typuT interpretacja [[T]]ξ na podstawie pewnej oceny zmiennych typu ξ(α). A potem konstruuje jakąś interpretację terminów(|M|)ρ na podstawie pewnej oceny zmiennych terminowych ρ(x) i dowodzi, że dla prawidłowych ocen twierdzenie (|M|)ρ∈[[T]]ξ dla wszystkich Γ⊢M:T trzyma.

Mój problem: dla łatwych typów (takich jak systemowe typy F) interpretacja typów [[T]]ξ jest naprawdę zbiorem terminów, więc stwierdzenie (|M|)ρ∈[[T]]ξma sens. Ale w przypadku bardziej złożonych typów interpretacja[[T]]ξnie jest zestawem terminów, ale zestawem funkcji odpowiedniej przestrzeni funkcji. Myślę, że prawie rozumiem budowę przestrzeni funkcyjnych, jednak nie może ona przypisać żadnego znaczenia(|M|)ρ∈[[T]]ξ dla bardziej złożonych typów T.

Czy ktoś może wyjaśnić lub podać linki do bardziej zrozumiałych prezentacji dowodu?

Edycja: Pozwól mi spróbować wyjaśnić pytanie. KontekstΓ ma deklaracje zmiennych typu α:Ai zmienne obiektowe. Wycena typu jest ważna, jeśli dla wszystkich(α:A)∈Γ z Γ⊢A:◻ następnie ξ(α)∈ν(A)jest ważny. Aleν(A) może być elementem (SAT)∗ i nie tylko SAT. Dlatego nie można zdefiniować żadnej ważnej oceny terminuρ(α). ρ(α) musi być terminem, a nie jakąś funkcją przestrzeni funkcji.

Edycja 2: Przykład, który nie działa

Zróbmy następującą prawidłową pochodną:

[]⊢∗:◻axiom[α:∗]⊢α:∗variable introduction[α:∗]⊢∗:◻weaken[]⊢(Πα:∗.∗):◻product formation[β:Πα:∗.∗]⊢β:(Πα:∗.∗)variable introduction

W ostatnim kontekście poprawna ocena typu musi spełniać ξ(β)∈ν(Πα:∗.∗)={f|f:SAT→SAT}. Dla tego typu oceny nie ma ważnej oceny terminu.


1
Tak myśli połowa ludzi SATjest SAT. Powinieneś wyjaśnić, co to jest. Ponadto twoje pochodzenie wydaje się nieco dziwne. Druga linia nie powinna wspominaćα na zakończenie powinien przeczytać coś w rodzaju [α:∗]⊢∗:◻czy nie powinno?
— Andrej Bauer,

Używam notacji Herman Geuvers (która wydaje się być standardem w tej dziedzinie). SATjest zbiorem wszystkich nasyconych zestawów wyrażeń lambda. Dla drugiego wiersza mojej pochodnej: jest to reguła wprowadzająca dla zmiennych systemu czystego typu. Ta reguła brzmiΓ⊢T:sΓ,x:T⊢x:T gdzie sjest jakoś.
— helmut

Rozumiem, skąd masz drugą linię, ale nie jest to właściwe założenie do utworzenia trzeciej linii, prawda? Jaka reguła podaje trzecią linię.
— Andrej Bauer,

Reguła tworzenia produktu PTS mówi r(s1,s2,s3;Γ⊢A:s1;Γ,x:A⊢B:s2Γ⊢(Πx:A.B):s3. Rachunek konstrukcji ma regułęr(∗,∗,∗). To pozwala mi użyć pierwszej i drugiej linii do uzyskania trzeciej. Miałem jednak literówkę w swoim poście. Brakowało tekstu w trzeciej linii, który teraz dodałem.
— helmut

Nie powinien wtedy czytać pierwszego wiersza []⊢∗:∗? A może się pomieszałeś?∗ i ◻gdzieś? Druga linia nie może być drugą przesłanką reguły tworzenia produktu, ponieważ oznaczałoby to, że próbujesz utworzyć coś w rodzaju∏α:∗.α zamiast ∏α:∗.∗.
— Andrej Bauer,

Odpowiedzi:


6

Niestety nie jestem pewien, czy istnieje więcej przyjaznych zasobów dla początkujących niż konto Geuvers. Możesz wypróbować tę notatkę Chrisa Casinghino, która podaje kilka dowodów w rozdzierających szczegółach.

Nie jestem pewien, czy rozumiem sedno waszego zamieszania, ale myślę, że jedną ważną rzeczą, na którą należy zwrócić uwagę, jest następujący lemat (wniosek 5.2.14), udowodniony w klasycznym tekście Barendregta :

Γ⊢M:T ⇒ Γ⊢T:∗ or ◻

Oznacza to, że podczas gdy [[T]]ξ może być skomplikowaną funkcją, jeśli Γ⊢M:T trzyma zatem [[T]]ξ musi być zbiorem warunków .

Jest to insynuowane w zarysie (sekcja 3.1), gdzie (|t|)σ∈[[T]]ξ tylko, jeżeli Γ⊢t:T:∗, co jest zgodne z naszymi oczekiwaniami, a mianowicie, że interpretacja typu musi być zbiorem terminów, tj V(∗)⊆P(Term) (w rzeczy samej, V(∗)=SAT!)

Jest to powszechna sytuacja w teorii typów, mimo że interesuje nas tylko „rodzaj podstawowy” (tutaj∗), wciąż musimy zdefiniować semantykę dla rzeczy wyższych rodzajów (stąd potrzeba wprowadzenia SAT∗). Na koniec wszystko się ułoży, bo jest tylko rodzaj zamieszkały przez typy∗ (i ◻, ale to nie jest tak naprawdę ważne).


1
Dziękuję za wyjaśnienie. To rozwiązuje mój problem niezrozumienia funkcji użytych w dowodzie Geuvera. Miałem już podejrzenia, że ​​przeczytałem i ponownie przeczytałem gazetę Geuvera, ale wyraźnie to wyjaśniłeś.
— helmut
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.