Jak powiedziałem w komentarzach, logika intuicyjna nie jest najważniejsza. Ważniejszym punktem jest posiadanie konstruktywnego dowodu. Myślę, że teoria typów Martina-Löfa jest o wiele bardziej istotna dla teorii języka programowania niż logika intuicyjna i są eksperci, którzy twierdzili, że praca Martina-Löfa jest głównym powodem ożywienia ogólnego zainteresowania matematyką konstruktywną.
Obliczeniowa interpretacja konstruktywności jest jedną z możliwych perspektyw, ale nie jest jedyną. Powinniśmy zachować ostrożność, gdy chcemy porównać konstruktywne dowody z dowodami klasycznymi. Chociaż oba mogą używać tych samych symboli, to co oznaczają te symbole, są różne.
Zawsze warto pamiętać, że dowody klasyczne można przełożyć na dowody intuicyjne. Innymi słowy, w pewnym sensie logika klasyczna jest podsystemem logiki intuicyjnej. Dlatego możesz w pewnym sensie zrealizować (powiedzmy przy użyciu funkcji obliczalnych) klasyczne dowody. Z drugiej strony możemy myśleć o konstruktywnej matematyce jako o jakimś systemie matematycznym w klasycznym otoczeniu.
Na koniec formalizmy, klasyczne lub konstruktywne, są dla nas narzędziem do wyrażania wypowiedzi. Przyjmowanie klasycznego twierdzenia i próba konstruktywnego udowodnienia go bez tej perspektywy nie ma większego sensu IMHO. Kiedy mówię klasycznie mam na myśli coś innego od tego, co mówię, konstruktywnie. Możesz spierać się o to, co „powinno” być prawdziwym znaczeniem „ ”, ale myślę, że nie jest to interesujące, jeśli nie rozmawiamy o tym, co chcemy wyrazić. Czy mamy na myśli (przynajmniej) jedną z nich i wiemy, która? Czy może po prostu mamy na myśli jedną z nich?A ∨ B ∨A ∨ BA ∨ B∨
Teraz, z tego punktu widzenia, jeśli chcemy udowodnić oświadczenie jak i chcemy odnosić się to do mapowania z w pewnym spełniającej wówczas lepszym sposobem wyrażenia może być sposób konstruktywny. Z drugiej strony, jeśli zależy nam tylko na istnieniu a nie na tym, jak je znaleźć, wówczas klasyczny sposób prawdopodobnie miałby większy sens. Kiedy konstruktywnie udowodnisz instrukcję, niejawnie budujesz również algorytm znajdowania z . Możesz zrobić to samo, używając bardziej skomplikowanej formuły, takiej jak: „algorytm ma właściwość, która dla wszystkichx y φ ( x , y ) y y x A x φ ( x , A ( x ) ) A∀ x ∃ y φ ( x , y)xyφ ( x , y)yyxZAx , "gdzie jest jawnie podanym algorytmem. Jeśli nie jest jasne, dlaczego można preferować konstruktywny sposób wyrażenia tego, pomyśl o językach programowania jako analogii: możesz napisać program dla algorytmu MST Kruskala w asemblerze x86, w którym musisz dbać o wiele problemów ubocznych lub możesz napisać program w Pythonie.φ ( x , A ( x ) )ZA
Dlaczego więc nie używamy logiki intuicyjnej w praktyce? Jest kilka powodów. Na przykład większość z nas nie jest wyszkolona z tym nastawieniem umysłu. Znalezienie klasycznego dowodu stwierdzenia może być znacznie łatwiejsze niż znalezienie konstruktywnego dowodu. Lub możemy dbać o szczegóły niskiego poziomu, które są ukryte i niedostępne w konstruktywnym ustawieniu (patrz także logika liniowa ). Lub możemy po prostu nie być zainteresowani uzyskaniem dodatkowych rzeczy, które pochodzą z konstruktywnym dowodem. I chociaż istnieją narzędzia do wyodrębniania programów z dowodów, narzędzia te na ogół wymagają bardzo szczegółowych dowodów i nie były wystarczająco przyjazne dla użytkownika dla teoretyków ogólnych. Krótko mówiąc, za dużo bólu za mało korzyści.
Oto jeden z możliwych powodów, dla których nie widzimy zbyt wielu konstruktywnych dowodów w teorii A: nasze twierdzenia w teorii A są często twierdzeniami i są udowodnione przy użyciu niezbyt mocnych teorii (powiedzmy, że są one możliwe do udowodnienia w ) i meta -twierdzenie, że wszystkie z nich są również możliwe do udowodnienia konstruktywnie (w konstruktywnym odpowiedniku ). W rzeczywistości wiele wyników teorii A można udowodnić w teoriach znacznie słabszych niż . P A P A P AΠ02)P.ZAP.ZAP.ZA
Pamiętam, że Douglas S. Bridges we wstępie do swojej książki teorii obliczeń argumentował, że powinniśmy konstruktywnie udowodnić nasze wyniki. Podaje przykład, który IIRC jest zasadniczo następujący:
Załóżmy, że pracujesz dla dużej firmy programistycznej, a Twój menedżer prosi o program umożliwiający rozwiązanie problemu. Czy akceptowalny byłby powrót z dwoma programami i poinformowanie swojego menedżera o jednym z tych dwóch rozwiązań poprawnie, ale nie wiem który?
Na koniec powinniśmy pamiętać, że chociaż używamy tych samych symboli dla klasycznej i intuicyjnej logiki, symbole te mają różne znaczenia, a jeden z nich zależy od tego, co chcemy wyrazić.
Jeśli chodzi o twoje ostatnie pytanie, myślę, że twierdzenie Robertsona-Seymour'a byłoby przykładem twierdzenia, o którym wiemy, że jest prawdziwe klasycznie, ale nie mamy na to żadnego konstruktywnego dowodu. Zobacz też