Înțelegerea dovezilor în verificarea formală
Proverurile sunt un set de instrumente și tehnici utilizate în domeniul verificării formale pentru a dovedi corectitudinea sistemelor software și hardware. Demonstratorii pot fi utilizați pentru a verifica proprietăți precum siguranța, vitalitatea și corectitudinea unui sistem și pot fi aplicați la diferite niveluri de abstractizare, de la codul sursă până la designul de nivel înalt.
Există mai multe tipuri de dovezitori, inclusiv:
1. Verificatori de model: acestea sunt instrumente automate care folosesc algoritmi de verificare a modelelor pentru a verifica proprietățile unui sistem în raport cu o formulă logică temporală. Exemple de verificatoare de model includ Spin, NuSMV și dReach.
2. Asistenți pentru dovezi: acestea sunt instrumente care oferă un cadru pentru construirea și verificarea demonstrațiilor matematice. Exemple de asistenți de dovezi includ Coq, Isabelle și HOL Light.
3. Sisteme de tip: Acestea sunt sisteme care atribuie tipuri expresiilor de program pe baza structurii și comportamentului lor. Sistemele de tip pot fi folosite pentru a demonstra corectitudinea programelor prin verificarea faptului că acestea satisfac anumite constrângeri de tip. Exemple de sisteme de tip includ calculul lambda tip simplu și sistemul de tip Hindley-Milner.
4. Instrumente de verificare bazate pe logică: acestea sunt instrumente care utilizează tehnici de raționament logic pentru a verifica proprietățile unui sistem. Exemple de instrumente de verificare bazate pe logică includ sistemul KeYlee și sistemul Vampire.
5. Instrumente de verificare bazate pe execuție simbolică: acestea sunt instrumente care utilizează tehnici de execuție simbolică pentru a explora posibilele căi de execuție ale unui program și pentru a verifica dacă acestea satisfac anumite proprietăți. Exemple de instrumente de verificare bazate pe execuție simbolică includ instrumentul SymEX și instrumentul Soot.
Provers pot fi utilizați într-o varietate de aplicații, inclusiv:
1. Verificarea formală a sistemelor software și hardware: Proverele pot fi utilizate pentru a demonstra corectitudinea sistemelor software și hardware în raport cu proprietăți sau cerințe specifice.
2. Asistenți de demonstrare pentru demonstrații matematice: Demonstratorii pot fi folosiți ca asistenți de demonstrare pentru construirea și verificarea demonstrațiilor matematice în domenii precum algebra, geometria și logica.
3. Verificarea limbajelor de programare: Prover-urile pot fi utilizate pentru a verifica corectitudinea limbajelor de programare în raport cu specificațiile lor, inclusiv sistemele de tip, semantica operațională și alte definiții formale.
4. Verificarea formală a protocoalelor de securitate: Prover-urile pot fi utilizate pentru a verifica corectitudinea protocoalelor de securitate în raport cu proprietăți sau cerințe specifice, cum ar fi autentificarea, confidențialitatea și integritatea.
5. Verificarea formală a proprietăților la nivel de sistem: Prover-urile pot fi utilizate pentru a verifica proprietățile la nivel de sistem, cum ar fi siguranța, viabilitate și corectitudinea unui sistem.



