Skip to content

Releases: ultimate-pa/ultimate

v0.2.4

24 Nov 11:15
Compare
Choose a tag to compare
v0.2.4 Pre-release
Pre-release

SV-COMP 2024 version

v0.2.2

24 Nov 10:20
Compare
Choose a tag to compare
v0.2.2 Pre-release
Pre-release

SV-COMP 2022 version.

v0.2.3

23 Dec 22:36
Compare
Choose a tag to compare
v0.2.3 Pre-release
Pre-release

SV-COMP 2023 version

v0.2.1

03 Dec 11:01
Compare
Choose a tag to compare
v0.2.1 Pre-release
Pre-release

SV-COMP 2021 version.

v0.1.25

28 Nov 12:58
Compare
Choose a tag to compare
v0.1.25 Pre-release
Pre-release

SVCOMP 2020 version.

v0.1.24

28 Nov 14:26
Compare
Choose a tag to compare
v0.1.24 Pre-release
Pre-release

SVCOMP 2019 version.

v0.1.23

09 Jan 20:55
Compare
Choose a tag to compare
v0.1.23 Pre-release
Pre-release

Note: I did not finish the release notes, but this version is the one used in SV-COMP18 and should therefore be used as the current version.

v0.1.22

07 Oct 06:25
Compare
Choose a tag to compare
v0.1.22 Pre-release
Pre-release

