Isabelle

Isabelle
Tip de Demonstrator de teoreme
Dezvoltator Paulson
Scris in Poly/ML ; Scala
Sistem de operare GNU/Linux [1] , Microsoft Windows [1] și macOS [1]
Prima editie 1 mai 1989
Platformă hardware multiplatformă
ultima versiune Isabelle2021-1 (decembrie 2021 ) ( 2021-12 )
Stat activ
Licență BSD
Site-ul web isabelle.in.tum.de

Isabelle este un instrument interactiv de demonstrare automată  care utilizează logica de ordin superior . Este implementat în același stil ca unul dintre primele astfel de instrumente - LCF și, la fel ca LCF, a fost inițial scris în întregime în Standard ML [2] . Sistemul conține un nucleu logic compact, care poate fi acceptat ca adevărat fără dovezi suplimentare (deși acest lucru nu este necesar). Ca instrument general, implementează o metalogică ( teoria tipului slab ) care este utilizată pentru a implementa mai multe variante ale logicii obiectelor Isabelle, cum ar fi logica de ordinul întâi (FOL), logica de ordin superior (HOL) sau teoria seturilor Zermelo-Fraenkel. (ZFC). Cea mai des folosită variantă a logicii obiectelor este Isabelle / HOL, precum și dezvoltări destul de serioase în domeniul teoriei mulțimilor au fost realizate folosind Isabelle / ZF.

Principala metodă de implementare a demonstrației lui Isabelle este o variantă de rezoluție de ordin superior bazată pe un algoritm de unificare de ordin superior . Fiind un sistem interactiv, Isabelle include, de asemenea, instrumente puternice de raționament automat, cum ar fi un motor de rescriere a termenilor , un solutor de tabel analitic , soluții externe de fezabilitate pentru probleme din diverse teorii conectate printr-o interfață plug-in externă specializată Sledgehammer, precum și demonstrarea automată externă a teoremei. instrumente. , cum ar fi E și SPASS . Isabelle a fost folosită pentru a formaliza numeroase teoreme din matematică și informatică, cum ar fi teorema de completitudine a lui Gödel, dovada lui Gödel a independenței axiomei de alegere , teorema privind distribuția numerelor prime . Isabelle a fost, de asemenea, folosită pentru a dovedi corectitudinea formală a protocoalelor criptografice și proprietățile semanticii limbajelor de programare.

Multe dintre dovezile formale obținute folosind Isabelle sunt disponibile public și sunt stocate în Arhiva de dovezi formale , care conține (din 2019) cel puțin 500 de articole, inclusiv mai mult de 2 milioane de linii de cod [3] .

Distribuit gratuit sub licența BSD . Autor - Lawrence Paulson ( ing.  Lawrence Paulson ), numele este dat în onoarea fiicei lui Gerard Huet [4] .

Un exemplu de dovadă

Sistemul vă permite să scrieți dovezi în două stiluri - procedural și declarativ . Stilul procedural al probei precizează succesiunea de aplicare a tacticilor și procedurilor de probă. Acest lucru corespunde stilului în care lucrează de obicei matematicienii obișnuiți, dar astfel de dovezi sunt de obicei destul de greu de înțeles, deoarece atunci când le citesc, rezultatul care este planificat să fie obținut ca urmare a unei astfel de dovezi nu este evident.

Demonstrațiile declarative implementate într-un limbaj special de dovezi încorporat - Isar - specifică procedurile matematice specifice care trebuie aplicate. Sunt mai ușor de citit și verificat de către oameni.

În versiunile recente ale lui Isabelle, stilul de probă procedurală a fost depreciat. Arhiva Probelor Formale recomandă, de asemenea, ca dovezile să fie prezentate în stil declarativ [5] .

Un exemplu de demonstrație declarativă a contrariului, scrisă în Isar (dovada confirmă iraționalitatea rădăcinii pătrate a lui doi):

