jeśli (λ x. xx) ma typ, to czy system typów jest niespójny?


20

Jeśli system typów może przypisać typ do λ x . x xlub do nieterminującego (λx . x x) (λ x . x x), to czy w konsekwencji ten system jest niespójny? Czy każdy typ w tym systemie jest zamieszkały? Czy możesz okazać się fałszywy?

Odpowiedzi:


29

Z pewnością przypisanie typu do to za mało na niespójność: w systemie możemy wyprowadzić λx.x xF

λx.x x:(X.X)(X.X)

w dość prosty sposób (to dobre ćwiczenie!). Jednak nie można dobrze wpisać w tym systemie, zakładając -konsekwencję arytmetyki drugiego rzędu, ponieważ oznacza to, że wszystkie takie dobrze wpisane terminy są normalizowane.(λx.x x)(λx.x x) ω

Ponadto system jest spójny. Wynika to z jednej z normalizacji, ponieważ można wykazać, że dowolny termin typu nie może mieć normalnej postaci lub znacznie prostszego argumentu, w którym każdemu typowi jest przypisany zestaw, albo albo i można wykazać, że wszystkie typy pochodnych są przypisane , a ma przypisany (i dlatego nie jest pochodna).FX.X{}{}X.X

Ten ostatni argument można przeprowadzić w arytmetyce pierwszego rzędu. Fakt, że może być dobrze wpisany w spójny system, może być postrzegany jako nieco niepokojący i jest konsekwencją impredykatywności tych systemów . Nie powinno dziwić, że niektórzy kwestionują wiarygodność impredykacyjnych systemów logiki. Jak dotąd nie stwierdzono jednak niespójności w takich systemach.λx.x x

Z drugiej strony, aby móc sformułować bardziej ogólne stwierdzenie, że nie można poprawnie wpisać w spójny system, musisz mieć wystarczającą „logiczną strukturę” w swoim system typów, aby móc jasno zdefiniować spójność. Następnie musisz pokazać, że termin bez głowy w normalnej formie (jak ten powyżej) może mieć dowolny typ, co również nie jest oczywiste!(λx.x x)(λx.x x)

Więcej szczegółów można znaleźć w mojej odpowiedzi na powiązane pytanie: /cstheory//a/31321/3984


4
Po przeczytaniu tych odpowiedzi widzę, że doskonale rozumiesz sprawę. Chciałbym dowiedzieć się więcej, ale nie jestem pewien, gdzie szukać. Przejrzałem książkę TAPL i nie wspomina o tym, więc nie jestem pewien, czy jest to przedmiot teorii typów. Czy możesz mi wskazać, jakie obszary matematyczne / matematyczne są związane z tym pytaniem, a może kilka książek / artykułów? Dziękuję Ci bardzo.
MaiaVictor

2
Nie jestem pewny, że te pytania są „obszarem badań” per se , bardziej jak kilka pytań zabawy, które zostały wysłuchane dawno temu, czy istnieje jakiś poważny wysiłek ekspertów. Jest to zdecydowanie przedmiot teorii typów, a teoria Pure Type Systems ma tę zaletę, że problem jest określony i ograniczony. Prawdopodobnie poleciłbym papier Coquand-Herbelin z drugiego wątku.
cody

3
Podobne pytania zostały zadane, na przykład tutaj i tutaj . Dodałbym do listy „rachunki lambda z typami” Barendregta .
cody

1
Jaka jest tutaj składnia? Spodziewałem się zobaczyć dla wyrażenia typu . λx:(X.X).ΛY.x[YY](x[Y])(X.X)(X.X)
Andrej Bauer

1
@AndrejBauer to składnia „niejawna”, w której nie ma adnotacji na , a abstrakcje typów i aplikacje są pomijane. Możesz także podać: jeśli chcesz. Wnioskowanie typu jest tutaj nierozstrzygalne, ale jest to nieco ortogonalne w stosunku do pytania. Oczywiście nie jest tak jasne, kiedy masz typy zależne, ale istnieją wersje np. CoC z domniemanymi kwantyfikacjami (rachunek niejawnych konstrukcji Miquela), więc pytanie pozostaje aktualne. λλx:(X.X).x[(X.X)(X.X)] x
cody
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.