Czy istnieje typowany rachunek lambda, który jest spójny i kompletny Turinga?

20

Czy istnieje typowany rachunek lambda, w którym odpowiednia logika w korespondencji Curry-Howarda jest spójna i gdzie istnieją możliwe do wpisania wyrażenia lambda dla każdej funkcji obliczeniowej?

Jest to wprawdzie pytanie nieprecyzyjne, pozbawione precyzyjnej definicji „typowanego rachunku lambda”. Zastanawiam się, czy istnieją (a) znane przykłady tego, lub (b) znane dowody niemożności dla czegoś w tej dziedzinie.

Edycja: @cody podaje dokładną wersję tego pytania w swojej odpowiedzi poniżej: czy istnieje logiczny system czystego typu (LPTS), który jest spójny i Turinga kompletny (w sensie zdefiniowanym poniżej)?

Morgan Thomas
źródło
2
Nie ma rachunku rekurencyjnie aksjomatyzowalnego (lambda lub inny), którego wszystkie możliwe do udowodnienia funkcje rekurencyjne są funkcjami rekurencyjnymi, więc rachunek musiałby obejmować wyrażenia nie kończące się.
Emil Jeřábek wspiera Monikę
2
Ta odpowiedź jest twierdzenie, które mówi, że nie można mieć żadnego rodzaju rachunku, który jest zarówno Turing-zupełny i całkowity.
Andrej Bauer,
1
Prawdopodobnie odpowie na twoje pytanie, gdy uczynisz je wystarczająco precyzyjnym. Myślę, że dowód Andreja jest niepotrzebnie skomplikowany (ale pokazuje więcej): chodzi o to, że gdyby istniał skutecznie opisany system, w którym wszystkie funkcje rekurencyjne byłyby reprezentowalne w taki sposób, że można syntaktycznie poświadczyć, że wyrażenie jest uczciwą reprezentacją funkcja rekurencyjna (np. przez sprawdzenie, czy jest poprawnie wpisana w systemie), wtedy uzyskasz uniwersalną całkowitą funkcję rekurencyjną, co jest niemożliwe.
Emil Jeřábek wspiera Monikę
1
Oczywiście klasyczną odpowiedzią na tego rodzaju pytanie może być: typ rachunek z typami przecięć , ponieważ wpisuje on wszystkie (i tylko te) terminy, które są silnie normalizujące. Jest to raczej filozoficzne pytanie, czy rachunek dopuszcza „interpretację Curry-Howarda”. λ
cody
2
Trudno tu być bardziej precyzyjnym, ponieważ pytanie nie jest precyzyjne.
Andrej Bauer,

Odpowiedzi:

21

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ść.zabsurrefazalsmi

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 :

  1. Zestaw wszystkich dobrze napisanych programów nie jest Turing Complete.
  2. 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:

  1. 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:τσ

    ΓM.:τΓM.:σΓM.:τσ
    Oczywiste jest, że „interpretacja”=prowadzi do spójnej interpretacji logicznej.
    ΓM.:τσΓM.:τΓM.:τσΓM.:σ
    =
  2. 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.ropT.ypmiP.rop:T.ypmi(P.rop,P.rop,P.rop)P.rop

Teraz przyjmuję szczególne stwierdzenie o kompletności Turinga: napraw LPTS i niech Γ będzie kontekstemL.Γ

Γ=nat:Prop, 0:nat, S:natnat

oznaczaTuringa Całkowiteiff dla każdej całkowitej obliczalnej funkcji f : NN istnieje termin t f taki, że Γ t f : n a tn a t i dla każdego n N t f ( S n 0 ) β S f ( n ) 0Lf:NNtf

Γtf:natnat
nN
tfa (S.n 0)βS.fa(n) 0

Argument diagonalizacji Andreja pokazuje teraz, że nie ma końcówki typu n a ttnzat .

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Γloop:nzatnzatZA0S.ΓZAZA:P.rop )!

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

cody
źródło
OK, więc pierwsze dwa wyjaśnienia dotyczące twojej uwagi (1). Co masz na myśli mówiąc, że ten system typów skrzyżowań nie jest wymienny rekurencyjnie? Z pewnością zbiór twierdzeń systemu jest ponownie, ponieważ podałeś go jako prosty rachunek sekwencyjny. Ponadto wynik, który, jak udowodniłem, w powiązanym dokumencie jest taki, że terminy, które można wpisać w systemie, są dokładnie terminami silnie normalizującymi; ale czy to nie różni się od stwierdzenia, że ​​może wpisać dokładnie całkowitą liczbę funkcji obliczalnych? Np. Nie jest silnie normalizująca, ale nie całkowita? λx.xx
Morgan Thomas
Teraz pytanie o twoją uwagę (2). Wydaje mi się, że cytowane przez ciebie twierdzenie nie jest tym, czym jesteśmy zainteresowani. Mówi ono, że dla każdego niezależnego LPTS, jeśli jest niespójny, to Turing jest kompletny. Ale chcielibyśmy wiedzieć, czy dla każdego LPTS, jeśli Turing jest kompletny, to jest niespójny. Czy coś tu nie rozumiem?
Morgan Thomas
@MorganThomas: Ach, masz rację co do pierwszego punktu: chciałem powiedzieć, że system typów nie może być rozstrzygalny , to znaczy, biorąc pod uwagę , zdanie Γ t : A jest nierozstrzygalne. Poprawię to w poście. Γ,t,AΓt:A
cody
Drugi punkt: masz również rację, że można mieć niecałkowitą funkcję, która jest dobrze napisana (chociaż niekoniecznie można zastosować ją do danego argumentu). Poprawię odpowiedź.
cody
1
Trzeci punkt Znowu masz rację! Jednak odwrotna sytuacja (w szczególnym przypadku LPTS) jest dość trywialna. Przedstawię argument.
cody
11

