An SMT Solver for Software Verification

Alt-Ergo is an automatic prover of mathematical formulas used behind software verification tools such as Frama-C, SPARK, Why3, Atelier-B and Caveat.

Try Online Install Documentation The Alt-Ergo Users' Club
The DéCySif joint project Services Publications

Latest News


  • Sep 24, 2024 Release of Alt-Ergo 2.6.0.
  • Oct 18, 2023 Release of minor version 2.5.2.
  • Sep 14, 2023 Release of minor version 2.5.1.
  • Sep 6, 2023 Release of version 2.5.0.
  • Apr 27, 2023 Release of minor version 2.4.3.
  • Nov, 2022 Launch of the the DéCySif R&D joint project.
  • Aug 01, 2022 Release of minor version 2.4.2.
  • May 20, 2022 Version 2.3.3 becomes Alt-Ergo-Free 2.3.3.
  • Jul 27, 2021 Release of minor version 2.4.1.
  • Jan 22, 2021 Release of version 2.4.0.
  • Aug 19, 2020 Release of minor version 2.3.3.
  • Jun 2, 2020 Version 2.2.0 becomes Alt-Ergo-Free 2.2.0.
  • Mar 25, 2020 Release of minor version 2.3.2.
  • Feb 19, 2020 Release of minor version 2.3.1.
  • Feb 14, 2020 Second annual meeting of the Alt-Ergo users's club.
  • Jul 7, 2019 Participation to the SMT-COMP : results.
  • Feb 13, 2019 First annual meeting of the Alt-Ergo users's club.
  • More news Find out more.

About

What is Alt-Ergo ?


Alt-Ergo is an open-source automatic solver of mathematical formulas designed for program verification. It is based on Satisfiability Modulo Theories (SMT). Solvers of this family have made impressive advances and became very popular during the last decade. They are now used is various domains such as hardware design, software verification and formal testing.


What is Alt-Ergo Good for ?


Alt-Ergo is very successful for proving formulas generated in the context of deductive program verification. It was originally designed and tuned to be used by the Why platform. Currently, it is used as a back-end of different tools and in various settings, in particular via the Why3 platform. For instance, the Frama-C suite relies on it to prove formulas generated from C code, and the SPARK toolset uses it to check formulas produced from Ada programs. In addition, Alt-Ergo is used to prove formulas issued from B modelizations and from cryptographic protocols verification. The figure given below shows the main tools that rely on Alt-Ergo to prove the formulas they generate.

Alt-Ergo Spider Web


You are using Alt-Ergo in another context/tool not cited above ? Let us know !


Under the Hood


Alt-Ergo's native input language is a polymorphic first-order logic "à la ML" modulo theories. This logic is very suitable for expressing formulas generated in the context of program verification. It also provides a support of the SMT-LIB v2 standard input format. Currently, Alt-Ergo is capable of reasoning in the combination of the following built-in theories:

  • the free theory of equality with uninterpreted symbols,
  • linear arithmetic over integers and rationals,
  • fragments of non-linear arithmetic,
  • polymorphic functional arrays with extensionality,
  • enumerated datatypes,
  • record datatypes,
  • associative and commutative (AC) symbols,
  • fixed-size bit-vectors with concatenation and extraction operators.

Origins


Alt-Ergo results from academic researches conducted conjointly at Laboratoire de Recherche en Informatique, Inria Saclay Ile-de-France and CNRS since 2006. Publications and theoretical foundations are available on its academic web page. Since September 2013, Alt-Ergo is maintained and distributed by the OCamlPro company. Academic researches are now conducted in collaboration with the VALS team of LRI.

Université Paris-Sud LRI INRIA Saclay Ile-de-France CNRS
See publications on Alt-Ergo back then at lri.fr, now Laboratoire Méthodes Formelles (CNRS-Inria).

The DéCySif joint research project


DéCySif is a regional R&D project that aims at improving the safety and security of critical systems using formal verification tools. The project is funded by an i-Démo call and the Ile-de-France French Region, gathering 4 partners: AdaCore, Inria, OCamlPro and TrustInSoft.

Le projet DéCySif
See the DéCySif project's website

Online Version


Try-Alt-Ergo is a Javascript version of Alt-Ergo that runs directly in your browser. You don't need to install anything to start using it.


New Try-Alt-Ergo Blogpost Alt-Ergo Syntax Documentation

The Javascript version is also used as a backend prover in TryWhy3.

Old Version

Try-Alt-Ergo Small Tutorial

Releases

Alt-Ergo is released either under OCamlPro Non-Commercial License (alt-ergo on Opam), either under an Open-Source License with a few years' delay (alt-ergo-free on Opam).

Latest Release


The latest release of Alt-Ergo is version 2.6.0. It was released in September 24, 2024. It is available under the terms of the following license.

Please, follow the links below to download Alt-Ergo, to report a bug, or to ask a question. You may also want to read the CHANGES or see our documentation.

Sources & Binaries


(follow instructions in here to install Alt-Ergo)

github.com/OCamlPro/alt-ergo/tree/v2.6.0

alt-ergo-v2.6.0.tar.gz

Miscellaneous


Commercial Support

Bugs tracker

 

 

OPAM package(s)


$ opam install alt-ergo



Latest Free Release


