Sandrine Blazy

Learn More
This article presents the formal verification, using the Coq proof assistant, of a memory model for low-level imperative languages such as C and compiler intermediate languages. Beyond giving semantics to pointer-based programs, this model supports reasoning over transformations of such programs. We show how the properties of the memory model are used to(More)
This article presents the formal semantics of a large subset of the C language called Clight. Clight includes pointer arithmetic, struct and union types, C loops and structured switch statements. Clight is the source language of the CompCert verified compiler. The formal semantics of Clight is a big-step operational semantics that observes both terminating(More)
Cminor is a mid-level imperative programming language; there are proved-correct optimizing compilers from C to Cminor and from Cminor to machine language. We have redesigned Cminor so that it is suitable for Hoare Logic reasoning and we have designed a Separation Logic for Cminor. In this paper, we give a small-step semantics (instead of the big-step of the(More)
A memory model is an important component of the formal semantics of imperative programming languages: it speci es the behavior of operations over memory states, such as reads and writes. The formally veri ed CompCert C compiler uses a sophisticated memory model that is shared between the semantics of its source language (the CompCert subset of C) and(More)
This paper reports on the design and soundness proof, using the Coq proof assistant, of Verasco, a static analyzer based on abstract interpretation for most of the ISO C 1999 language (excluding recursion and dynamic allocation). Verasco establishes the absence of run-time errors in the analyzed programs. It enjoys a modular architecture that supports the(More)
Real life C programs are often written using C dialects which, for the ISO C standard, have undefined behaviours. In particular, according to the ISO C standard, reading an uninitialised variable has an undefined behaviour and low-level pointer operations are implementation defined. We propose a formal semantics which gives a well-defined meaning to those(More)
Program comprehension is the most tedious and time consuming task of software maintenance, an important phase of the software life cycle [A.Frazer 1992]. This is particularly true while maintaining scientific application programs that have been written in Fortran for decades and that are still vital in various domains even though more modern languages are(More)
Static analyzers based on abstract interpretation are complex pieces of software implementing delicate algorithms. Even if static analysis techniques are well understood, their implementation on real languages is still error-prone. This paper presents a formal verification using the Coq proof assistant: a formalization of a value analysis (based on abstract(More)
This paper presents a formal veri cation with the Coq proof assistant of a memory model for C -like imperative languages. This model de nes the memory layout and the operations that manage the memory. The model has been speci ed at two levels of abstraction and implemented as part of an ongoing certi cation in Coq of a moderatelyoptimising C compiler. Many(More)