Isabelle (asystentka sprawdzająca)
Oryginalni autorzy | Lawrence'a Paulsona |
---|---|
Deweloperzy | Uniwersytet Cambridge i Uniwersytet Techniczny w Monachium i in. |
Pierwsze wydanie | 1986 |
Wersja stabilna | Isabelle2021 / luty 2021
|
Napisane w | Standardowy ML i Scala |
System operacyjny | Linux , Windows , macOS |
Typ | Matematyka |
Licencja | Licencja BSD |
Strona internetowa |
Zautomatyzowany dowód twierdzeń Isabelle to dowód twierdzeń logiki wyższego rzędu (HOL) , napisany w Standard ML i Scala . Jako w stylu LCF , opiera się na małym rdzeniu logicznym (jądrze) w celu zwiększenia wiarygodności dowodów bez wymagania — ale wspierania — wyraźnych obiektów dowodowych.
Isabelle jest dostępna w elastycznym środowisku systemowym umożliwiającym logicznie bezpieczne rozszerzenia, które obejmują zarówno teorie, jak i implementacje do generowania kodu, dokumentacji i specyficznego wsparcia dla różnych metod formalnych . Można go postrzegać jako IDE dla metod formalnych. W ostatnich latach w Isabelle Archive of Formal Proofs ( Izabela AFP ) zgromadzono znaczną liczbę teorii i rozszerzeń systemu.
Isabelle została nazwana przez Lawrence'a Paulsona na cześć córki Gérarda Hueta .
Program do sprawdzania twierdzeń Isabelle jest wolnym oprogramowaniem , wydanym na poprawionej licencji BSD .
Cechy
Isabelle jest ogólna: zapewnia meta-logikę (teorię słabych typów ), która jest używana do kodowania logiki obiektowej, takiej jak logika pierwszego rzędu (FOL), logika wyższego rzędu (HOL) lub teoria mnogości Zermelo-Fraenkla (ZFC). Najpowszechniej używaną logiką obiektową jest Isabelle/HOL, chociaż w Isabelle/ZF dokonano znaczących zmian w teorii mnogości. Główną metodą dowodu Isabelle jest wersja rozdzielczości wyższego rzędu, oparta na unifikacji wyższego rzędu .
Chociaż Isabelle jest interaktywna, oferuje wydajne narzędzia do automatycznego wnioskowania, takie jak silnik przepisywania terminów i narzędzie do sprawdzania obrazów , różne procedury decyzyjne oraz, za pośrednictwem interfejsu automatyzacji dowodu Sledgehammer , zewnętrzne moduły do rozwiązywania teorii spełnialności (SMT) (w tym CVC4 ) i rozwiązania - opartych na zautomatyzowanych dowodach twierdzeń (ATP), w tym E i SPASS ( Metis metoda dowodu rekonstruuje dowody rozdzielczości generowane przez te ATP). Zawiera również dwa modeli ( generatory kontrprzykładów ): Nitpick i Nunchaku .
Isabelle oferuje lokalizacje , które są modułami tworzącymi strukturę dużych dowodów. Ustawienia regionalne ustalają typy, stałe i założenia w określonym zakresie, dzięki czemu nie trzeba ich powtarzać dla każdego lematu .
Isar („ zrozumiałe, półautomatyczne rozumowanie ”) jest formalnym językiem dowodowym Isabelle. Jest inspirowany systemem Mizar .
Przykładowy dowód
Isabelle umożliwia pisanie dowodów w dwóch różnych stylach, proceduralnym i deklaratywnym . Dowody proceduralne określają szereg taktyk ( funkcje/procedury dowodzenia twierdzeń ), które należy zastosować; chociaż odzwierciedlają procedurę, którą ludzki matematyk może zastosować do udowodnienia wyniku, są one zazwyczaj trudne do odczytania, ponieważ nie opisują wyniku tych kroków. Dowody deklaratywne (obsługiwane przez język dowodowy Isabelle, Isar), z drugiej strony, określają rzeczywiste operacje matematyczne, które należy wykonać, i dlatego są łatwiejsze do odczytania i sprawdzenia przez ludzi.
Styl proceduralny został wycofany w ostatnich wersjach Isabelle. [ potrzebne źródło ]
Na przykład deklaratywny dowód przez sprzeczność w Isar, że pierwiastek kwadratowy z dwóch nie jest racjonalny, można zapisać w następujący sposób.
twierdzenie sqrt2_not_rational: "sqrt 2 ∉ ℚ" dowód niech ?x = "sqrt 2" załóżmy "?x ∈ ℚ" wtedy otrzymamy mn :: nat gdzie sqrt_rat: "¦?x¦ = m / n" i najniższe_wyrażenia: "względnie pierwsze m n " przez (rule Rats_abs_nat_div_natE) stąd "m^2 = ?x^2 * n^2" przez (auto simp add: power2_eq_square) stąd eq: "m^2 = 2 * n^2" używając of_nat_eq_iff power2_eq_square przez fastforce stąd "2 dvd m^2" przez simp stąd "2 dvd m" przez simp mieć dowód "2 dvd n" - z ‹2 dvd m› uzyskać k gdzie "m = 2 * k" .. z eq mieć "2 * n^2 = 2^2 * k^2" przez simp stąd "2 dvd n^2" przez simp tak więc „2 dvd n” przez simp qed z ‹2 dvd m› have „2 dvd gcd m n” przez (reguła gcd_greatest) z najniższymi terminami mają „2 dvd 1” przez simp , stąd False przy użyciu nieparzystego_jeden przez blast qed
Aplikacje
Isabelle została wykorzystana do wspomagania formalnych metod specyfikacji, rozwoju i weryfikacji systemów oprogramowania i sprzętu.
Isabelle została wykorzystana do sformalizowania wielu twierdzeń z matematyki i informatyki , takich jak twierdzenie Gödla o kompletności , twierdzenie Gödla o spójności aksjomatu wyboru , twierdzenie o liczbach pierwszych , poprawność protokołów bezpieczeństwa i właściwości semantyki języka programowania . Jak wspomniano, wiele dowodów formalnych jest przechowywanych w Archiwum Dowodów Formalnych, które zawiera (stan na 2019 r.) Co najmniej 500 artykułów z łącznie ponad 2 milionami linii dowodów.
- W 2009 roku projekt L4.verified w NICTA stworzył pierwszy formalny dowód poprawności działania jądra systemu operacyjnego ogólnego przeznaczenia: mikrojądro seL4 (bezpieczne wbudowane L4 ) . Dowód jest konstruowany i sprawdzany w Isabelle/HOL i obejmuje ponad 200 000 linii skryptu dowodowego do weryfikacji 7500 linii C. Weryfikacja obejmuje kod, projekt i implementację, a główne twierdzenie stwierdza, że kod C poprawnie implementuje formalną specyfikację jądro. Dowód ujawnił 144 błędy we wczesnej wersji kodu C jądra seL4 i około 150 problemów w każdym projekcie i specyfikacji.
- Definicja języka programowania Lightweight Java została sprawdzona w Isabelle.
Larry Paulson prowadzi listę projektów badawczych wykorzystujących Isabelle.
Alternatywy
Kilka języków i systemów zapewnia podobną funkcjonalność:
- Agda , napisany w Haskell
- Coq , napisany w OCaml
- Lean , napisany w C++
- LEGO , napisane w standardowym języku ML stanu New Jersey
- System Mizar , napisany we Free Pascalu
- Metamath , napisany w ANSI C
- Prover9 , napisany w C , z graficznym interfejsem użytkownika napisanym w Pythonie
- Dwanaście , napisany w standardowym ML
Notatki
Dalsza lektura
- Lawrence C. Paulson , „The Foundation of a Generic Theorem Prover” , Journal of Automated Reasoning , tom 5, wydanie 3 (wrzesień 1989), strony: 363–397, ISSN 0168-7433 .
- Lawrence C. Paulson i Tobias Nipkow , „Samouczek Isabelle i podręcznik użytkownika” , 1990.
- MA Ozols, KA Eastaughffe i A. Cant, „DOVE: A Tool for Design Oriented Verification and Evaluation” , Proceedings of AMAST 97 , M. Johnson, redaktor, Sydney, Australia. Notatki z wykładów z informatyki (LNCS) Cz. 1349, wydanie Springera, 1997.
- Tobias Nipkow, Lawrence C. Paulson, Markus Wenzel, „Isabelle/HOL – Asystent sprawdzania logiki wyższego rzędu” , 2020.