Formal verification of structured data generation programs
Vérification formelle de programmes de génération de données structurées
Résumé
The general problem of proving properties of imperative programs is undecidable. Some sub-problems -- restricting the languages of programs and properties -- are known to be decidable. In practice, thanks to heuristics, program proving tools sometimes automate proofs for programs and properties living outside of the theoretical framework of known decidability results. We illustrate this fact by building a catalog of proofs, for similar programs and properties of increasing complexity. Most of these programs are combinatorial map generators.
Thus, this work contributes to the research fields of enumerative combinatorics and software engineering. We distribute a C library of bounded exhaustive generators of structured arrays, formally specified in ACSL and verified with the WP plugin of the Frama-C analysis platform. We also propose a testing-based methodology to assist interactive proof in Coq, an original formal study of maps, and new results in enumerative combinatorics.
Le problème général de la preuve de propriétés de programmes impératifs est indécidable. Pour des langages de programmation et de propriétés plus restrictifs, des sous-problèmes décidables sont connus. En pratique, grâce à des heuristiques, les outils de preuve de programmes automatisent des preuves qui sortent du cadre théorique de ces sous-problèmes décidables connus. Nous illustrons cette réussite pratique en construisant un catalogue de preuves, pour des programmes et des propriétés de nature similaire et de complexité croissante. Ces programmes sont principalement des générateurs de cartes combinatoires.
Ainsi, ce travail contribue aux domaines de recherche de la combinatoire énumérative et du génie logiciel. Nous distribuons une bibliothèque C de générateurs exhaustifs bornés de tableaux structurés, formellement spécifiés en ACSL et vérifiés avec le greffon WP de la plateforme d'analyse Frama-C. Nous proposons également une méthodologie de test qui facilite la preuve interactive en Coq, une étude formelle des cartes originale, et de nouveaux résultats en combinatoire énumérative.
Loading...