Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Virgile Prevosto is active.

Publication


Featured researches published by Virgile Prevosto.


Formal Aspects of Computing | 2015

Frama-C: A software analysis perspective

Florent Kirchner; Nikolai Kosmatov; Virgile Prevosto; Julien Signoles; Boris Yakobowski

Frama-C is a source code analysis platform that aims at conducting verification of industrial-size C programs. It provides its users with a collection of plug-ins that perform static analysis, deductive verification, and testing, for safety- and security-critical software. Collaborative verification across cooperating plug-ins is enabled by their integration on top of a shared kernel and datastructures, and their compliance to a common specification language. This foundational article presents a consolidated view of the platform, its main and composite analyses, and some of its industrial achievements.


international conference on software engineering | 2012

Frama-C: a software analysis perspective

Pascal Cuoq; Florent Kirchner; Nikolai Kosmatov; Virgile Prevosto; Julien Signoles; Boris Yakobowski

Frama-C is a source code analysis platform that aims at conducting verification of industrial-size C programs. It provides its users with a collection of plug-ins that perform static analysis, deductive verification, and testing, for safety- and security-critical software. Collaborative verification across cooperating plug-ins is enabled by their integration on top of a shared kernel and datastructures, and their compliance to a common specification language. This foundational article presents a consolidated view of the platform, its main and composite analyses, and some of its industrial achievements.


nasa formal methods | 2012

Testing static analyzers with randomly generated programs

Pascal Cuoq; Benjamin Monate; Anne Pacalet; Virgile Prevosto; John Regehr; Boris Yakobowski; Xuejun Yang

Static analyzers should be correct. We used the random C-program generator Csmith, initially intended to test C compilers, to test parts of the Frama-C static analysis platform. Although Frama-C was already relatively mature at that point, fifty bugs were found and fixed during the process, in the front-end (AST elaboration and type-checking) and in the value analysis, constant propagation and slicing plug-ins. Several bugs were also found in Csmith, even though it had been extensively tested and had been used to find numerous bugs in compilers.


international conference on functional programming | 2009

Experience report: OCaml for an industrial-strength static analysis framework

Pascal Cuoq; Julien Signoles; Patrick Baudin; Richard Bonichon; Géraud Canet; Loı̈c Correnson; Benjamin Monate; Virgile Prevosto; Armand Puccetti

This experience report describes the choice of OCaml as the implementation language for Frama-C, a framework for the static analysis of C programs. OCaml became the implementation language for Frama-C because it is expressive. Most of the reasons listed in the remaining of this article are secondary reasons, features which are not specific to OCaml (modularity, availability of a C parser, control over the use of resources...) but could have prevented the use of OCaml for this project if they had been missing.


International Journal on Software Tools for Technology Transfer | 2011

Functional dependencies of C functions via weakest pre-conditions

Pascal Cuoq; Benjamin Monate; Anne Pacalet; Virgile Prevosto

We present functional dependencies, a convenient, formal, but high-level, specification format for a piece of procedural software (function). Functional dependencies specify the set of memory locations, which may be modified by the function, and for each modified location, the set of memory locations that influence its final value. Verifying that a function respects pre-defined functional dependencies can be tricky: the embedded world uses C and Ada, which have arrays and pointers. Existing systems we know of that manipulate functional dependencies, Caveat and SPARK, are restricted to pointer-free subsets of these languages. This article deals with the functional dependencies in a programming language with full aliasing. We show how to use a weakest pre-condition calculus to generate a verification condition for pre-existing functional dependencies requirements. This verification condition can then be checked using automated theorem provers or proof assistants. With our approach, it is possible to verify the specification as it was written beforehand. We assume little about the implementation of the verification condition generator itself. Our study takes place inside the C analysis framework Frama-C, where an experimental implementation of the technique described here has been implemented on top of the WP plug-in in the development version of the tool.


international conference on software testing verification and validation | 2017

Taming Coverage Criteria Heterogeneity with LTest

Michael Marcozzi; Sébastien Bardin; Mickaël Delahaye; Nikolai Kosmatov; Virgile Prevosto

