Difference between revisions of "Flata"
Radu iosif (Talk | contribs) |
|||
(21 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | '''FLATA''' is a toolset for the manipulation and the analysis of non-deterministic integer programs (also known as counter automata). The main functionalities of FLATA are: | |
− | + | * '''reachability analysis''' of non-recursive programs - checking if an error control state is reachable | |
− | + | ||
− | + | ||
− | * '''reachability analysis''' of non-recursive programs - | + | |
* '''termination analysis''' of non-recursive programs - computation of termination preconditions | * '''termination analysis''' of non-recursive programs - computation of termination preconditions | ||
Line 10: | Line 7: | ||
* computation of '''summaries''' of recursive programs | * computation of '''summaries''' of recursive programs | ||
+ | == Download == | ||
− | + | FLATA is a free software under LGPL license. The current distribution of FLATA is available as an [http://nts.imag.fr/images/3/3a/Flata.tar.gz archive] or on this [https://github.com/filipkonecny/flata git repository] | |
− | + | ||
− | + | ||
− | + | ||
− | FLATA is a free software under LGPL license. The current distribution of FLATA is available | + | |
Prerequisites: | Prerequisites: | ||
Line 29: | Line 23: | ||
--> | --> | ||
− | + | == Run == | |
− | The input to the tool is a textual description of a counter automaton, essentially a control flow with edges labeled with arithmetic relations. A good way to get started using FLATA is to go through some of the examples (a subset of [[Main_Page | NTS]] benchmarks that FLATA can | + | The input to the tool is a textual description of a counter automaton, essentially a control flow graph with edges labeled with arithmetic relations. A good way to get started using FLATA is to go through some of the examples (a subset of [[Main_Page | NTS]] benchmarks that FLATA can verify) contained in the distribution and run FLATA as e.g.: |
* reachability analysis <tt>./flata-reachability.sh benchmarks-reach/VHDL/synlifo.correct.nts</tt> | * reachability analysis <tt>./flata-reachability.sh benchmarks-reach/VHDL/synlifo.correct.nts</tt> | ||
* termination analysis <tt>./flata-termination.sh benchmarks-term/anubhav.correct.nts</tt> | * termination analysis <tt>./flata-termination.sh benchmarks-term/anubhav.correct.nts</tt> | ||
+ | == Reachability Analysis == | ||
− | = | + | The reachability analysis semi-algorithm implemented in FLATA is based on computatation of procedure summaries. The core of the method is an algorithm for computing transitive closures of octagonal relations <ref name="cav10">[http://nts.imag.fr/images/d/d5/Cav10.pdf "Fast Acceleration of Ultimately Periodic Relations."] M. Bozga, R. Iosif, and F. Konecny. In Proc. of CAV'10, volume 6174 of LNCS, pages 227-242, 2010. Springer-Verlag. </ref><ref name="cav10-TR">[http://www-verimag.imag.fr/TR/TR-2012-10.pdf "Relational Analysis of Integer Programs"] M. Bozga, R. Iosif, and F. Konecny. VERIMAG technical report, TR-2012-10, 2012. </ref>. |
− | + | '''Examples''' | |
+ | * <tt>./flata-reachability.sh benchmarks-reach/VHDL/synlifo.correct.nts</tt> (a correct program) | ||
+ | * <tt>./flata-reachability.sh benchmarks-reach/L2CA/listcounter.error.nts</tt> (program with a counterexample trace) | ||
− | + | == Termination Analysis == | |
− | + | The semi-algorithm implemented in FLATA first attempts to compute a transition invariant as a disjunction of octagonal relations (by adapting the procedure summary algorithm) and then computes a termination precondition by applying an algorithm that computes the weakest termination precondition of octagonal relations <ref name="tacas12"> Deciding Conditional Termination. M. Bozga, R. Iosif, and F. Konecny. In Proc. of TACAS'12, volume 7214 of LNCS, pages 252-266, 2012. Springer-Verlag. ([http://arxiv.org/pdf/1302.2762v1 Extended journal submission.]) </ref>. | |
− | + | ||
− | + | ||
− | + | '''Example''' | |
− | + | ||
− | + | ||
− | + | ||
− | '''Example | + | |
* <tt>./flata-termination.sh benchmarks-term/anubhav.correct.nts</tt> | * <tt>./flata-termination.sh benchmarks-term/anubhav.correct.nts</tt> | ||
== Verification of Recursive Programs == | == Verification of Recursive Programs == | ||
− | Given a recursive program, FLATA attempts to compute its summary by computing increasingly precise underapproximations of the program <ref name="tacas13">[http://arxiv.org/pdf/1210.4289.pdf "Underapproximation of Procedure Summaries for Integer Programs."] P. Ganty, R. Iosif and F. Konecny. In Proc. of TACAS'13. To appear. </ref>. Note that error control states are ignored and a reachability relation between initial and final control states is computed | + | Given a recursive program, FLATA attempts to compute its summary by computing increasingly precise underapproximations of the program <ref name="tacas13">[http://arxiv.org/pdf/1210.4289.pdf "Underapproximation of Procedure Summaries for Integer Programs."] P. Ganty, R. Iosif and F. Konecny. In Proc. of TACAS'13. To appear. </ref>. Note that error control states are ignored and that a reachability relation between initial and final control states is computed. |
− | '''Example | + | '''Example''' |
* <tt>./flata-reachability.sh benchmarks-recur/mccarthy.nts</tt> | * <tt>./flata-reachability.sh benchmarks-recur/mccarthy.nts</tt> | ||
+ | |||
+ | |||
+ | == Decision Procedure for the SAT problem of the Logic SIL == | ||
+ | |||
+ | FLATA decides the satisfiability problem of the SIL logic<ref name="lpar-08">[http://nts.imag.fr/images/d/d3/Lpar08.pdf "A Logic of Singly Indexed Arrays"] P. Habermehl, R. Iosif, T. Vojnar. In Proc. of LPAR'08, volume 5330 of LNCS, pages 558-573, 2008. Springer-Verlag. </ref> by reduction to the reachability problem of flat counter automata. | ||
+ | <!-- | ||
+ | <ref name="comon-jurski"> "Multiple counters automata, safety analysis and presburger arithmetic". In Proc. of CAV, volume 1427 of LNCS, pages 268–279, Berlin, Heidelberg, 1998. Springer Verlag.</ref> | ||
+ | --> | ||
+ | |||
+ | '''Examples''' | ||
+ | * <tt>./flata-sil.sh benchmarks-sil/rotation_vc.nts</tt> (valid formula) | ||
+ | * <tt>./flata-sil.sh benchmarks-sil/rotation_vc-f.nts</tt> (falsifiable formula) | ||
== Contributors == | == Contributors == | ||
Line 66: | Line 69: | ||
* [http://www-verimag.imag.fr/%7Ebozga Marius Bozga] (VERIMAG, Grenoble, France) | * [http://www-verimag.imag.fr/%7Ebozga Marius Bozga] (VERIMAG, Grenoble, France) | ||
* [http://www-verimag.imag.fr/%7Eiosif Radu Iosif] (VERIMAG, Grenoble, France) | * [http://www-verimag.imag.fr/%7Eiosif Radu Iosif] (VERIMAG, Grenoble, France) | ||
− | * [http:// | + | * [http://people.epfl.ch/filip.konecny Filip Konecny] (EPFL, Lausanne, Switzerland) |
* [http://www.fit.vutbr.cz/~vojnar/ Tomas Vojnar] (Brno University of Technology, Czech Republic) | * [http://www.fit.vutbr.cz/~vojnar/ Tomas Vojnar] (Brno University of Technology, Czech Republic) | ||
Line 74: | Line 77: | ||
This work was supported by the French national project ANR-09-SEGI-016 VERIDYC, by the Czech Science Foundation (projects P103/10/0306 and 102/09/H042), the Czech Ministry of Education (projects COST OC10009 and MSM 0021630528), and the internal FIT BUT grant FIT-S-10-1. | This work was supported by the French national project ANR-09-SEGI-016 VERIDYC, by the Czech Science Foundation (projects P103/10/0306 and 102/09/H042), the Czech Ministry of Education (projects COST OC10009 and MSM 0021630528), and the internal FIT BUT grant FIT-S-10-1. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Latest revision as of 15:06, 29 December 2016
FLATA is a toolset for the manipulation and the analysis of non-deterministic integer programs (also known as counter automata). The main functionalities of FLATA are:
- reachability analysis of non-recursive programs - checking if an error control state is reachable
- termination analysis of non-recursive programs - computation of termination preconditions
- computation of summaries of recursive programs
Contents
Download
FLATA is a free software under LGPL license. The current distribution of FLATA is available as an archive or on this git repository
Prerequisites:
- JAVA version 1.6.0 or later
- YICES has to be installed in your executable path
- GLPK Java has to be installed in LD_LIBRARY_PATH (required for termination analysis only)
Run
The input to the tool is a textual description of a counter automaton, essentially a control flow graph with edges labeled with arithmetic relations. A good way to get started using FLATA is to go through some of the examples (a subset of NTS benchmarks that FLATA can verify) contained in the distribution and run FLATA as e.g.:
- reachability analysis ./flata-reachability.sh benchmarks-reach/VHDL/synlifo.correct.nts
- termination analysis ./flata-termination.sh benchmarks-term/anubhav.correct.nts
Reachability Analysis
The reachability analysis semi-algorithm implemented in FLATA is based on computatation of procedure summaries. The core of the method is an algorithm for computing transitive closures of octagonal relations <ref name="cav10">"Fast Acceleration of Ultimately Periodic Relations." M. Bozga, R. Iosif, and F. Konecny. In Proc. of CAV'10, volume 6174 of LNCS, pages 227-242, 2010. Springer-Verlag. </ref><ref name="cav10-TR">"Relational Analysis of Integer Programs" M. Bozga, R. Iosif, and F. Konecny. VERIMAG technical report, TR-2012-10, 2012. </ref>.
Examples
- ./flata-reachability.sh benchmarks-reach/VHDL/synlifo.correct.nts (a correct program)
- ./flata-reachability.sh benchmarks-reach/L2CA/listcounter.error.nts (program with a counterexample trace)
Termination Analysis
The semi-algorithm implemented in FLATA first attempts to compute a transition invariant as a disjunction of octagonal relations (by adapting the procedure summary algorithm) and then computes a termination precondition by applying an algorithm that computes the weakest termination precondition of octagonal relations <ref name="tacas12"> Deciding Conditional Termination. M. Bozga, R. Iosif, and F. Konecny. In Proc. of TACAS'12, volume 7214 of LNCS, pages 252-266, 2012. Springer-Verlag. (Extended journal submission.) </ref>.
Example
- ./flata-termination.sh benchmarks-term/anubhav.correct.nts
Verification of Recursive Programs
Given a recursive program, FLATA attempts to compute its summary by computing increasingly precise underapproximations of the program <ref name="tacas13">"Underapproximation of Procedure Summaries for Integer Programs." P. Ganty, R. Iosif and F. Konecny. In Proc. of TACAS'13. To appear. </ref>. Note that error control states are ignored and that a reachability relation between initial and final control states is computed.
Example
- ./flata-reachability.sh benchmarks-recur/mccarthy.nts
Decision Procedure for the SAT problem of the Logic SIL
FLATA decides the satisfiability problem of the SIL logic<ref name="lpar-08">"A Logic of Singly Indexed Arrays" P. Habermehl, R. Iosif, T. Vojnar. In Proc. of LPAR'08, volume 5330 of LNCS, pages 558-573, 2008. Springer-Verlag. </ref> by reduction to the reachability problem of flat counter automata.
Examples
- ./flata-sil.sh benchmarks-sil/rotation_vc.nts (valid formula)
- ./flata-sil.sh benchmarks-sil/rotation_vc-f.nts (falsifiable formula)
Contributors
- Marius Bozga (VERIMAG, Grenoble, France)
- Radu Iosif (VERIMAG, Grenoble, France)
- Filip Konecny (EPFL, Lausanne, Switzerland)
- Tomas Vojnar (Brno University of Technology, Czech Republic)
Acknowledgements
This work was supported by the French national project ANR-09-SEGI-016 VERIDYC, by the Czech Science Foundation (projects P103/10/0306 and 102/09/H042), the Czech Ministry of Education (projects COST OC10009 and MSM 0021630528), and the internal FIT BUT grant FIT-S-10-1.