Oto odpowiedź na wariant precyzji @ cody mojego pytania. Istnieje spójny LPTS, który Turing kończy w sensie z grubsza @ cody, jeśli pozwolimy na wprowadzenie dodatkowych aksjomatów i reguł redukcji . Zatem ściśle mówiąc, system nie jest LPTS; jest to po prostu coś w rodzaju jednego.β

Zastanów się nad rachunkiem konstrukcji (lub swoim ulubionym członkiem kostki ). To jest LPTS, ale dodamy dodatkowe rzeczy, które sprawiają, że nie jest to LPTS. Wybierz stałe symbole nat , 0 , S i dodaj aksjomaty:λnat,0,S

0 : nat S : nat nat

nat:
0:nat
S:natnat

Indeks Turinga programy maszynowe według liczb naturalnych, a dla każdej liczby naturalnej wybrać symbol stałej f e , dodać aksjomat f e : nat NAT , a dla wszystkich e , x N , dodaj p regułę -redukcjaefefe:natnate,xNβ

fe(x)βΦe(x),

gdzie normalnie ma wyjście E XX Turingowi programu maszyny o x . Jeśli Φ e ( x ) różni się wówczas reguła ta nie robi nic. Zauważ, że dodając te aksjomaty i reguły, twierdzenia systemu pozostają rekurencyjnie policzalne, chociaż jego zestaw reguł redukcji β nie jest już rozstrzygalny, a jedynie rekurencyjnie policzalny. Wierzę, że moglibyśmy z łatwością zachować zestaw βΦe(x)exΦe(x)ββ porządku reguł redukcji poprzez wyraźne określenie szczegółów modelu obliczeniowego w składni i regułach systemu.

Teraz teoria ta jest całkowicie ukończona w sensie z grubsza @ cody, tylko brutalną siłą; ale twierdzenie jest takie, że jest również spójne. Stwórzmy jego model.

Niech będą trzema zestawami, takimi, że:U1U2U3

  • (gdzie S,N,0,SU1S jest funkcją następczą).
  • Każdy zestaw jest przechodni; jeśli , to a U iabUiaUi .
  • Każdy zestaw jest zamknięty pod tworzeniem przestrzeni funkcyjnych; tj. jeśli , to B AU iA,BUiBAUi .
  • AUif:AUiaAf(a)Ui

Ui

vU2vIv

  • Iv(x)=v(x)x
  • Iv()=U1,Iv()=U2
  • Iv(nat)=N,Iv(0)=0,Iv(S)=S
  • Iv(fe)=ΦeNNe
  • Iv(AB)=Iv(A)(Iv(B))Iv(A)Iv(B)Iv(AB)=0
  • Iv(λx:A.B)aIv(A)Iv[x:=a](B)
  • Iv(Πx:A.B)=aIv(A)Iv[x:=a](B)

AIv(A)U3vA:BvZA:b, gdyby jav(ZA)jav(b). Mówimy takΓZA:b jeśli dla wszystkich interpretacji v, gdyby vx:do dla wszystkich (x:do)Γ, następnie vZA:b.

Łatwo jest sprawdzić, czy ΓZA:b, następnie ΓZA:b, więc jest to model systemu. Ale dla dowolnych zmiennychx,y, tak nie jest y:x:y, ponieważ możemy interpretować y przez , więc system jest spójny.

To jest odpowiedź na moje pierwotne pytanie, w tym sensie, że rozsądnie jest nazywać kalulus na maszynie, który jest spójny i Turinga kompletny. Nie jest to jednak odpowiedź na pytanie @ cody, ponieważ nie jest to LPTS, ponieważ dodano dodatkowe aksjomaty iβzasady redukcji. Wyobrażam sobie, że odpowiedź na pytanie @ cody jest znacznie trudniejsza.

Morgan Thomas
źródło
2
To ładna odpowiedź, ale nie jestem pewien, czy musisz przejść przez wszystkie te ćwiczenia gimnastyczne, aby udowodnić spójność: określenie typu ZA w pustym kontekście może być „odsłodzony” do terminu w CoC: zadzwonię na fami(x)Φmi(x) zasady ι- rządzi i utrzymujeβdla zwykłych. Wykonaj wszystkoβ-redukcje (kończy się, ponieważ dodano tylko stałe) i zastępuje każdy termin formularza fami(x)przez jego redukcję, jeśli ma taką . Chodzi o to, żeι-zasady działają tylko na zasadach naziemnych, więc możesz zrobić wszystko β- najpierw obniżki, aby usunąć je z drogi.
cody
Myślę, że masz rację. To nie jest moja dziedzina, więc jestem trochę niezdarny. :-) Myślę, że twój dowód działa, a jedną ciekawą konsekwencją, jeśli mam rację, jest to, że ta teoria nie ma zbyt dużej siły spójności. Wygląda jak potencjalnie bardzo potężna teoria, ponieważ ma typy i liczby naturalne, co powinno pozwolić ci zinterpretować teorię mnogości; ale najwyraźniej nie możesz, ponieważ możesz udowodnić, że jest spójny bez użycia potężnej teorii mnogości!
Morgan Thomas