Alt-Ergo
{{Short description|SMT solver for software verification}}
{{More citations needed|date=July 2023}}
{{Use dmy dates|date=February 2024}}
{{Infobox software
| name = Alt-Ergo
| logo = Alt-ergo.png
| developer = OCamlPro
| released =
| latest release version =
| latest release date =
| programming language = OCaml
| language = English
| genre = Mathematical solver, program verifier
| website = {{URL|alt-ergo.ocamlpro.com}}
}}
Alt-Ergo, an automatic solver for mathematical formulas, is mainly used in formal program verification. It operates on the principle of satisfiability modulo theories (SMT). Development was undertaken by researchers at the Paris-Sud University, Laboratoire de Recherche en Informatique, Inria Saclay Ile-de-France, and CNRS. Since 2013, project management and oversight has been conducted by OCamlPro company.{{Cite web |title=About |url=https://alt-ergo.ocamlpro.com/ |access-date=2023-06-15 |website=alt-ergo.ocamlpro.com}} It is released under the free and open-source software CeCILL-C license.
Technologies
= Design choices =
Alt-Ergo employs a specialized input language with prenex polymorphism, designed to reduce the number of axioms requiring quantification and to simplify the complexity of problems. While Alt-Ergo offers partial support for the SMT-LIB 2 language, its efficiency with SMT files is comparatively limited.
= Main components =
The core architecture of Alt-Ergo comprises three main elements: a depth-first search (DFS)-based SAT solver, a quantifiers instantiation engine that uses e-matching, and an assembly of decision procedures for a range of built-in theories. These components collectively enable Alt-Ergo's abilities in automatic formula solving.
= Built-in theories =
Alt-Ergo implements (semi-)decision procedures for the following theories:
- Empty theory
- Linear integer arithmetic
- Linear rational arithmetic
- Non-linear arithmetic
- Floating point arithmetic
- Polymorphic arrays
- Enumerated data types
- AC symbols
- Record data types
Industrial uses
Several verification platforms are built on Alt-Ergo:
- [http://why3.lri.fr/ Why3], a platform for deductive program verification, uses Alt-Ergo as main prover{{Cite web |title=Why3 |url=https://why3.lri.fr/ |access-date=2023-06-15 |website=why3.lri.fr}}
- CAVEAT, a C-verifier developed by CEA and used by Airbus; Alt-Ergo was included in the qualification DO-178C of one of its aircraft{{Citation needed|date=June 2023}}
- Frama-C, a framework to analyse C-code, uses Alt-Ergo in the Jessie and WP plugins (dedicated to deductive program verification)
- SPARK, uses Alt-Ergo (behind GNATprove) to automate the verification of some assertions in Spark 2014
- Atelier-B can use Alt-Ergo instead of its main prover (raising success from 84% to 98% on [http://alt-ergo.lri.fr/documents/ABZ-2014.pdf ANR Bware project benchmarks])
- Rodin, a B-method framework developed by Systerel, can use Alt-Ergo as a back-end
- [http://cubicle.lri.fr/ Cubicle], an open source model checker to verify safety properties of array-based transition systems
- [https://www.easycrypt.info/ EasyCrypt], a toolset for reasoning about relational properties of probabilistic computations with adversarial code
- BWARE{{Cite web |title=The Alt-Ergo Theorem Prover: Academic Web Page |url=https://alt-ergo.lri.fr/ |access-date=2023-06-15 |website=alt-ergo.lri.fr}}
- Cafein
- FUI Hi-Lite
- Decert
- ADT Alt-Ergo
- A3PAT
See also
{{Portal|Free and open-source software}}
References
{{Reflist}}
External links
- {{Official website|alt-ergo.ocamlpro.com}}, OcamlPro
- [http://alt-ergo.lri.fr Alt-Ergo at LRI]
{{ML programming}}
Category:Software testing tools
{{Science-software-stub}}