teorema sqrt2_not_rational: "sqrt (real 2) ∉ ℚ" demonstrație fie ?x = "sqrt (real 2)" presupunem "?x ∈ ℚ" apoi obținem mn :: nat unde sqrt_rat: "¦?x¦ = real m / real n" și cei mai mici_termeni: "coprime m n" prin (regula Rats_abs_nat_div_natE) de unde "real (m^2) = ?x^2 * real (n^2)" prin (auto simp add: power2_eq_square) de aici eq: "m^2 = 2 * n^2" folosind of_nat_eq_iff power2_eq_square prin fastforce , prin urmare, "2 dvd m^2" prin simp , prin urmare, "2 dvd m" prin simp au dovada "2 dvd n" - din ‹2 dvd m› obțineți k unde "m = 2 * k" .. cu eq au "2 * n^2 = 2^2 * k^2" prin simp deci "2 dvd n^2" prin simp astfel "2 dvd n" prin simp qed cu ‹2 dvd m › au „2 dvd gcd m n” de (regula gcd_greatest) cu cei mai mici_terms au „2 dvd 1” de simp , astfel False folosind odd_one de blast qed qed

Aplicații

Isabelle a fost folosită de multe ori pentru a implementa metode formale în specificarea, dezvoltarea și verificarea sistemelor software și hardware.

În 2009, dezvoltatorii proiectului L4.verified , care a fost implementat la centrul de cercetare australian NICTA , au oferit pentru prima dată o dovadă formală a corectitudinii funcționale a nucleului sistemului de operare de uz general, și anume microkernel-ul seL4 (o versiune integrată sigură a L4 capabilă să lucreze în timp real) [ 6] . Dovada a fost construită și verificată de Isabelle/HOL; conține peste 200 de mii de linii de script de verificare pentru a verifica 7500 de linii de cod C. Verificarea acoperă codul, proiectarea și implementarea[ specificați ] . Ca parte a dovezii, sa demonstrat că codul C implementează corect specificația formală a nucleului. Dovada a scos la iveală 144 de erori în codul C al nucleului seL4 timpuriu și aproximativ 150 de probleme fiecare în arhitectura și specificațiile nucleului în sine.

Pentru limbajul de programare Lightweight Java folosind Isabelle, a fost obținută o dovadă a siguranței de tip [7] .

O listă de proiecte de cercetare [8] care utilizează Isabelle este menținută de autorul sistemului Paulson.

Alternative

Există o serie de sisteme automate de demonstrare a teoremelor similare ca capabilități cu Isabelle , inclusiv:

Note

  1. 1 2 3 https://isabelle.in.tum.de/
  2. Unele dintre noile componente Isabelle au fost implementate în Scala
  3. Eberl, Manuel; Klein, Gerwin; Nipkow, Tobias; Paulson, Larry; Thiemann, Arhiva René de dovezi formale . Preluat la 22 octombrie 2019. Arhivat din original la 19 decembrie 2020.
  4. Gordon, Mike 1.2 Istorie . Isabelle și H.O.L. Cambridge AR Research (The Automated Reasoning Group) (16 noiembrie 1994). Preluat la 28 aprilie 2016. Arhivat din original la 5 martie 2017.
  5. Arhiva dovezilor formale . Preluat la 12 aprilie 2020. Arhivat din original la 19 decembrie 2020.
  6. Klein, Gerwin; Elphinstone, Kevin; Heiser, Gernot; Andronic, iunie; Cocoș, David; Derrin, Filip; Elkaduwe, Dhammika; Engelhardt, Kai; Kolanski, Rafal; Norrish, Michael; Sewell, Thomas; Atinge, Harvey; Winwood, Simon (octombrie 2009). „seL4: Verificarea formală a unui nucleu OS” (PDF) . Al 22-lea Simpozion ACM privind principiile sistemului de operare . Big Sky, Montana, SUA. pp. 207-200. Arhivat din original (PDF) la 28.07.2011 . Preluat 2020-04-12 . Parametrul depreciat folosit |deadlink=( ajutor )
  7. afp.sourceforge.net . Preluat la 12 aprilie 2020. Arhivat din original la 19 martie 2016.
  8. Proiecte - Isabelle Community Wiki . Preluat la 12 aprilie 2020. Arhivat din original la 12 aprilie 2020.

Literatură

Link -uri