Automated white-box testing is a major issue in software engineering. In previous work, we introduced LTest, a generic and integrated toolkit for automated white-box testing of C programs. LTest supports a broad class of coverage criteria in a unified way (through the label specification mechanism) and covers most major parts of the testing process – including coverage measurement, test generation and detection of infeasible test objectives. However, the original version of LTest was unable to handle several major classes of coverage criteria, such as MCDC or dataflow criteria. Moreover, its practical applicability remained barely assessed. In this work, we present a significantly extended version of LTest that supports almost all existing testing criteria, including MCDC and some software security properties, through a native support of recently proposed hyperlabels. We also provide a more realistic view on the practical applicability of the extended tool, with experiments assessing its efficiency and scalability on real-world programs.


tests and proofs | 2013

A Lesson on Proof of Programs with Frama-C. Invited Tutorial Paper

Nikolai Kosmatov; Virgile Prevosto; Julien Signoles

To help formal verification tools to make their way into industry, they ought to be more widely used in software engineering classes. This tutorial paper serves this purpose and provides a lesson on formal specification and proof of programs with Frama-C, an open-source platform dedicated to analysis of C programs, and acsl, a specification language for C.


international conference on software engineering | 2018

Time to clean your test objectives

Michaël Marcozzi; Sébastien Bardin; Nikolai Kosmatov; Mike Papadakis; Virgile Prevosto; Loı̈c Correnson

Testing is the primary approach for detecting software defects. A major challenge faced by testers lies in crafting efficient test suites, able to detect a maximum number of bugs with manageable effort. To do so, they rely on coverage criteria, which define some precise test objectives to be covered. However, many common criteria specify a significant number of objectives that occur to be infeasible or redundant in practice, like covering dead code or semantically equal mutants. Such objectives are well-known to be harmful to the design of test suites, impacting both the efficiency and precision of the testers effort. This work introduces a sound and scalable technique to prune out a significant part of the infeasible and redundant objectives produced by a panel of white-box criteria. In a nutshell, we reduce this task to proving the validity of logical assertions in the code under test. The technique is implemented in a tool that relies on weakest-precondition calculus and SMT solving for proving the assertions. The tool is built on top of the Frama-C verification platform, which we carefully tune for our specific scalability needs. The experiments reveal that the pruning capabilities of the tool can reduce the number of targeted test objectives in a program by up to 27% and scale to real programs of 200K lines, making it possible to automate a painstaking part of their current testing process.


international conference on software testing verification and validation | 2017

Generic and Effective Specification of Structural Test Objectives

Michaël Marcozzi; Mickaël Delahaye; Sébastien Bardin; Nikolai Kosmatov; Virgile Prevosto

A large amount of research has been carried out to automate white-box testing. While a wide range of different and sometimes heterogeneous code-coverage criteria have been proposed, there exists no generic formalism to describe them all, and available test automation tools usually support only a small subset of them. We introduce a new specification language, called HTOL (Hyperlabel Test Objectives Language), providing a powerful generic mechanism to define a wide range of test objectives. HTOL comes with a formal semantics, and can encode all standard criteria but full mutations. Besides specification, HTOL is appealing in the context of test automation as it allows handling criteria in a unified way.


tools and algorithms for construction and analysis of systems | 2017

RPP: Automatic Proof of Relational Properties by Self-composition

Lionel Blatter; Nikolai Kosmatov; Pascale Le Gall; Virgile Prevosto

Self-composition provides a powerful theoretical approach to prove relational properties, i.e. properties relating several program executions, that has been applied to compare two runs of one or similar programs (in secure dataflow properties, code transformations, etc.). This tool demo paper presents RPP, an original implementation of self-composition for specification and verification of relational properties in C programs in the Frama-C platform. We consider a very general notion of relational properties invoking any finite number of function calls of possibly dissimilar functions with possible nested calls. The new tool allows the user to specify a relational property, to prove it in a completely automatic way using classic deductive verification, and to use it as a hypothesis in the proof of other properties that may rely on it.

Collaboration


Dive into the Virgile Prevosto's collaboration.

Top Co-Authors

Avatar

Nikolai Kosmatov

University of Franche-Comté

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Lionel Blatter

Université Paris-Saclay

View shared research outputs
Top Co-Authors

Avatar

Sébastien Bardin

Centre national de la recherche scientifique

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Guillaume Petiot

University of Franche-Comté

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Sébastien Bardin

Centre national de la recherche scientifique

View shared research outputs
Researchain Logo
Decentralizing Knowledge