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 typu interpretacja na podstawie pewnej oceny zmiennych typu . A potem konstruuje jakąś interpretację terminów na podstawie pewnej oceny zmiennych terminowych i dowodzi, że dla prawidłowych ocen twierdzenie dla wszystkich trzyma.
Mój problem: dla łatwych typów (takich jak systemowe typy F) interpretacja typów jest naprawdę zbiorem terminów, więc stwierdzenie ma sens. Ale w przypadku bardziej złożonych typów interpretacjanie 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 dla bardziej złożonych typów .
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 i zmienne obiektowe. Wycena typu jest ważna, jeśli dla wszystkich z następnie jest ważny. Ale może być elementem i nie tylko . 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ą:
W ostatnim kontekście poprawna ocena typu musi spełniać . Dla tego typu oceny nie ma ważnej oceny terminu.
Odpowiedzi:
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 :
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).
źródło