Bugfixes

  • various bugfixes and improvements to VpDomain (see #239)
  • various bugfixes and improvements to TreeAutomizer
  • fixed a bug in non-relational domains concerning COMPNEQ by rewriting expressions. When in an expression expr = expr1 != expr2 the COMPNEQ operator is encountered, the expression is rewritten to expr = expr1 == !expr2 in all abstract domains (if dealing with boolean results).
  • re-fixed another bug in non-relational domains evaluators.

Plumbing

  • improved performance of Hopcroft tree minimization by working only on partitions instead of also holding a relation
  • updated SMTInterpol to 2.1-404-g5f835ca

Known Issues

  • README and Website usage instructions outdated (see #135)
  • Startup with generated binary ./Ultimate stalls if no X display is available

v0.1.21

06 Oct 15:25
Compare
Choose a tag to compare
v0.1.21 Pre-release
Pre-release

Features

  • new equality domain (VPDomain) that uses weak equivalences and congruence closures (see #159, #224, #162)
  • InvariantSynthesis now supports algorithm that guesses danger invariants
  • support for reading Floyd-Hoare automata from files
  • preliminary support for reuse of Floyd-Hoare automata (regression verification)
  • now using cell precision for arrays in fault localization
  • new auotmaton operation Relabel: Relabel replaces the labels of all states with numbers. If several operations are executed in a row the names of the states can become very long (and cause OOMs). This operation will give you shorter strings.
  • options for output of statistics as .csv file during normal runs (closes #190)
  • preliminary version of random tree automata generator
  • Ultimate version now also contains the git hash and a modifier if the repository is dirty; the version is printed in CLI and GUI frontends
  • IRD quantifier elimination now uses anti-DER rule

NCSB complementation of (non-deterministic) Büchi automata:

  • integrated new NCSB implementations
  • add support for LazyS optimization to NCSB implementation
  • use new NCSB algorithms in RefineBuchi
  • LazyS optimization for original BuchiComplementNCSB operation
  • BuchiDifference for simple and lazy NCSB

Bugfixes

  • various bugfixes for TreeAutomizer (see #210, #143)
  • fixed bug that lead to a crash when interpreting an .ats file with a TreeAutomaton that contained unused symbols in its alphabet
  • fixed a bug in CrossProducts.binarySelective(...)
  • fixed a bug in ThreeValuedEquivalenceRelation (see #234)
  • various fixes to ElimStorePlain
  • fix nontermination by not computing differences if abstraction is already empty
  • fix bug in AffineTerm: omit zero in RHS if you bring variable to RHS
  • fix bug in fixpoint check for lassos with auxvars (closes #220)
  • various bugfixes and improvements to different loop acceleration modes
  • fix script dumping for SpaceExParser
  • fixed a bug during prelog generation by explicitly specifying the classloader to prevent failures under different classloaders (e.g., during maven or inside tomcat)
  • fixed NPE in backtranslation (if there is no C function, use the boogie name instead of crashing) (closes #215)
  • fixed a bug in nonrelational domains of abstract interpretation where renameVariables() did not rename variables.

Plumbing

Utilities

  • optimization of UnionFind.union(...) -- should run in amortized logarithmic time
  • updated ThreeValuedEquivalenceRelation s.t. it can detect contradictions now
  • reworked CongruenceClosure implementation
  • UnionFind now takes a comparator as parameter and ensures that representatives are always minimal elements in their equivalence class with respect to the given comparator
  • add auxiliary method that computes the "guarded havoc"
  • merged utility classes SetOperations and DataStructureUtils, using the intersection implementation of DataStructureUtils (~20% faster)

Conventions and naming

  • constants of auxVars get the c_aux_ prefix
  • renamed UltimateCore to de.uni_freiburg.informatik.ultimate.core
  • renamed TraceChecker to TraceCheck (closes #229)

SMT and "Ultimate normal form"

  • now using Rational instead of BigInteger and BigDecimal in many places (should be the default way of representing constants)
  • now using negated equality instead of "distinct" in Term
  • added various checks that new terms are in Ultimate normal form
  • now using SmtUtils instead of Util in all places
  • new methods for simplification of and/or
  • `´SmtUtils`` now has a flag that controls extended location simplifications (combating useless simplifications)
  • new feature for SimplifyDDA: Allow to simplify a term with respect to a given context.
  • add method that can transform SMT-Terms given as strings into our Term data structure (very useful for unit tests)
  • extend util function for equalities by a simplification that eliminates self-updates of arrays

CEGAR and refinement engine

  • refactored CEGAR loop
  • use refinement engine for the non-Büchi refinements in termination analysis
  • refinement strategies can now specify their own interpolant acceptance threshold (closes #226)

Abstract interpretation

  • removed IBoogieVar, add getSort() to IProgramVarOrConst, removed VARDECL from abstract interpretation (closes #222)
  • add renameVariable to IAbstractState and implement it for most domains except SMTTheory and VpDomain
  • add IAbstractState.evaluate(...) and pretty inefficient default implementation
  • add methods to IAbstractDomain that will be called before and after fixpoint computation
  • more precise calculations in nonrelational domains of abstract interpretation

Misc

  • CACSL2BoogieTranslatorObserver now tolerates other models
  • TimeoutResults now display long descriptions
  • add BoogieModSetAnnotator to test dependencies
  • move CDTDecorator to CDTParser (required for multiparse, see #37, #38)
  • add option that hides backtranslation warnings in BoogiePreprocessor
  • change build properties s.t. all projects use workspace build properties
  • add new library as dependency of Library-Automata: trove 3.0.3
  • updated SMTInterpol to 2.1-397-g31e711a0

Known Issues

  • README and Website usage instructions outdated (see #135)
  • Startup with generated binary ./Ultimate stalls if no X display is available
  • The SMTInterpol version used in this release contains some unsoundness bugs

v0.1.20

02 Aug 14:59
Compare
Choose a tag to compare
v0.1.20 Pre-release
Pre-release

Features

Change of default settings

  • logic for auxiliary solver becomes ALL
  • do not bring TransFormulas in CNF
  • ICFG does partial skolemization by default

Misc

  • support for computation of danger invariants in InvariantSynthesis plugin
  • optimization for auxiliary bitvector equality method
  • added entry and exit functions to violation witnesses (closes #113)
  • improve assertion order modulation in strategies that use them by counting already analyzed path programs and saving/logging trace hashes for debugging (closes #204)
  • new abstract interpretation domain SMTTheoryDomain - a domain based on predicate transformer and SMT solver calls.

Solver update

  • Now using MathSat5 nightly build 84cb666a6c83 (Jul 12 2017)

Bugfixes

  • various bugfixes, e.g. in TermVariableRenamer and LassoRankerStarter, renaming of variables to constants in some SMT operations,
  • fix backtranslation bug: if a procedure without implementation is called, replace the call/return with an fcall and avoid return statement shifting workaround; for C programs without explicit return, remove assertion (closes #205)
  • add support for expressions containing variables with array type in BoogiePreprocessor backtranslator and fix a bug where struct types where not treated as intended
  • fix bug in IcfgTransformer that lead to new return transitions being created before the corresponding call transition was created (closes #207)
  • fix IndexOutOfBounds exception in backtranslation (closes #209)
  • fix not considering AutomataScriptInterpreterOverallResult in overall result message (closes #6)
  • bugfix SSD quantifier elimination
  • fix Overapprox annotation being unmergeable (closes #189)
  • fix bug that lead to different .csv files during testing by using AbstractCegarLoop.Result in CodeCheck instead of redefining own enum (closes #200)

Plumbing

  • new data structure for an equivalence relation with a ternary membership status (equal, not equal, unknown)
  • use actual hierachical prestate in AbstractInterpretation soundness check instead of stateafterleaving
  • use monteverdi nexus oss repository proxy to prevent build breakage due to high load on eclipse p2 repositories
  • introduced IRankedLetter interface: every letter in a TreeAutomaton's alphabet now needs to have an explicit rank;
  • moved helper files for TreeAutomizer from modelcheckerutils/hornutil to its own library Library-TreeAutomizer
  • add new auxiliary method (distinct) to SmtUtils

Known Issues

  • README and Website usage instructions outdated (see #135)
  • Startup with generated binary ./Ultimate stalls if no X display is available