Wiemy, że równość beta po prostu wpisanych terminów lambda jest rozstrzygalna. Biorąc pod uwagę M, N: σ → τ, jest rozstrzygalne, czy dla wszystkich X: σ, MX NX?
Wiemy, że równość beta po prostu wpisanych terminów lambda jest rozstrzygalna. Biorąc pod uwagę M, N: σ → τ, jest rozstrzygalne, czy dla wszystkich X: σ, MX NX?
Odpowiedzi:
Jak powiedziałem w moim komentarzu, odpowiedź brzmi „nie”.
Ważną kwestią do zrozumienia (mówię to dla Vicliba, który zdaje się uczyć o tych rzeczach) jest to, że posiadanie języka programowania / zestawu maszyn, w których wszystkie programy / obliczenia kończą się w żaden sposób, nie implikuje równości funkcji (tj. Czy dwa programy / maszyny obliczają tę samą funkcję) jest rozstrzygalne. Prosty przykład: weźmy zestaw maszyn Turinga o wielomiarowym zegarze. Z definicji wszystkie takie maszyny kończą się na wszystkich wejściach. Teraz, biorąc pod uwagę dowolną maszynę Turinga , istnieje maszyna Turinga która podana w danych wejściowych ciąg symulujekroki obliczania na stałym wejściu (powiedzmy, pusty ciąg) i akceptuje, jeśli kończy się co najwyżejkroki lub odrzuca inaczej. Jeśli jest maszyną Turinga, która zawsze natychmiast odrzuca, zarówno , i są (oczywiście) taktowane wielomianowo, a jednak jeśli moglibyśmy zdecydować, czy i obliczają tę samą funkcję (lub, w tym przypadku, decydują o tym samym języku), moglibyśmy zdecydować, czy (która, pamiętajmy, jest dowolną maszyną Turinga) kończy się na pustym łańcuchu.
W przypadku po prostu wpisanego -calculus (STLC) działa podobny argument, z tym wyjątkiem, że ocena mocy ekspresyjnej STLC nie jest tak banalna jak w powyższym przypadku. Kiedy pisałem swój komentarz, miałem na myśli kilka artykułów Hillebranda, Kanellakisa i Mairsona z początku lat 90., które pokazują, że stosując bardziej złożone typy niż zwykłe typy liczb całkowitych Kościoła, można zakodować w STLC wystarczająco skomplikowane obliczenia powyższego argumentu do działania. Właściwie widzę teraz, że potrzebny materiał jest już w uproszczonym dowodzie Mairsona na twierdzenie Statmana:
Harry G. Mairson, Prosty dowód twierdzenia Statmana. Theoretical Computer Science, 103 (2): 387-394, 1992. (Dostępne tutaj online ).
W tym dokumencie, przedstawia Mairson że podawane dowolną maszynę Turinga , jest uproszczona i term zawierające funkcje przejściowego . (Nie jest to a priori oczywiste, jeśli wziąć pod uwagę wyjątkowo słabą moc ekspresyjną STLC na liczbach całkowitych Kościoła. Rzeczywiście, kodowanie Mairsona nie jest natychmiastowe). Z tego nie jest trudno zbudować termin
(gdzie jest instancją na typu liczb całkowitych Kościoła) tak, że zmniejsza się do jeśli kończy co najwyżej kroków, gdy podał pusty ciąg znaków lub w przeciwnym razie redukuje do . Jak wyżej, gdybyśmy mogli zdecydować, że funkcja reprezentowana przez jest stałą , zdecydowalibyśmy się o zakończeniu na pustym łańcuchu.