Alt-Ergo-Free version 2.3.3 was released in May 20, 2022. It is based on Alt-Ergo version 2.3.3, and is available under the terms of the Apache Software License version 2.0.

Sources & Binaries


(follow instructions in INSTALL.md)
github.com/OCamlPro/alt-ergo/tree/2.3.3-free
alt-ergo-free-2.3.3.tar.gz
 

OPAM package(s)


$ opam install alt-ergo-free.2.3.3



Releases History


version 2.6.0 released Sep 24, 2024
version 2.5.2 released Oct 18, 2023
version 2.5.1 released Sep 14, 2023
version 2.5.0 released Sep 6, 2023
version 2.4.3 released Apr 27, 2023
version 2.4.2 released Aug 01, 2022
version 2.4.1 released July 27, 2021
July 27, 2021 free version 2.3.0 released
version 2.4.0 released January 21, 2021
version 2.3.3 released August 19, 2020
June 2, 2020 free version 2.2.0 released
version 2.3.2 released March 25, 2020
version 2.3.1 released February 19, 2020
February 13, 2019 free version 2.0.0 released
version 2.3.0 released February 11, 2019
version 2.2.0 released April 21, 2018
version 2.1.0 released March 14, 2018
version 2.0.0 released November 14, 2017
version 1.30 released November 21, 2016
public release 1.01
(based on v. 1.00)
February 16, 2016
February 09, 2016 private release 1.20
October 19, 2015 private release 1.10
January 29, 2015 private release 1.00
public release 0.99.1
(based on v. 0.99)
December 30, 2014
January 01, 2014 private release 0.99
public release 0.95.2 September 20, 2013
Alt-Ergo@OCamlPro
public release 0.95.1 March 05, 2013
public release 0.95 January 11, 2013
public release 0.94 December 02, 2011
. . .

The Alt-Ergo Users' Club

What is the Alt-Ergo Users' Club?


The Alt-Ergo Users' Club was launched in 2019, as a way for the Alt-Ergo team to get closer to their users, collect their needs, integrate them in the Alt-Ergo roadmap, and ensure sustainable funding for this project's long-term development.

We are proud to thank the members of the Club for their support: AdaCore, CEA List, Thalès, TrustInSoft and MERCE (Mitsubishi Electric R&D Centre Europe), as well as the Why3 team.

adacore logo trust-in-soft logo thales logo mitsubishi logo cea list logo

Roadmap of the 2.6.0 release


  • Support for optimization in models of LIA and LRA theories;
  • Ground model checking;
  • Support for the float theory of the SMT-LIB standard;
  • Improve constants propagation for partially interpreted functions.

Join the Club


  • Custom licensing
  • Dedicated support
  • Priority given to your needs
Join The Club!

Services

Alt-Ergo @ OCamlPro


OCamlPro is investing a lot of time to develop and maintain the Alt-Ergo theorem prover. The aims of this effort are, among others:

  • delivering worldwide and academia users an efficient open source SMT solver for software verification within a basic support to learn how to use it;
  • providing a quality industrial support for developers and industrial users in order to get the best performances from the solver.

Our clients will have access to the sources of the latest private releases. They will also benefit from our services such as extended developer/production support, dev-on-demand, and re-licensing. Feel free to contact us for more details.

World-Wide Users


  • sources of latest releases
  • mailing list
  • bugs tracker
  • basic support

Industrial Support


  • dedicated releases
  • developers discussion list
  • developers / production support
  • re-licensing
  • front-line interaction with retailers
  • freezing / maintaining versions
  • qualification kit
  • dev-on-demand


Formal Methods


You have a problem related to formal methods ? You don't know if Alt-Ergo is suitable for your situation ? We can help you to determine the better technology to use for your need.

You are involved in a promising R&D project and you are looking for partners in the field of formal methods ? Our experienced R&D engineers will be happy to contribute to the success of your project. Feel free to contact us to see how we can collaborate.

History


  • Nov, 2022 Launch of the DéCySif Project.
  • Jan 21, 2021 Release of version 2.4.0.
  • Feb 13, 2019 First annual meeting of the Alt-Ergo users's club.
  • Feb 13, 2019 Version 2.0.0 becomes Alt-Ergo-Free 2.0.0.
  • Feb 11, 2019 A small recap of what we have done in 2018.
  • Feb 11, 2019 Release of version 2.3.0. See the main CHANGES.
  • April 21, 2018 New release (version 2.2.0) with an experimental support for (a polymorphic extension of) SMT-LIB 2.
  • Mar 14, 2018 New release (v. 2.1.0) with the CDCL solver as a default SAT engine.
  • Nov 14, 2017 New release (v. 2.0.0) with support for floating-point arithmetic.
  • Nov 21, 2016 New release (v. 1.30) with experimental support for models generation.
  • Feb 16, 2016 New public release: private version 1.00 becomes public release 1.01.
  • Feb 09, 2016 A new private version (1.20) and its Javascript version are released.
  • Jan 29, 2015 A new major private release (version 1.00) of Alt-Ergo is released.
  • Jul 15, 2014 Here is a small tutorial about "try Alt-Ergo".
  • Feb 10, 2014 Discover our development/release process scheme !
  • Feb 07, 2014 The latest public release is now available on a Github repository.

Related Publications