W porządku, poddam się temu: ogólnie dla danego systemu typów , prawda jest następująca:T.
Jeśli wszystkie dobrze wpisane terminy w rachunku normalizują się, wówczas T jest spójne, gdy jest postrzegane jako logika.T.T.
Dowodem na ogół prowadzi się przy założeniu, że trzeba termin b Ś U r d typu F danej ł s e , poprzez redukcję z zastrzeżeniem uzyskania postaci normalnej, a następnie przebiega przez indukcję o strukturze takiej perspektywie się sprzeczność.a b s u r dF a l s e
Naturalne jest zastanawianie się, czy rozmowa się utrzymuje, tj
Dla dowolnego systemu typu , jeśli T jest logicznie spójny , to każdy dobrze wpisany termin w T jest normalizujący.T.T.T.
Problem polega na tym, że nie ma tak naprawdę najbardziej ogólnego pojęcia „systemu typów”, a tym bardziej nie jest zgodna co do znaczenia logicznej spójności dla takich systemów. Możemy jednak empirycznie to zweryfikować
W przypadku większości znanych systemów typu, które mają logiczną interpretację, odwrotność rzeczywiście się sprawdza.
W jaki sposób łączy się to z Turing Completeness? Cóż, po pierwsze, jeśli sprawdzanie typu jest rozstrzygalne , to argument Andreja pokazuje, że jedno z poniższych musi być spełnione :
- Zestaw wszystkich dobrze napisanych programów nie jest Turing Complete.
- Istnieje nie kończący się dobrze napisany program.
Sugeruje to, że:
Systemy typów, które mają logiczną interpretację i są spójne i są rekurencyjnie wyliczalne, nie są Turing Complete.
Podanie faktycznego twierdzenia zamiast sugestii wymaga doprecyzowania matematycznego pojęcia systemów typów i interpretacji logicznych.
Teraz przychodzą mi na myśl dwie uwagi:
Istnieje nierozstrzygalny system typów, system typów skrzyżowań, który ma logiczną interpretację i może reprezentować każdy normalizujący termin . Jak zauważyłeś, nie jest to dokładnie to samo, co ukończenie Turinga, ponieważ typ funkcji totalnej może wymagać aktualizacji (dopracowania) przed zastosowaniem jej do żądanego argumentu. Rachunek ten jest rachunkiem „w stylu curry'ego” i jest równy STLC +
Γ ⊢ M : τλ
i
Γ⊢M:τ∩σ
Tt ⊢ M: τTt ⊢ M: σTt ⊢ M: τ∩ σ
Oczywiste jest, że „interpretacja”∩=∧prowadzi do spójnej interpretacji logicznej.Tt ⊢ M: τ∩ σTt ⊢ M: τTt ⊢ M: τ∩ σTt ⊢ M: σ
∩ = ∧
Istnieje klasa systemów typów, Pure Type Systems , w których takie pytanie można by sprecyzować. W tych ramach logiczna interpretacja jest jednak mniej jasna. Można pokusić się o stwierdzenie: „PTS jest spójny, jeśli ma niezamieszkany typ”. Ale to nie działa, ponieważ typy mogą żyć w różnych „wszechświatach”, gdzie niektóre mogą być spójne, a inne nie.
Coquand i Herbelin definiują pojęcie logicznych systemów typu czystego , w którym pytanie ma sens i pokazują
Każdy niespójny, niezależny LPTS ma kombinator pętli (podobnie jak Turing Complete)
Który odpowiada na pytanie w jednym kierunku (niespójne TC) w tym przypadku. O ile mi wiadomo, pytanie dotyczące ogólnego LPTS jest nadal otwarte i dość trudne.⇒
Edycja: Odwrotność wyniku Coquand-Herbelin nie jest tak łatwa, jak myślałem! Oto, co do tej pory wymyśliłem.
Logiczny Czysty Typ systemu jest PTS z (co najmniej) rodzaje i T y p e (co najmniej) Aksjomat p r o p : T y p e i (przynajmniej) zasada ( P r o p , P r o p , P r o p ) , z dalszym wymogiem, że nie ma rodzajów P r o p .P r o pT y p eP r o p : t y p e(Prop,Prop,Prop)Prop
Teraz przyjmuję szczególne stwierdzenie o kompletności Turinga: napraw LPTS i niech Γ będzie kontekstemLΓ
Γ=nat:Prop, 0:nat, S:nat→nat
oznaczaTuringa Całkowiteiff dla każdej całkowitej obliczalnej funkcji f : N → N istnieje termin t f taki, że
Γ ⊢ t f : n a t → n a t
i dla każdego n ∈ N t f ( S n 0 ) → ∗ β S f ( n ) 0Lf:N→Ntf
Γ⊢tf:nat→nat
n∈N
tfa ( Sn 0 ) →∗βS.fa( n ) 0
Argument diagonalizacji Andreja pokazuje teraz, że nie ma końcówki typu n a ttn a t .
Teraz wydaje się, że jesteśmy w połowie drogi! Biorąc pod uwagę nie kończący się termin , chcemy zastąpić wystąpienia n a t jakimś ogólnym typem A i pozbyć się 0 i S w Γ , i będziemy mieć naszą niespójność ( A jest zamieszkały w kontekście A : P r o pΓ ⊢ l o o p : n a tn a tZA0S.ΓZAOdp . : P r o p )!
Niestety utknąłem w tym miejscu, ponieważ łatwo jest zastąpić literę tożsamością, ale zero jest znacznie trudniejsze do usunięcia. Idealnie chcielibyśmy skorzystać z jakiegoś twierdzenia o rekurencji Kleene'a, ale jeszcze tego nie rozgryzłem.S.0