Skip to Main content Skip to Navigation

Preuves par raffinement de programmes avec pointeurs

Asma Tafat 1, 2 
Abstract : The purpose of this thesis is to specify and prove programs with pointers, such as C programs, using refinement techniques. The proposed approach allows a compromise between the complexe methods that exist in the literature and what is used in industry, reconciling lightness annotations and restrictions on the alias. We define, firstly, a language study, based on the C language, in which the only type of mutable data allowed is the type of structures, which can be accessed only through pointers. In order to structure our programs, we bring our language with a module notion and concepts issue from a refinement theory such as abstract variables that we formalize by model fields and gluing invariants. This allows us to write programs structured by components. Introducing invariants in our language raises issues related to aliasing. Indeed, in presence of alias, we might not be able to guarantee the validity of the invariant data structure. We forbid then the aliasing in our language. To control memory access, we define a type system based on the concept of regions. This contribution is based on the theory and refinement. It aims to make programs as modular as possible and proofs as automatic as possible. We define on this language, a mechanism for generation of proof obligations by proposing a weakest precondition calculus incorporating refinement. Next we prove the correction of this proof obligations generation mechnaism by an original method based on the concept of blocking semantic, which is similar to a proof of type soundness, and consists therefore, to proove the preservation and the progress of the defined calculus. Secondly, we extend our language by, partially, lifting the restrictions related to aliasing. We allow, in particular, sharing when no invariant is associated to the referenced data structure. In addition, we introduce the type of arrays, global variables, and assignment that are not part of the core language. For each of the extensions mentioned above, we extend the definition and correctness proof of the weakest precondition calculus accordingly. Finally, we propose an implementation of this approach as a Frama-C plugin(http :// We experimente our implantation on examples of modules implementing complex data structures, especially the challenges from the challenge VACID0 (http ://vacid. /), namely sparse srrays and binary heaps.
Document type :
Complete list of metadata

Cited literature [84 references]  Display  Hide  Download
Contributor : ABES STAR :  Contact
Submitted on : Friday, October 18, 2013 - 1:33:05 PM
Last modification on : Saturday, June 25, 2022 - 9:08:52 PM
Long-term archiving on: : Sunday, January 19, 2014 - 4:27:03 AM


Version validated by the jury (STAR)


  • HAL Id : tel-00874679, version 1



Asma Tafat. Preuves par raffinement de programmes avec pointeurs. Autre [cs.OH]. Université Paris Sud - Paris XI, 2013. Français. ⟨NNT : 2013PA112141⟩. ⟨tel-00874679⟩



Record views


Files downloads