Your proof fails? Testing helps to find the reason

Abstract : Applying deductive verification to formally prove that a program respects its formal specification is a very complex and timeconsuming task due in particular to the lack of feedback in case of proof failures. Along with a non-compliance between the code and its specification (due to an error in at least one of them), possible reasons of a proof failure include a missing or too weak specification for a called function or a loop, and lack of time or simply incapacity of the prover to finish a particular proof. This work proposes a complete methodology where test generation helps to identify the reason of a proof failure and to exhibit a counterexample clearly illustrating the issue. We define the categories of proof failures, introduce two subcategories of contract weaknesses (single and global ones), and examine their properties. We describe how to transform a formally specified C program into C code suitable for testing, and illustrate the benefits of the method on comprehensive examples. The method has been implemented in StaDy, a plugin of the software analysis platform Frama-C. Initial experiments show that detecting non-compliances and contract weaknesses allows to precisely diagnose most proof failures.
Document type :
Journal articles
Complete list of metadatas

https://hal-cea.archives-ouvertes.fr/cea-01808892
Contributor : Léna Le Roy <>
Submitted on : Wednesday, June 6, 2018 - 11:13:18 AM
Last modification on : Friday, July 26, 2019 - 4:26:20 PM

Links full text

Identifiers

Citation

G. Petiot, N. Kosmatov, B. Botella, A. Giorgetti, J. Julliand. Your proof fails? Testing helps to find the reason. Lecture Notes in Computer Science, Springer, 2016, 9762, pp.130-150. ⟨10.1007/978-3-319-41135-4_8⟩. ⟨cea-01808892⟩

Share

Metrics

Record views

55