Systemy wspomagania dowodzenia

Transkrypt

Systemy wspomagania dowodzenia
Paweł Marczewski
Systemy wspomagania dowodzenia
jak wytłumaczyć matematykę komputerowi
Formalne dowody
Zasady są bardzo proste...
aksjomaty systemu hilbertowskiego, Wikipedia
...ale dowody mogą być długie
http://us.metamath.org,
Logicomix: An Epic Search for Truth
Idealne zadanie dla komputera
(demonstracja)
Potem...
● takie proste rzeczy potrafi "auto"
● ciągle trzeba komputerowi podpowiadać
● czytelniejsze dowody trudniej pisać
Moje wrażenia
● niezła zabawa!
● trzeba dobrze rozumieć, co chcemy napisać
● trochę jak programowanie, ale nie do końca
Programming in Lisp is like playing with the primordial
forces of the universe. It feels like lightning between your
fingertips.
● tu można pod palcami czuć Prawdę :)
Glenn Ehrlich, http://cooking-with-lisp.blogspot.com/2004/05/my-road-to-lisp-answer.html
Trzeba dobrze rozumieć
I have this sort of statement: the difference between
science and art is that science is something that we
understand well enough to explain it to a computer, and art
is everything else.
- Donald Knuth
● formalizując matematykę, można zrozumieć ją lepiej
● z drugiej strony: co z dowodami, które rozumie tylko
komputer? (tw. o czterech kolorach)
Ciekawy pomysł - ProofPeer
● systemów i formalizmów jest wiele
● jak ułatwić innym korzystanie z naszej
pracy?
● pomysł: wspólna platforma, "GitHub dla
matematyków"
Inne zastosowanie:
dowodzenie poprawności programów
● statyczne typy (int f(int a, char b))
usuwają całą klasę błędów
● dowodzenie pozwala to uogólnić
● jest nawet formalnie zweryfikowany
kompilator C
● proof-carrying code: alternatywa dla
podpisywania kodu
Dziękuję za uwagę
pytania?