Isabelle

Isabelle
Type Sætningsbevis
Udvikler Paulson
Skrevet i Poly/ML ; Scala
Operativ system GNU/Linux [1] , Microsoft Windows [1] og macOS [1]
Første udgave 1. maj 1989
Hardware platform på tværs af platforme
nyeste version Isabelle2021-1 (december 2021 ) ( 2021-12 )
Stat aktiv
Licens BSD
Internet side isabelle.in.tum.de

Isabelle er et interaktivt automatisk korrekturværktøj , der bruger logik af højere  orden . Det er implementeret i samme stil som et af de første sådanne værktøjer - LCF og blev, ligesom LCF, oprindelig skrevet udelukkende i Standard ML [2] . Systemet indeholder en kompakt logisk kerne, som kan accepteres som sand uden yderligere beviser (selvom dette ikke er nødvendigt). Som et generelt værktøj implementerer det en metalogik (svag type teori ), der bruges til at implementere flere varianter af Isabelle objektlogik, såsom første-ordens logik (FOL), højere-ordens logik (HOL) eller Zermelo-Fraenkel mængdeteori (ZFC). Den mest almindeligt anvendte variant af objektlogik er Isabelle / HOL, ligesom ret seriøse udviklinger inden for mængdeteori blev udført ved hjælp af Isabelle / ZF.

Den vigtigste metode til at implementere Isabelles bevis er en højere-ordens opløsningsvariant baseret på en højere ordens foreningsalgoritme . Da Isabelle er et interaktivt system, inkluderer Isabelle også kraftfulde automatiske ræsonnementværktøjer såsom en termomskrivningsmotor , en analytisk tabelløser , eksterne feasibility-løsere til problemer i forskellige teorier forbundet via en specialiseret Sledgehammer ekstern plug-in-grænseflade, samt ekstern automatisk teorembevis værktøjer. , såsom E og SPASS . Isabelle er blevet brugt til at formalisere adskillige sætninger fra matematik og datalogi, såsom Gödels fuldstændighedssætning , Gödels bevis på uafhængigheden af ​​valgaksiomet , sætningen om fordelingen af ​​primtal . Isabelle er også blevet brugt til at bevise den formelle rigtighed af kryptografiske protokoller og egenskaberne ved programmeringssprogs semantik.

Mange af de formelle beviser opnået ved hjælp af Isabelle er offentligt tilgængelige og gemmes i Archive of Formal Proofs , som indeholder (fra 2019) mindst 500 artikler, inklusive mere end 2 millioner linjer kode [3] .

Distribueres frit under BSD-licensen . Forfatter - Lawrence Paulson ( eng.  Lawrence Paulson ), navnet er givet til ære for Gerard Huets datter [4] .

Et eksempel på bevis

Systemet giver dig mulighed for at skrive korrektur i to stilarter - proceduremæssige og deklarative . Den proceduremæssige bevisstil specificerer rækkefølgen af ​​anvendelse af taktik og bevisprocedurer. Dette svarer til den stil, som almindelige matematikere normalt arbejder i, men sådanne beviser er normalt ret svære at forstå, da det resultat, der planlægges opnået som følge af et sådant bevis, ikke er indlysende, når man læser dem.

Deklarative beviser implementeret i et særligt indbygget korrektursprog - Isar - specificerer de specifikke matematiske procedurer, der skal anvendes. De er nemmere at læse og kontrollere af folk.

I nyere versioner af Isabelle er den proceduremæssige bevisstil blevet forældet. Arkivet for formelle beviser anbefaler også, at beviser præsenteres i en deklarativ stil [5] .

Et eksempel på et deklarativt bevis på det modsatte, skrevet i Isar (beviset bekræfter irrationaliteten af ​​kvadratroden af ​​to):

