Releases: ultimate-pa/ultimate
Releases · ultimate-pa/ultimate
v0.3.0
SV-COMP 2025 version
What's Changed
- Migrate Ultimate to Java 21 and update framework components by @bahnwaerter in #672
- Support atomic functions by @schuessf in #657
- Backtranslate Boogie to ACSL, fix backtranslation issues by @schuessf in #662
- Proof Refactoring by @maul-esel in #671
- Let AtomicBlockInfo use more precise types by @Heizmann in #677
- Support witnesses with ghost variables by @schuessf in #653
- Let BlockEncodingV2 preserve loop heads by @Heizmann in #682
- Support more standard functions by @schuessf in #683
- Fix translation of atomic functions by @schuessf in #685
- Fix translation of _builtin*_overflow functions by @schuessf in #684
- Backtranslation of contracts with handling of "modifies" clause by @maul-esel in #687
- Support
__atomic_compare_exchangeby @maul-esel in #689 - Support atomic types by @schuessf in #688
- Refactor: Use appropriate control configurations in trace checks by @maul-esel in #692
- [GemCutter] Commutativity Condition Synthesis by @maul-esel @ebbima in #696
- Add new IcfgBuilder by @NiklasKult @Heizmann in #690
- Support YAML violation witnesses by @HelenAnnaMeyer @schuessf in #680
- Use assert orders for Craig_TreeInterpolation by @Heizmann in #697
Full Changelog: v0.2.4...v0.3.0
v0.2.4
SV-COMP 2024 version
v0.2.2
SV-COMP 2022 version.
v0.2.3
SV-COMP 2023 version
v0.2.1
SV-COMP 2021 version.
v0.1.25
SVCOMP 2020 version.
v0.1.24
SVCOMP 2019 version.
v0.1.23
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
Bugfixes
- various bugfixes and improvements to
VpDomain(see #239) - various bugfixes and improvements to
TreeAutomizer - fixed a bug in non-relational domains concerning
COMPNEQby rewriting expressions. When in an expression expr = expr1 != expr2 theCOMPNEQoperator 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
SMTInterpolto 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
Features
- new equality domain (
VPDomain) that uses weak equivalences and congruence closures (see #159, #224, #162) InvariantSynthesisnow 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
CongruenceClosureimplementation UnionFindnow 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
UltimateCoretode.uni_freiburg.informatik.ultimate.core - renamed TraceChecker to TraceCheck (closes #229)
SMT and "Ultimate normal form"
- now using
Rationalinstead 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
SmtUtilsinstead ofUtilin 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, addgetSort()toIProgramVarOrConst, removedVARDECLfrom abstract interpretation (closes #222) - add
renameVariableto 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
CACSL2BoogieTranslatorObservernow tolerates other modelsTimeoutResultsnow display long descriptions- add
BoogieModSetAnnotatorto test dependencies - move
CDTDecoratortoCDTParser(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
SMTInterpolto 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