Fluctuat

Fluctuat
Developer(s) Commissariat à l'Énergie Atomique
Written in C++
Operating system Microsoft Windows, FreeBSD, Linux, Mac OS X
Available in English
Type Formal verification, Static code analysis
License Commercial
Website www.lix.polytechnique.fr/Labo/Sylvie.Putot/fluctuat.html

Fluctuat has been developed by Commissariat à l'Énergie Atomique et aux Énergies Alternatives since 2001. Fluctuat enables the static analysis of C and Ada programs, with a special focus on floating-point operations.

Theoretical Background

Fluctuat is a static analyser, based on abstract interpretation. Compared to similar tools like Polyspace or Astrée, it relies on zonotopes as an abstract domain. It means that the value of each program variable is abstracted by a linear expression over noise symbols (internal variables that range in [-1,1]).

Let us now consider the following program:

x=[0,1];
y = 2*x+1;
z = x * y;

The first line means that the value of x can be anything in [0,1]. It can be written as x= 0.5 + 0.5*ε, where ε is a noise symbol. The second line implies that y= 2 + ε; since x and y share the same noise symbol, this abstract domain is relational. When there are non-linear operations, like in the third line, new noise symbols are introduced. The accurate symbolic expression would be z=1+1.5*ε + 0.5*ε*ε, but we abstract it as z=1.25+1.5ε+0.25η.

Features

Fluctuat's features include:

See also

References

  1. David Delmas; et al. "Towards an Industrial Use of FLUCTUAT on Safety-Critical Avionics Software". Proceedings of 14th International Workshop on Formal Methods for Industrial Critical Systems FMICS'09, LNCS volume 5825, pp. 53-69.
  2. Eric Goubault and Sylvie Putot. "Static Analysis of Numerical Algorithms". Proceedings of Static Analysis Symposium SAS'06, Seoul, LNCS volume 4134, pp. 18-34.
  3. Olivier Bouissou; et al. "HybridFluctuat: a static analyzer of numerical programs within a continuous environment". Proceedings of Computer Aided Verification CAV'09, Grenoble, France, LNCS volume 5649, pp. 620-626.

External links

This article is issued from Wikipedia - version of the 8/10/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.