sætning sqrt2_not_rational: "sqrt (real 2) ∉ ℚ" bevis lad ?x = "sqrt (real 2)" antag "?x ∈ ℚ" mn :: nat hvor sqrt_rat: "¦?x¦ = real m / real n" og lowest_terms: "coprime m n" af (regel Rats_abs_nat_div_natE) derfor "real (m^2) = ?x^2 * real (n^2)" af (auto simp add: power2_eq_square) deraf eq: "m^2 = 2 * n^2" ved hjælp af of_nat_eq_iff power2_eq_square af fastforce derfor "2 dvd m^2" af simp derfor "2 dvd m" af simp har "2 dvd n" -bevis - fra ‹2 dvd m› opnå k hvor "m = 2 * k" .. med eq har "2 * n^2 = 2^2 * k^2" af simp derfor "2 dvd n^2" af simp således "2 dvd n" af simp qed med ‹2 dvd m › har "2 dvd gcd m n" af (reglen gcd_greatest) med laveste_termer har "2 dvd 1" af simp således False ved hjælp af odd_one af blast qed

Ansøgninger

Isabelle er blevet brugt mange gange til at implementere formelle metoder i specifikation, udvikling og verifikation af software- og hardwaresystemer.

I 2009 leverede udviklerne af L4.verified- projektet , som blev implementeret i det australske forskningscenter NICTA , for første gang et formelt bevis på den funktionelle korrekthed af den generelle operativsystemkerne, nemlig seL4-mikrokernen (en sikker indbygget version af L4, der kan arbejde i hård realtid) [6] . Beviset blev bygget og verificeret af Isabelle/HOL; den indeholder over 200 tusind linjer med verifikationsscript til at kontrollere 7500 linjer C-kode. Verifikation dækker over kode, design og implementering[ angiv ] . Som en del af beviset blev det vist, at C-koden implementerer den formelle kernespecifikation korrekt. Beviset afslørede 144 fejl i den tidlige seL4 kerne C-kode og omkring 150 problemer hver i arkitekturen og specifikationen af ​​selve kernen.

For letvægts Java -programmeringssproget ved brug af Isabelle blev der opnået et bevis for typesikkerhed [7] .

En liste over forskningsprojekter [8] , der bruger Isabelle, vedligeholdes af forfatteren af ​​Paulson-systemet.

Alternativer

Der er en række automatiske sætningsbevisende systemer, der ligner Isabelle i egenskaber , herunder:

Noter

  1. 1 2 3 https://isabelle.in.tum.de/
  2. Nogle af de nye Isabelle-komponenter blev implementeret i Scala
  3. Eberl, Manuel; Klein, Gerwin; Nipkow, Tobias; Paulson, Larry; Thiemann, René Arkiv for formelle beviser . Hentet 22. oktober 2019. Arkiveret fra originalen 19. december 2020.
  4. Gordon, Mike 1.2 Historie . Isabelle og H.O.L. Cambridge AR Research (The Automated Reasoning Group) (16. november 1994). Hentet 28. april 2016. Arkiveret fra originalen 5. marts 2017.
  5. Arkiv over formelle beviser . Hentet 12. april 2020. Arkiveret fra originalen 19. december 2020.
  6. Klein, Gerwin; Elphinstone, Kevin; Heiser, Gernot; Andronick, juni; Pik, David; Derrin, Philip; Elkaduwe, Dhammika; Engelhardt, Kai; Kolanski, Rafal; Norrish, Michael; Sewell, Thomas; Berøring, Harvey; Winwood, Simon (oktober 2009). "seL4: Formel verifikation af en OS-kerne" (PDF) . 22. ACM-symposium om operativsystemprincipper . Big Sky, Montana, USA. pp. 207-200. Arkiveret fra originalen (PDF) 2011-07-28 . Hentet 2020-04-12 . Forældet parameter brugt |deadlink=( hjælp )
  7. afp.sourceforge.net . Hentet 12. april 2020. Arkiveret fra originalen 19. marts 2016.
  8. Projekter - Isabelle Community Wiki . Hentet 12. april 2020. Arkiveret fra originalen 12. april 2020.

Litteratur

Links