Skip to content
Snippets Groups Projects
Commit 5cd4eb27 authored by Allan Blanchard's avatar Allan Blanchard
Browse files

Deletes old documentation page and bind the new one

parent 7658fbef
No related branches found
No related tags found
1 merge request!11publis
---
layout: clean_page
title: Publications
---
This page is dedicated to publications related to Frama-C. It is not exhaustive,
but focuses on foundational papers for Frama-C and some of its plug-ins.
# Frama-C General
#### Manuals
- Loïc Correnson, Pascal Cuoq, Florent Kirchner, André Maroneze,
Virgile Prevosto, Armand Puccetti, Julien Signoles, and Boris Yakobowski.\
**Frama-C User Manual.**\
<http://frama-c.com/download/frama-c-user-manual.pdf>.\
*The manual introducing common features to all analyzers.*
- Julien Signoles, Thibaud Antignac, Loïc Correnson, Matthieu Lemerre,
and Virgile Prevosto.\
**Frama-C Plug-in Development Guide**.\
<http://frama-c.com/download/frama-c-plugin-development-guide.pdf>.\
*The manual for developing a Frama-C plug-in.*
- Patrick Baudin, Jean-Christophe Filliâtre, Claude Marché, Benjamin
Monate, Yannick Moy, and Virgile Prevosto.\
**ACSL: ANSI/ISO C Specification Language.**.\
<http://frama-c.com/download/acsl.pdf>.\
*The reference manual of ACSL, the specification language used by
Frama-C.*
#### Founding Articles
- Florent Kirchner, Nikolai Kosmatov, Virgile Prevosto, Julien Signoles,
and Boris Yakobowski.\
**Frama-C, A Software Analysis Perspective.**\
In Formal Aspects of Computing, vol. 27 issue 3, March 2015.\
<http://dx.doi.org/10.1007/s00165-014-0326-7>.\
Extended version of the following paper.
- Pascal Cuoq, Florent Kirchner, Nikolai Kosmatov, Virgile Prevosto,
Julien Signoles, and Boris Yakobowski.\
**Frama-C, A Software Analysis Perspective.**\
In proceedings of International Conference on Software Engineering
and Formal Methods 2012 (SEFM), October 2012.\
*This paper presents a synthetic view of Frama-C, its main and
composite analyses, and some of its industrial achievements.*
#### Articles about the Frama-C Kernel
- Julien Signoles.\
**Software Architecture of Code Analysis Frameworks Matters:
The Frama-C Example.**\
In Formal Integrated Development Environment (F-IDE), June 2015.\
<http://julien.signoles.free.fr/publis/2015_fide.pdf>\
*This papers presents the Frama-C architecture and discusses its design
choices.*
- Loïc Correnson, and Julien Signoles.\
**Combining Analyses for C Program Verification.**\
In proceedings of International Workshop on Formal Methods for
Industrial Critical Systems 2012 (FMICS), August 2012.\
<http://julien.signoles.free.fr/publis/2012_fmics.pdf>\
*This paper explains how Frama-C combines several partial results
coming from its plug-ins into a fully consolidated validity status
for each program property.*
- Pascal Cuoq, Damien Doligez, and Julien Signoles.\
**Lightweight Typed Customizable Unmarshaling.**\
In Workshop on ML, September 2011.\
<http://blog.frama-c.com/public/unmarshal.pdf>.\
*This short paper presents how Frama-C unmarshal its data.*
- Pascal Cuoq, Julien Signoles, Patrick Baudin, Richard Bonichon,
Géraud Canet, Loïc Correnson, Benjamin Monate, Virgile Prevosto, and
Armand Puccetti.\
**Experience Report: OCaml for an Industrial-Strength Static
Analysis Framework.**\
In International Conference of Functional Programming (ICFP),
September 2009.\
<http://julien.signoles.free.fr/publis/2009_icfp.pdf>\
*This experience report describes the choice of OCaml as the
implementation language for Frama-C.*
- Julien Signoles.\
**Comment un chameau peut-il écrire un journal ?**\
In Journées Francophones des Langages Applicatifs (JFLA), January 2014.
In French.\
*Presentation of the journalization mechanism of Frama-C.*
- Julien Signoles.\
**Une bibliothèque de typage dynamique en OCaml.**\
In Journées Francophones des Langages Applicatifs (JFLA), January 2011.\
In French.\
*Presentation of the Frama-C library for dynamic typing and its usage.*
- Julien Signoles.\
**Foncteurs impératifs et composés: la notion de projets dans
Frama-C.**\
In Journées Francophones des Langages Applicatifs (JFLA), January 2009.
In French.\
*Presentation of the Frama-C library providing its notion of
projects.*
#### Tutorials
- Allan Blanchard, Nikolai Kosmatov, and Frédéric Loulergue.\
**A Lesson on Verification of IoT Software with Frama-C.**\
In International Conference on High Performance Computing & Simulation
(HPCS), July 2018.\
<https://hal.inria.fr/hal-02317078>
- Nikolai Kosmatov and Julien Signoles.\
**Frama-C, a Collaborative Framework for C Code Verification.
Tutorial Synopsis.**\
In International Conference on Runtime Verification (RV 2016),
September 2016.\
<http://julien.signoles.free.fr/publis/2016_rv.pdf>
# Eva
#### Manual
- David Bühler, Pascal Cuoq, Boris Yakobowski, Matthieu Lemerre,
André Maroneze, Valentin Perelle, and Virgile Prevosto.\
**Eva - The Evolved Value Analysis plug-in.**\
<http://frama-c.com/download/frama-c-eva-manual.pdf>.
#### Thesis
- David Bühler.\
**EVA, an Evolved Value Analysis for Frama-C: structuring an abstract interpreter through value and state abstractions.**\
PhD Thesis, University of Rennes 1, March 2017.\
<http://http://www.theses.fr/2017REN1S016>
#### Founding Articles
- Sandrine Blazy, David Bühler, and Boris Yakobowski.\
**Structuring Abstract Interpreters through State and Value Abstractions**\
In International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI), January 2017.\
<https://hal-cea.archives-ouvertes.fr/cea-01808886>\
*Formalization of the communication mechanism between abstractions in EVA.*
- Richard Bonichon and Pascal Cuoq.\
**A Mergeable Interval Map.**\
In Journées Francophones des Langages Applicatifs (JFLA), January 2011.\
<http://studia.complexica.net/index.php?option=com_content&view=article&id=185%3Aa-mergeable-interval-map%20pp-5-37&catid=56%3Anumber-1&Itemid=100&lang=en>\
*Presentation of one of the most important internal datastructure of Eva.*
#### Other Articles
- Géraud Canet, Pascal Cuoq and Benjamin Monate.\
**A Value Analysis for C Programs.**\
In Proceedings of the Ninth IEEE International Working Conference on
Source Code Analysis and Manipulation (SCAM). September 2009.\
*Presentation of a former version of Eva.*
- Pascal Cuoq and Damien Doligez.\
**Hashconsing in an incrementally garbage-collected system: a story
of weak pointers and hashconsing in OCaml 3.10.2.**\
In Workshop on ML, September 2008.\
*This article describes weak pointers, weak hashtables and hashconsing as
implemented in OCaml and used in a former version of Eva.*
# WP
#### Manual
- Patrick Baudin, François Bobot, Loïc Correnson, and Zaynah Dargaye.\
**WP Plug-in Manual.**\
<http://frama-c.com/download/frama-c-wp-manual.pdf>.\
*The official manual for the WP plug-in.*
#### Founding Articles
- Loïc Correnson.\
**Qed. Computing What Remains to Be Proved.**\
In NASA Formal Methods (NFM), April 2012.\
*Presentation of Qed, a core library of WP that simplifies proof obligations
before sending them to provers.*
#### Tutorials
- Allan Blanchard.\
**Introduction to C Program Proof with Frama-C and its WP plug-in.**\
<https://allan-blanchard.fr/publis/frama-c-wp-tutorial-en.pdf>\
*A comprehensive tutorial on how to prove C programs with Frama-C and WP.*
- Jochen Burghardt and Jens Gerlach.\
**ACSL by Example**.\
<https://github.com/fraunhoferfokus/acsl-by-example>\
*A fairly complete tour of ACSL and WP features through various functions inspired from C++ STL.*
#### Other articles
- Pascal Cuoq, Benjamin Monate, Anne Pacalet and Virgile Prevosto.\
**Functional Dependencies of C Functions via Weakest Pre-Conditions**\
In International Journal on Software Tools for Technology Transfer (STTT), 2010.\
[SpringerLink](http://www.springerlink.com/content/yj344380377p4011/)
[More information](functional_dependencies)
# E-ACSL
#### Manual
- Julien Signoles and Kostyantyn Vorobyov.\
**E-ACSL User Manual.**\
<http://frama-c.com/download/e-acsl/e-acsl-manual.pdf>.\
*The official manual of the Frama-C plug-in E-ACSL.*
- Julien Signoles.\
**E-ACSL: Executable ANSI/ISO C Specification Language.**\
<http://frama-c.com/download/e-acsl/e-acsl.pdf>.\
*The reference manual of the E-ACSL specification language.*
#### Thesis
- Julien Signoles.\
**From Static Analysis to Runtime Verification with Frama-C and E-ACSL.**\
Habilitation Thesis, University of Paris Sud, July 2018.\
<http://julien.signoles.free.fr/publis/hdr.pdf>
#### Founding Articles
- Julien Signoles, Nikolai Kosmatov, and Kostyantyn Vorobyov.\
**E-ACSL, a Runtime Verification Tool for Safety and Security of C Programs.
Tool Paper.**\
In International Workshop on Competitions, Usability, Benchmarks, Evaluation,
and Standardisation for Runtime Verification Tools (RV-CuBES), September 2017.\
<http://julien.signoles.free.fr/publis/2017_rvcubes_tool.pdf>\
*An overview of the E-ACSL plug-in.*
- Kostyantyn Vorobyov, Julien Signoles, and Nikolai Kosmatov.\
**Shadow state encoding for efficient monitoring of block-level properties.**\
In International Symposium on Memory Management (ISMM), June 2017.\
<http://julien.signoles.free.fr/publis/2017_ismm.pdf>\
*Presentation of the shadow memory technique used by E-ACSL to monitor
memory properties.*
- Mickaël Delahaye, Nikolaï Kosmatov and Julien Signoles.\
**Common Specification Language for Static and Dynamic Analysis of C
Programs.**\
In Proceedings of Symposium on Applied Computing 2013 (SAC), March 2013.\
<http://kosmatov.perso.sfr.fr/nikolai/publications/delahaye_ks_sac_2013.pdf>\
*An overview of the specification language.*
#### Other Articles
- Kostyantyn Vorobyov, Nikolai Kosmatov, and Julien Signoles.\
**Detection of Security Vulnerabilities in C Code using Runtime
Verification.**\
In International Conference on Tests and Proofs (TAP), June 2018.\
<http://julien.signoles.free.fr/publis/2018_tap_vorobyov.pdf>\
*Explore how some runtime verification tools (including E-ACSL) may detect
security vulnerabilities.*
- Kostyantyn Vorobyov, Nikolai Kosmatov, Julien Signoles, and Arvid Jakobsson.\
**Runtime detection of temporal memory errors.**\
In International Conference on Runtime Verification (RV), September 2017.\
<http://julien.signoles.free.fr/publis/2017_rv.pdf>
- Nikolaï Kosmatov, Guillaume Petiot and Julien Signoles.\
**An Optimized Memory Monitoring for Runtime Assertion Checking of C
Programs.**\
In Proceedings of Runtime Verification 2013 (RV), September 2013.\
*Presentation of the runtime memory model used by a former version of
E-ACSL.*
- Dara Ly, Nikolai Kosmatov, Julien Signoles and Frédéric Loulergue.\
**Soundness of a Dataflow Analysis for Memory Monitoring.**\
In Workshop on Languages and Tools for Ensuring Cyber-Resilience in
Critical Software-Intensive Systems (HILT) , November 2018.\
<https://hal.archives-ouvertes.fr/cea-02283406/>
- Dara Ly, Nikolai Kosmatov, Frédéric Loulergue and Julien Signoles.\
**Verified Runtime Assertion Checking for Memory Properties.**\
In International Conference on Tests and Proofs (TAP), June 2020.\
<https://hal-cea.archives-ouvertes.fr/cea-02879211>
# Aoraï
##### Manual
- Nicolas Stouls.\
**Aoraï Plug-in Tutorial.**\
<http://frama-c.com/download/aorai/aorai-manual.pdf>.\
*The official manual of the Frama-C plug-in Aoraï.*
##### Founding Article
- Julien Groslambert and Nicolas Stouls.\
**Vérification de propriétés LTL sur des programmes C par génération
d'annotations.**\
<http://hal.archives-ouvertes.fr/inria-00568947/>\
In Proceedings of Approches Formelles dans l'Assistance au
Développement de Logiciels 2009 (AFADL'09), January 2009. In
French.
# Security Slicing
##### Founding Article
- Benjamin Monate and Julien Signoles.\
**Slicing for Security of Code.**\
In Proceedings of the 1st international conference on Trusted
Computing and Trust in Information Technologies (TRUST'08), pages
133--142, March 2008.\
*Bugs in programs implementing security features can be catastrophic: for example they may be exploited by malign users to gain access to sensitive data. These exploits break the confidentiality of information. All security analyses assume that softwares implementing security features correctly implement the security policy,* i.e. *are security bug-free. This assumption is almost always wrong and IT security administrators consider that any software that has no security patches on a regular basis should be replaced as soon as possible. As programs implementing security features are usually large, manual auditing is very error prone and testing techniques are very expensive. This article proposes to reduce the code that has to be audited by applying a program reduction technique called* slicing *. Slicing transforms a source code into an equivalent one according to a set of criteria. We show that existing slicing criteria do* not *preserve the confidentiality of information. We introduce a new automatic and correct source-to-source method properly preserving the confidentiality of information* i.e. *confidentiality is guaranteed to be exactly the same in the original program and in the sliced program.*
# Internal Plug-ins at CEA
### Cfp
#### Founding Articles
- Michele Alberti and Julien Signoles.\
**Context Generation from Formal Specifications for C Analysis Tools.**\
In Logic-based Program Synthesis and Transformation (LOPSTR), October 2017.\
<http://julien.signoles.free.fr/publis/2017_lopstr.pdf>\
Best paper award.
### MetACSL
#### Founding Articles
- Virgile Robles, Nikolai Kosmatov, Virgile Prevosto, Louis Rilling, and
Pascale Le Gall.\
**MetAcsl: Specification and Verification of High-Level Properties.**\
In International Conference on Tools and Algorithms for the Construction
and Analysis of Systems (TACAS), April 2019.\
<https://hal-cea.archives-ouvertes.fr/cea-02019790>
- Virgile Robles, Nikolai Kosmatov, Virgile Prevosto, Louis Rilling and
Pascale Le Gall.\
**Tame Your Annotations with MetAcsl: Specifying, Testing and Proving
High-Level Properties.**\
In Tests and Proofs (TAP), 13th International Conference, October 2019.\
<https://hal.archives-ouvertes.fr/cea-02301892/>
### PathCrawler
##### Manual
- **PathCrawler Automatic Test Generation Tool For C Programs User Manual Version 3.1.**\
<http://frama-c.com/download/frama-c-pathcrawler.pdf>.\
*The user manual of the Frama-C plug-in PathCrawler.*
##### Founding Articles
- Nicky Williams, Bruno Marre and Patricia Mouy.\
**On-the-fly generation of k-paths tests for C functions :
towards the automation of grey-box testing.**\
In International Conference on Automated Software Engineering (ASE),
September 2004.\
<http://pathcrawler-online.com/pubs/ase04copy.pdf>\
The final publication is available from IEEE\
<http://doi.ieeecomputersociety.org/10.1109/ASE.2004.10020>
- Nicky Williams, Bruno Marre, Patricia Mouy and Muriel Roger.\
**PathCrawler: automatic generation of path tests by combining
static and dynamic analysis.**\
In European Dependable Computing Conference (EDCC-5), April 2005.\
<http://pathcrawler-online.com/pubs/edcc05.pdf>\
The final publication is available at www.springerlink.com.\
<http://dx.doi.org/10.1007/11408901_21>
##### Tutorials
- Nicky Williams and Nikolai Kosmatov.\
**Structural Testing with PathCrawler. Tutorial Synopsis.**\
In International Conference on Quality Software (QSIC), August 2012.\
<http://pathcrawler-online.com/pubs/qsic12copy.pdf>\
The final publication will be available from IEEE.\
<http://www.ieee.org>
- Nikolai Kosmatov, Nicky Williams, Bernard Botella, Muriel Roger,
Omar Chebaro.\
**A Lesson on Structural Testing with PathCrawler-online.com.**\
In International Conference on Tests and Proofs (TAP), May 2012.\
<http://pathcrawler-online.com/pubs/tap_2012_pconline_final.pdf>\
The final publication is available at www.springerlink.com.\
<http://dx.doi.org/10.1007/978-3-642-30473-6_15>
##### Other Articles
- Nicky Williams.\
**WCET measurement using modified path testing.**\
In International Workshop on Worst-Case Execution Time Analysis (WCET),
July 2005.\
<http://pathcrawler-online.com/pubs/wcet05.pdf>\
The final publication is available at DROPS.
<http://drops.dagstuhl.de/opus/volltexte/2007/809>
- Patricia Mouy, Bruno Marre, Nicky Williams and Pascale Le Gall.\
**Generation of all-paths unit test with function calls.**\
In International Conference on Software Testing, Verification, and
Validation (ICST), April 2008.\
<http://pathcrawler-online.com/pubs/icst08copy.pdf>\
The final publication is available from IEEE.\
<http://doi.ieeecomputersociety.org/10.1109/ICST.2008.35>
- Nikolai Kosmatov.\
**All-paths test generation for programs with internal aliases.**\
In International Symposium on Software Reliability Engineering
(ISSRE), November 2008.\
<http://pathcrawler-online.com/pubs/issre08copy.pdf>\
The final publication is available from IEEE.\
<http://dx.doi.org/10.1109/ISSRE.2008.25>
- Bernard Botella, Mickaël Delahaye, Stéphane Hong-Tuan-Ha, Nikolai
Kosmatov, Patricia Mouy, Muriel Roger and Nicky Williams.\
**Automating Structural Testing of C Programs: Experience with
PathCrawler.**\
In International Workshop on Automation of Software Test (AST), May 2009.\
<http://pathcrawler-online.com/pubs/ast09industrycopy.pdf>\
The final publication is available from IEEE.\
<http://dx.doi.org/10.1109/IWAST.2009.5069043>
- Nicky Williams and Muriel Roger.\
**Test Generation Strategies to Measure Worst-Case Execution
Time.**\
In International Workshop on Automation of Software Test (AST), May 2009.\
<http://pathcrawler-online.com/pubs/ast09researchcopy.pdf>\
The final publication is available from IEEE.\
<http://dx.doi.org/10.1109/IWAST.2009.5069045>
- Nikolai Kosmatov.\
**On Complexity of All-Paths Test Generation. From Practice to
Theory.**\
In Testing: Academic and Industrial Conference - Practice and
Research Techniques (TAIC PART 2009), September 2009.\
<http://pathcrawler-online.com/pubs/taic09copy.pdf>\
The final publication is available from IEEE.\
<http://dx.doi.org/10.1109/TAICPART.2009.26>
- Nicky Williams.\
**Abstract path testing with PathCrawler.**\
<http://doi.acm.org/10.1145/1808266.1808272>
- Nikolai Kosmatov, Bernard Botella, Muriel Roger and Nicky
Williams.\
**Online Test Generation with PathCrawler. Tool demo.**\
Best demo award.\
In International Workshop on Constraints in Software Testing, Verification,
and Analysis (CSTVA 2011), March 2011.\
<http://pathcrawler-online.com/pubs/kosmatov_brw_cstva_2011copy.pdf>\
The final publication is available from IEEE.\
<http://dx.doi.org/10.1109/ICSTW.2011.85>
### RPP
##### Founding Articles
- Lionel Blatter, Nikolai Kosmatov, Pascale Le Gall and Virgile Prevosto.\
**RPP: Automatic Proof of Relational Properties by Self-composition.**\
In Tools and Algorithms for the Construction and Analysis of Systems
23rd International Conference, {TACAS} 2017.\
<https://hal-cea.archives-ouvertes.fr/cea-01808885>
- Lionel Blatter, Nikolai Kosmatov, Pascale Le Gall, Virgile Prevosto and
Guillaume Petiot.\
**Static and Dynamic Verification of Relational Properties on
Self-composed C Code.**\
In Tests and Proofs - 12th International Conference, TAP@STAF 2018.\
<https://hal-cea.archives-ouvertes.fr/cea-01835470>
##### Thesis
- Lionel Blatter.\
**Relational properties for specification and verification of C programs in Frama-C.**\
PhD Thesis, University of Paris Saclay, December 2019.\
<http://http://www.theses.fr/2017REN1S016>
### SecureFlow
##### Thesis
- Mounir Assaf.\
**From qualitative to quantitative program analysis: permissive enforcement of secure information flow.**\
PhD Thesis, University of Rennes 1, May 2015.\
<http://http://www.theses.fr/2015REN1S003>
##### Founding Articles
- Gergö Barany and Julien Signoles.\
**Hybrid Information Flow Analysis for Real-World C Code.**\
In International Conference on Tests and Proofs (TAP), July 2017.\
<http://julien.signoles.free.fr/publis/2017_tap.pdf>
- Mounir Assaf, Julien Signoles, Éric Totel, and Frédéric Tronel.\
**Program transformation for non-interference verification on programs
with pointers.**\
In International Information Security and Privacy Conference (SEC), July 2013.\
<http://julien.signoles.free.fr/publis/2013_sec.pdf>\
Best student paper award.
# External Plug-ins
These publications are related to Frama-C plug-ins which are not
available from the official Frama-C website (<http://frama-c.com>).
These plug-ins may be either closed or open source.
### Jessie
#### Manual
- The main web page, including the manual and many other resources, is
<http://krakatoa.lri.fr/>
#### Thesis
- Yannick Moy.\
**Automatic Modular Static Safety Checking for C Programs.**\
Phd Thesis. January 2009.\
<http://www.lri.fr/~marche/moy09phd.pdf>.
- François Bobot.\
**Logique de séparation et vérification déductive.**\
Thèse de doctorat, Université Paris-Sud, December 2011.\
<http://proval.lri.fr/publications/bobot11these.pdf>
- Romain Bardou.\
**Verification of Pointer Programs Using Regions and
Permissions.**\
Thèse de doctorat, Université Paris-Sud, October 2011.
<http://proval.lri.fr/publications/bardou11phd.pdf>.
#### Founding Articles
- Yannick Moy and Claude Marché.\
**Modular inference of subprogram contracts for safety checking.**\
In Journal of Symbolic Computation, 2010.\
<http://hal.inria.fr/inria-00534331/en>
- Sylvie Boldo and Thi Minh Tuyen Nguyen.\
**Hardware-independent proofs of numerical programs.**\
In Proceedings of the Second NASA Formal Methods Symposium, April 2010.\
<http://shemesh.larc.nasa.gov/NFM2010/proceedings/NASA-CP-2010-216215.pdf>
- Ali Ayad.\
**On formal methods for certifying floating-point C programs.**\
Research Report RR-6927, INRIA, 2009.\
<http://hal.inria.fr/inria-00383793/en/>
- Yannick Moy.\
**Sufficient Preconditions for Modular Assertion Checking.**\
In Proceedings of the 9th International Conference on Verification,
Model Checking, and Abstract Interpretation (VMCAI'08). January 2008.\
*Assertion checking is the restriction of program verification to
validity of program assertions. It encompasses safety checking,
which is program verification of safety properties, like memory
safety or absence of overflows. In this paper, we consider assertion
checking of program parts instead of whole programs, which we call
modular assertion checking. Classically, modular assertion checking
is possible only if the context in which a program part is executed
is known. By default, the worst-case context must be assumed, which
may impair the verification task. It usually takes user effort to
detail enough the execution context for the verification task to
succeed, by providing strong enough preconditions. We propose a
method to automatically infer sufficient preconditions in the
context of modular assertion checking of imperative pointer
programs. It combines abstract interpretation, weakest precondition
calculus and quantifier elimination. We instantiate this method to
prove memory safety for C and Java programs, under some memory
separation conditions.*
- Yannick Moy.\
**Checking C Pointer Programs for Memory Safety.**\
INRIA Research Report n°6334, October 2007.\
*We propose an original approach for checking memory safety of C
pointer programs that do not include casts, structures, double
indirection and memory deallocation. This involves first identifying
aliasing and strings, which we do in a local setting rather than
through a global analysis as it is done usually. Our separation
analysis in particular is a totally new treatment of non-aliasing.
We present for the first time two abstract lattices to deal with
local pointer aliasing and local pointer non-aliasing in an abstract
interpretation framework. The key feature of our work is to combine
abstract interpretation techniques and deductive verification. The
approach is modular and contextual, thanks to the use of Hoare-style
annotations (pre- and postconditions), allowing to verify each C
function independently. Abstract interpretation techniques are used
to automatically generate such annotations, in an idiomatic way:
standard practice of C programming is identified and incorporated as
heuristics. Abstract interpretation and deductive verification are
both used to check these annotations in a sound way. Our first
contribution is the design of an abstract domain for implications,
which makes it possible to build efficient contextual analyses. Our
second contribution is an efficient back-and-forth propagation
method to generate contextual annotations in a modular way, in the
framework of abstract interpretation. It considers the safety
conditions to prove as a starting point, which focuses the analysis
on the paths of interest. Thanks to previously unknown loop
refinement operators, this propagation method does not require
iterating around loops. We implemented our method in Caduceus, a
tool for the verification of C programs, and successfully verified
automatically the C standard string library functions.*
- Yannick Moy.\
**Union and Cast in Deductive Verification.**\
In Proceedings of the C/C++ Verification Workshop (CCV'07), July 2007.\
*Deductive verification based on weakest-precondition calculus has
proved effective at proving imperative programs, through a suitable
encoding of memory as functional arrays (a.k.a. the Burstall-Bornat
model). Unfortunately, this encoding of memory makes it impossible
to support features like union and cast in C. We show that an
interesting subset of those unions and casts can be encoded as
structure subtyping, on which it is possible to extend the Burstall-
Bornat encoding. We present an automatic translation from C to an
intermediate language Jessie on which this extended interpretation
is performed.*
- Yannick Moy and Claude Marché.\
**Inferring local (non-)aliasing and strings for memory safety.**\
In Proceedings of Heap Analysis and Verification (HAV’07), Braga,
Portugal, March 2007.\
*We propose an original approach for checking memory safety of C
pointer programs, by combining deductive verification and abstract
interpretation techniques. The approach is modular and contextual,
thanks to the use of Hoare-style annotations (pre- and
postconditions), allowing us to verify each C function
independently. Deductive verification is used to check these
annotations in a sound way. Abstract interpretation techniques are
used to automatically generate such annotations, in an idiomatic
way: standard practice of C programming is identified and
incorporated as heuristics. Our first contribution is a set of
techniques for identifying aliasing and strings, which we do in a
local setting rather than through a global analysis as it is done
usually. Our separation analysis in particular is a totally new
treatment of non-aliasing. We present for the first time two
abstract lattices to deal with local pointer aliasing and local
pointer non-aliasing in an abstract interpretation framework. Our
second contribution is the design of an abstract domain for
implications, which makes it possible to build efficient contextual
analyses. Our last contribution is an efficient back-and-forth
propagation method to generate contextual annotations in a modular
way, in the framework of abstract interpretation. We implemented our
method in Caduceus, a tool for the verification of C programs, and
successfully generated appropriate annotations for the C standard
string library functions.*
- Thierry Hubert and Claude Marché.\
**Separation analysis for deductive verification.**\
In Heap Analysis and Verification (HAV'07), pages 81-93, Braga,
Portugal, March 2007.\
<http://www.lri.fr/~marche/hubert07hav.pdf>
#### Other Articles
- Jochen Burghardt, Jens Gerlach, Hans Pohl and Juan Soto.\
**An Experience Report on the Verification of Algorithms in the C++ Standard Library using Frama-C.**\
In First Proceedings of International Conference of Formal
Verification of Object-Oriented Software (FoVeOOS'10), June 2010.\
*Over the past few years, we have been conducting assessment studies
to determine the utility of the Frama-C/Jessie platform of software
analyzers (in conjunction with automatic theorem provers) for the
formal verification of software. In this experience report, we
discuss experiments in the verification of algorithms in the C++
Standard Library based on tool-supported Hoare-style weakest
precondition computations to formally prove ACSL (ANSI/ISO C
Specification Language) properties. Often automated provers are
unable to perform inductive proofs. Hence, we introduce an approach
to guide automated provers to find an inductive proof using
auxiliary C-code corresponding to the proof structure. We also
present a method to verify that a function only permutes the
contents of an array, and obtain the relation between the pre- and
post-index for each array element for use in later specification
properties. Furthermore, we describe an approach to prove the
essential properties of a function independent of each other,
supplying for each task only the assumptions actually needed, i.e.,
related to the current goal. This approach reduces the proof search
space and leads to higher verification rates for automatic provers.
However, additional methods and tool support are desired to overcome
drawbacks from a software engineering point of view. Finally, we
sketch some ideas for an extension of ACSL for C++.*
- Stéphane Duprat, Pierre Gaufillet, Victoria Moya Lamiel and Frédéric
Passarello.\
**Formal verification of SAM state machine implementation.**\
In Proceedings of Embedded Real Time Software and Systems
(ERTS²'10), May 2010.\
<http://www.erts2010.org/Site/0ANDGY78/Fichier/PAPIERS%20ERTS%202010/ERTS2010_0053_final.pdf>\
*This paper reports the results of an experiment about the formal
verification of source code made according to an EMF model. Models
define the semantics of a system whereas the source code defines its
implementation. We applied this solution to a model of Automaton in
SAM language and its C language implementation. The technical
environment is close to an industrial operational context and all
the tools are available. The experimentation has succeeded and has
to be consolidated with bigger cases before an introduction in the
operational development process. More generally, this solution must
be extended to other model languages.*
- Murat Torlakcik.\
**Contracts in OpenBSD.**\
Msc. Dissertation Report, April 2010.\
<http://kindsoftware.com/documents/reports/Torlakcik10.pdf>.
- Franck Butelle, Florent Hivert, Micaela Mayero and Frédéric
Toumazet.\
**Formal Proof of SCHUR Conjugate Function.**\
In 17th Symposium on the Integration of Symbolic Computation and
Mechanised Reasoning (CALCULEMUS 2010).\
<http://www-lipn.univ-paris13.fr/~mayero/publis/Calculemus2010.pdf>
- Nikolai Kosmatov, Virgile Prevosto and Julien Signoles.\
**Specification and Proof of Programs with Frama-C. SAC 2013 Tutorial**\
In 28th ACM Symposium on Applied Computing (SAC), March 2013.\
<http://www.acm.org/conferences/sac/sac2013/T4.pdf>\
[Slides](http://www.acm.org/conferences/sac/sac2013/T4-Handout.pdf)
- Alwyn Goodloe, César A. Muñoz, Florent Kirchner, Loïc Correnson.\
**Verification of Numerical Programs: From Real Numbers to Floating
Point Numbers.**\
In NASA Formal Methods 2013.\
*Usually, proofs involving numerical computations are conducted in the infinitely precise realm of the field of real numbers. However, numerical computations in these algorithms are often implemented using floating point numbers. The use of a finite representation of real numbers introduces uncertainties as to whether the properties verified in the theoretical setting hold in practice. This short paper describes work in progress aimed at addressing these concerns. Given a formally proven algorithm, written in the Program Verification System(PVS), the Frama-C suite of tools is used to identify sufficient conditions and verify that under such conditions the rounding errors arising in a C implementation of the algorithm do not affect its correctness. The technique is illustrated using an algorithm for detecting loss of separation among aircraft.*
### Cost
- Nicolas Ayache, Roberto M. Amadio and Yann Régis-Gianas.\
**Certifying and reasoning on cost annotations in C programs.**\
In Proceedings of the 17th International Workshop on Formal Methods
for Industrial Critical Systems (FMICS 2012), Paris, France, August 2012.\
<http://hal.inria.fr/hal-00702665>\
*We present a so-called labelling method to enrich a compiler in
order to turn it into a “cost annotating compiler”, that is, a
compiler which can lift pieces of information on the execution cost
of the object code as cost annotations on the source code. These
cost annotations characterize the execution costs of code fragments
of constant complexity. ... we present a Frama-C plugin that uses
our cost annotating compiler to automatically infer trustworthy
logic assertions about the concrete worst case execution cost of
programs written in a fragment of the C language. ... We report our
experimentations on some C programs, especially programs generated
by a compiler for the synchronous programming language Lustre used
in critical embedded software.*
### Fan-C
- Pascal Cuoq, David Delmas, Stéphane Duprat and Victoria Moya
Lamiel.\
**Fan-C, a Frama-C plug-in for data flow verification.**\
In Proceedings of Embedded Real Time Software and Systems
(ERTS'12).\
<http://www.erts2012.org/Site/0P2RUC89/5C-3.pdf>
### SANTE
- Omar Chebaro, Nikolaï Kosmatov, Alain Giorgetti and Jacques
Julliand.\
**The SANTE Tool: Value Analysis, Program Slicing and Test
Generation for C Program Debugging.**\
In Proceedings of the 5th International Conference on Tests & Proofs
(TAP 2011), Zurich, Switzerland, June 2011.\
*This short paper presents a prototype tool called SANTE (Static
ANalysis and TEsting) implementing an original method combining
value analysis, program slicing and structural test generation for
verification of C programs. First, value analysis is called to
generate alarms when it can not guarantee the absence of errors.
Then the program is reduced by program slicing. Alarm-guided test
generation is then used to analyze the simplified program(s) in
order to confirm or reject alarms.*
- Omar Chebaro, Nikolaï Kosmatov, Alain Giorgetti and Jacques
Julliand.\
**Combining static analysis and test generation for C program
debugging.**\
In Proceedings of the 4th International Conference on Tests & Proofs
(TAP 2010), pages 94-100, Malaga, Spain, July 2010.\
*This paper presents our ongoing work on a tool prototype called
SANTE (StaticANalysis and TEsting), implementing a combination of
static analysis and structural program testing for detection of
run-time errors in C programs. First, a static analysis tool
(Frama-C) is called to generate alarms when it cannot ensure the
absence of run-time errors. Second, these alarms guide a structural
test generation tool (PathCrawler) trying to confirm alarms by
activating bugs on sometest cases.Our experiments on real-life
software showthat this combination can outperform the use of each
technique independently.*
- Omar Chebaro.\
**Outil SANTE : Détection d’erreurs par analyse statique et test
structurel des programmes C.**\
In Proceedings of 10iemes Journées Francophones Internationales sur
les Approches Formelles dans l'Assistance au Développement de
Logiciels (AFADL'10), pages 75-79. June 2010. In French.
- Omar Chebaro, Nikolaï Kosmatov, Alain Giorgetti and Jacques
Julliand.\
**Program slicing enhances a verification technique combining static
and dynamic analysis.**\
In Proceedings of the 27th Symposium On Applied Computing (SAC
2012), pages 1284-1291, Trento, Italy, March 2012.\
*Recent research proposed efficient methods for software
verification combining static and dynamic analysis, where static
analysis reports possible runtime errors (some of which may be false
alarms) and test generation confirms or rejects them. However, test
generation may time out on real-sized programs before confirming
some alarms as real bugs or rejecting some others as unreachable. To
overcome this problem, we propose to reduce the source code by
program slicing before test generation. This paper presents new
optimized and adaptive usages of program slicing, provides
underlying theoretical results and the algorithm these usages rely
on. The method is implemented in a tool prototype called sante
(Static ANalysis and TEsting). Our experiments show that our method
with program slicing outperforms previous combinations of static and
dynamic analysis. Moreover, simplifying the program makes it easier
to analyze detected errors and remaining alarms. To appear.*
### SIDAN
- Jonathan-Christopher Demay, Éric Totel and Frédéric Tronel.\
**SIDAN: a tool dedicated to Software Instrumentation for Detecting
Attacks on Non-control-data.**\
4th International Conference on Risks and Security of Internet and
Systems (CRISIS'2009), October 2009.
### STAC
- Dumitru Ceara, Laurent Mounier and Marie-Laure Potet.\
**Taint Dependency Sequences: a characterization of insecure
execution paths based on input-sensitive cause sequences.**\
Modeling and Detecting Vulnerabilities workshop (MDV'10), associated
to ICST 2010, April 2010.
### Taster
- David Delmas, Stéphane Duprat, Victoria Moya Lamiel and Julien
Signoles.\
**Taster, a Frama-C plug-in to enforce Coding Standards.**\
In Proceedings of Embedded Real Time Software and Systems (ERTS'10),
May 2010.\
<http://web.archive.org/web/20110726034209/http://www.erts2010.org/Site/0ANDGY78/Fichier/PAPIERS%20ERTS%202010/ERTS2010_0003_final.pdf>\
*Enforcing Coding Standards is part of the traditional concerns of
industrial software developments. In this paper, we present a
framework based on the open source Frama-C platform for easily
developing syntactic, typing (and even some semantic) analyses of C
source code, among which conformance to Coding Standards. We report
on our successful attempt to develop a Frama-C plug-in named Taster,
in order to replace a commercial, off-the-shelf, legacy tool in the
verification process of several Airbus avionics software products.
We therefore present the types of coding rules to be verified, the
Frama-C platform and the Taster plug-in. We also discuss ongoing
industrial deployment and qualification activities.*
......@@ -94,7 +94,7 @@ modalities are described in this [document](https://git.frama-c.com/pub/frama-c/
# Works about Frama-C
- [List of publications](/dokuwiki/publications.html)
- [List of publications](/html/publications.html)
- [Exercises](/dokuwiki/exercises.html)
- [Teaching](/dokuwiki/teaching.html)
- [Tutorials](/dokuwiki/tutorial.html)
......@@ -57,7 +57,7 @@ title: Documentation - Frama-C
<div class="tile">
<h4 class="tileTitle"><span>About Frama-C</span></h4>
<ul>
<li><a href="/dokuwiki/publications.html">List of publications</a></li>
<li><a href="/html/publications.html">List of publications</a></li>
<li><a href="/dokuwiki/exercises.html">Exercices</a></li>
<li><a href="/dokuwiki/teaching.html">Teaching</a></li>
<li><a href="/dokuwiki/tutorial.html">Tutorials</a></li>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment