Automatyczne dowodzenie twierdzeń
Automatyczne dowodzenie twierdzeń (ang. automated theorem proving) – proces, w którym komputer rozstrzyga czy dane twierdzenie jest dowodliwe w jakiejś teorii, często przy okazji generując jego dowód. Twierdzenia te należą zwykle do rachunku zdań lub rachunku predykatów pierwszego rzędu.
Dla komputera wygodniejsze jest zwykle wnioskowanie w tył, choć czasem stosuje się też wnioskowanie w przód.
Przykładem twierdzenia, które zostało dowiedzione dopiero przez ATP jest "Algebry Robbinsa są boolowskie"[1].
Spis treści
1 Automatyczne dowodzenie twierdzeń rachunku zdań
2 Automatyczne dowodzenie twierdzeń rachunku predykatów
3 Zobacz też
4 Przypisy
5 Linki zewnętrzne
Automatyczne dowodzenie twierdzeń rachunku zdań |
Chodzi o stwierdzenie czy dane twierdzenie jest tautologią, lub czy jest spełnialne. Oba przypadki są wzajemnie połączone: zaprzeczenie twierdzenia jest spełnialne wtedy i tylko wtedy, gdy twierdzenie to nie jest tautologią.
Twierdzenia rachunku zdań zawsze są rozstrzygalne – choćby metodą brute force, która polega na sprawdzeniu 2n kombinacji wartości prawda-fałsz dla n zmiennych zdaniowych występujących w twierdzeniu.
Istnieje wiele innych metod, które mają większą wydajność i 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 różne 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 może być arytmetyka liczb rzeczywistych, co udowodnił Alfred Tarski. Do weryfikacji zdań o liczbach rzeczywistych służy metoda eliminacji kwantyfikatorów.
Zobacz też |
- rachunek lambda
- CADE
- CASC
- subsumpcja
- unifikacja
- term
- indeksowanie termów
- system wspomagający dowodzenie twierdzeń
- system Mizar
Przypisy |
↑ Bernd IB.I. Dahn Bernd IB.I., Robbins Algebras Are Boolean: A Revision of McCune's Computer-Generated Solution of Robbins Problem, „Journal of Algebra”, 208 (2), 1998, s. 526–532, DOI: 10.1006/jabr.1998.7467, ISSN 0021-8693 [dostęp 2018-09-23] .
Linki zewnętrzne |
- FredericF. Portoraro FredericF., Automated Reasoning [w:] Stanford Encyclopedia of Philosophy [online], CSLI, Stanford University, 20 listopada 2014, ISSN 1095-5054 [dostęp 2018-08-07] (ang.).