Automatyczne dowodzenie twierdzeń (ang. automated theorem proving) – proces, w którym komputer rozstrzyga czy dane twierdzenie jest dowodliwe w jakiejś teorii, wielokrotnie przy okazji generując jego dowód. Twierdzenia te należą zwykle do rachunku zdań albo rachunku predykatów pierwszego rzędu.
Dla komputera wygodniejsze jest zwykle wnioskowanie w tył, choć czasem stosuje się też wnioskowanie w przód.
Automatyczne dowodzenie twierdzeń rachunku zdań
Chodzi o stwierdzenie czy dane twierdzenie jest tautologią, albo czy jest spełnialne. Obydwa przypadki są wzajemnie połączone: zaprzeczenie twierdzenia jest spełnialne wtedy oraz tylko wtedy, kiedy twierdzenie to nie jest tautologią.
Twierdzenia rachunku zdań stale są rozstrzygalne – choćby metodą brute force, która opiera się na sprawdzeniu 2n kombinacji wartości prawda-fałsz dla n zmiennych zdaniowych występujących w twierdzeniu.
Istnieje wiele innych metod, które posiadają większą wydajność oraz generują bardziej czytelne dowody. Do najprostszych z nich należą sekwenty Gentzena, systemy Hilberta oraz dedukcja naturalna. W praktyce używa się zwykle metod bazowanych na procedurze Davisa-Putnama. Można też używać uproszczonych wersji metod dla rachunku predykatów pierwszego rzędu.
Problem spełnialności jest jednak w każdym systemie NP zupełny, zaś problem tautologii – CoNP zupełny.
Automatyczne dowodzenie twierdzeń rachunku predykatów
Dominujące metody to tableau, a przede wszystkim zróżnicowane wersje rezolucji. W systemach z równością używa się też paramodulacji. Warto zaznaczyć, że "ogólny" język I rzędu jest nierozstrzygalny. W szczególności nie istnieje algorytm, który dla ogólnego języka I rzędu może określić, czy dane zdanie jest w nim prawdziwe, czy nie. Istnieją jednak "szczególne" języki I rzędu, które są rozstrzygalne. Przykładem rozstrzygalnego języka I rzędu bywa arytmetyka liczb rzeczywistych, co udowodnił Alfred Tarski. Do weryfikacji zdań o liczbach rzeczywistych służy metoda eliminacji kwantyfikatorów.
Sprawdź też