Alt-Ergo
This article needs more citations. (July 2023) |
| Alt-Ergo | |
|---|---|
| Developer | OCamlPro |
| Written in | OCaml |
| Available in | English |
| Type | Mathematical solver, program verifier |
| Website | alt-ergo |
| Repository | |
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 began in 2006 at the Laboratoire de Recherche en Informatique (LRI), a joint CNRS/Inria unit, at what is now Paris-Saclay University.[1] Since 2013 it has been maintained, developed and distributed by the Formal Methods team at OCamlPro.[2] It is released under the free and open-source software CeCILL-C license.
History
[edit]The first version of Alt-Ergo was released in 2006. Its architecture was shaped by deductive program verification tools, and it uses a native input language for polymorphic first-order logic that is not compliant with SMT-LIB.[3] OCamlPro announced its support and distribution of the solver in September 2013.[2]
Notable releases include:
- 2.1.0 (2018): a conflict-driven clause learning (CDCL) SAT solver became the default Boolean reasoner, replacing the earlier tableaux-like approach.[4]
- 2.2.0 (2018): a new experimental front-end supporting SMT-LIB 2 with a conservative extension for prenex polymorphism.[1][3]
- 2.4.0 (2021): support for the incremental commands
pushandpopfrom the SMT-LIB standard, and the.aefile extension for the native syntax.[5] - 2.5.0 (2022–2023): generation of counterexample models, on a best-effort basis and initially limited to linear arithmetic and enumerated types.[6]
- 2.6.0 (September 2024): a new relational theory for bit vectors, improvements to the floating-point theory, and the Dolmen library as the default front-end. The release followed an acceleration of development under the DéCySif research project, a collaboration of AdaCore, Inria, OCamlPro and TrustInSoft.[7]
As of October 2026 the project website lists version 2.6.3 (14 April 2026) as the latest release.[8]
Technologies
[edit]Design choices
[edit]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
[edit]The core architecture of Alt-Ergo comprises three main elements: a depth-first search (DFS)-based SAT solver, a quantifier's 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.
Alt-Ergo's native language is a polymorphic first-order logic in the style of ML, and the solver also accepts SMT-LIB v2 input.[8] Since version 2.1.0 its Boolean reasoning has been performed by a CDCL-based SAT solver by default.[4]
Built-in theories
[edit]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
Licensing and support
[edit]Alt-Ergo's current releases are distributed under the OCamlPro Non-Commercial License, intended for research and evaluation. Releases are made available under an open-source license after a delay of a few years, published as the alt-ergo-free package, while the current version is the alt-ergo package on opam.[8] OCamlPro offers commercial support to industrial users and funds development partly through the Alt-Ergo Users' Club, a group of supporting organisations.[8] A JavaScript version, Try-Alt-Ergo, runs directly in a web browser.[8]
Industrial uses
[edit]Several verification platforms are built on Alt-Ergo:
- Why3, a platform for deductive program verification, uses Alt-Ergo as main prover[9]
- CAVEAT, a C-verifier developed by CEA and used by Airbus. Alt-Ergo was involved in a DO-178C qualification process led by Airbus, during which a qualification kit was produced.[2]
- Frama-C, a framework to analyse C-code, uses Alt-Ergo in the Jessie and WP plugins (dedicated to deductive program verification)[10]
- 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 ANR Bware project benchmarks)[11]
- Rodin, a B-method framework developed by Systerel, can use Alt-Ergo as a back-end
- Cubicle, an open source model checker to verify safety properties of array-based transition systems
- EasyCrypt, a toolset for reasoning about relational properties of probabilistic computations with adversarial code
- BWARE[12]
- Cafein[12]
- FUI Hi-Lite[12]
- Decert[12]
- ADT Alt-Ergo[12]
- A3PAT[12]
- TrustInSoft Analyzer, a static analysis tool, and Frama-C use Alt-Ergo as one of their solvers.[7]
See also
[edit]References
[edit]- 1 2 "Release of Alt-Ergo 2.2.0". OCamlPro. 23 April 2018. Retrieved 8 October 2026.
- 1 2 3 "Alt-Ergo @ OCamlPro: Two months later". OCamlPro. 2 October 2013. Retrieved 8 October 2026.
- 1 2 Conchon, Sylvain; Coquereau, Albin; Iguernlala, Mohamed; Mebsout, Alain (2018). Alt-Ergo 2.2. SMT Workshop 2018: International Workshop on Satisfiability Modulo Theories. Retrieved 8 October 2026.
- 1 2 "Release of Alt-Ergo 2.1.0". OCamlPro. 15 March 2018. Retrieved 8 October 2026.
- ↑ "Release of Alt-Ergo 2.4.0". OCamlPro. 22 January 2021. Retrieved 8 October 2026.
- ↑ "Alt-Ergo: the SMT solver with model generation". OCamlPro. 16 November 2022. Retrieved 8 October 2026.
- 1 2 "Alt-Ergo 2.6 is Out!". OCamlPro. 1 September 2024. Retrieved 8 October 2026.
- 1 2 3 4 5 "Alt-Ergo: An SMT Solver for Software Verification". OCamlPro. Retrieved 8 October 2026.
- ↑ "Why3". why3.lri.fr. Retrieved 15 June 2023.
- ↑ Dordowsky, Frank (2015). "An Experimental Study Using ACSL and Frama-C to Formulate and Verify Low-Level Requirements from a DO-178C Compliant Avionics Project". Electronic Proceedings in Theoretical Computer Science. 187: 28–41. arXiv:1508.03894. doi:10.4204/EPTCS.187.3.
- ↑ Conchon, Sylvain; Iguernelala, Mohamed (2014). "Tuning the Alt-Ergo SMT Solver for B Proof Obligations". Abstract State Machines, Alloy, B, TLA, VDM, and Z (ABZ 2014). Lecture Notes in Computer Science. Vol. 8477. Springer. pp. 294–297. doi:10.1007/978-3-662-43652-3_27.
- 1 2 3 4 5 6 "The Alt-Ergo Theorem Prover: Academic Web Page". alt-ergo.lri.fr. Retrieved 15 June 2023.
External links
[edit]- Official website, OcamlPro
- Alt-Ergo at LRI