Thèse soutenue

Nouvelles techniques pour l'instanciation et la production des preuves dans SMT

FR  |  
EN
Auteur / Autrice : Haniel Barbosa
Direction : Stephan MerzDavid DéharbePascal Fontaine
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 05/09/2017
Etablissement(s) : Université de Lorraine en cotutelle avec Universidade federal do Rio Grande do Norte (Natal, Brésil)
Ecole(s) doctorale(s) : École doctorale IAEM Lorraine - Informatique, Automatique, Électronique - Électrotechnique, Mathématiques de Lorraine
Partenaire(s) de recherche : Laboratoire : Laboratoire lorrain de recherche en informatique et ses applications
Jury : Président / Présidente : Catherine Dubois
Examinateurs / Examinatrices : Stephan Merz, David Déharbe, Pascal Fontaine, Philipp Rümmer, Erika Ábrahám, Andrew J. Reynolds
Rapporteurs / Rapporteuses : Philipp Rümmer, Erika Ábrahám

Résumé

FR  |  
EN

Des nombreuses applications de méthodes formelles se fondent sur les solveurs SMT pour valider automatiquement les conditions à vérifier et fournissent des certificats de leurs résultats. Nous visons à la fois à améliorer l'efficacité des solveurs SMT et à accroître leur fiabilité. Notre première contribution est un cadre uniforme pour le raisonnement avec des formules quantifiées dans les solveurs SMT, dans lequel généralement diverses techniques d'instanciation sont utilisées. Nous montrons que les principales techniques d'instanciation peuvent être jetées dans ce cadre. Le cadre repose sur le problème de l'E-ground (dis)unification. Nous présentons une procédure de décision pour résoudre ce problème en pratique: Fermeture de congruence avec variables libres (CCFV}). Nous mesurons l'impact de CCFV dans les solveurs SMT veriT et CVC4. Nous montrons que nos implémentations présentent des améliorations par rapport aux approches à la fine pointe de la technologie. Notre deuxième contribution est un cadre pour le traitement des formules tout en produisant des preuves détaillées. Les principaux composants de notre cadre de production de preuve sont un algorithme de récurrence contextuelle générique et un ensemble extensible de règles d'inférence. Avec des structures de données appropriées, la génération des preuves ne crée que des frais généraux linéaires et les vérifications peuvent être vérifiées en temps linéaire. Nous avons également mis en œuvre l'approche en veriT. Cela nous a permis de simplifier considérablement la base du code tout en augmentant le nombre de problèmes pour lesquels des preuves détaillées peuvent être produites