Pre-release

@danieldietsch danieldietsch released this Jan 9, 2018 · 1879 commits to dev since this release

Assets 5

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.

Pre-release

@danieldietsch danieldietsch released this Oct 7, 2017 · 2569 commits to dev since this release

Assets 5

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
Pre-release

@danieldietsch danieldietsch released this Oct 6, 2017 · 2635 commits to dev since this release

Assets 5

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
Pre-release

@danieldietsch danieldietsch released this Aug 2, 2017 · 3373 commits to dev since this release

Assets 5

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
Pre-release

@danieldietsch danieldietsch released this Jul 11, 2017 · 3522 commits to dev since this release

Assets 5

Features

Automata Library

  • added union operation
  • added isFinite operation

Misc

  • first working prototype of EQ domain with array support (see #159, #195)
  • preliminary implementation of HeapSeparator in IcfgTransformation (see #197)
  • preliminary support for error automata in Ultimate Automizer (see #182)
  • support for new requirements pattern InitializationPattern: Allows to specify types of variables s.t. former atomic propositions are not atomic anymore
  • totalize now supports nondeterministic automata
  • unsat-core-free relevance computation now also for call and return

Bugfixes

TreeAutomizer

  • fix to HCHoareTripleChecker (in order to fix generalization of interpolant automata in TreeAutomizer) some cleanup

Misc

  • fix backtranslation of to_fp (closes #198)
  • prevent multiple windows from appearing by not using a parent for the dialog (closes #196)
  • fix: fault localization should compute error pre-/postcondition
  • fix srParse test cases
  • fix small bug in IcfgTransformerSequence: did not add return transitions last
  • fix bug in icfgtransformation mapelimination: transform both transformulas of a return transition (also, be less verbose)
  • fix bug in absint: futureicfg did check for wrong call/return types
  • omit problematic simplifications for store and select
  • various fixes for LA Mohr and LA Werner

Plumbing

  • add new preferences MAP_ELIMINATION_NO_EQUALITY and MAP_ELIMINATION_EQUALITY to IcfgTransformation
  • Hoare triple checkers are more modular
  • add log levels to ILogger mock
  • add IncrementalImplicationChecker
  • Add more logging output for assertion orders
  • explain relevance information in output

Known Issues

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

@danieldietsch danieldietsch released this Jun 23, 2017 · 3710 commits to dev since this release

Assets 5

Features

  • reappropriate CFGConsoleOut plugin: now prints IIcfg to console

Bugfixes

C to Boogie Translation

  • fixed error "Type missmatch on in-parameters" during C to Boogie translation by using a boogie visitor to decide similarity between function declaration and function definition (does not yet support where-clauses) (closes #186)
  • fixed an error in CACSL2BoogieBacktranslator that resulted in old-var creation were no oldvars should have been (closes #187)
  • fix merge bug in CLocation (wrong merging if one or both of the nodes is null)
  • introduce workaround that adds bvadd for all integer datatypes

Kojak

  • fix multiple assertion errors

Misc

  • fixed various bugs in loop acceleration FastUPR
  • fix TransformedIcfgBuilder: do not convert summaries to internal transitions if summaries have implementations (drop them instead)
  • fixed bug were Util.checkSat() would call pop on dead solvers
  • BoogiePreprocessor now crashes and displays a helpful error message if there is no Boogie model present (closes #193)
  • ReqAnalyzer parser error messages are now shown as expected and not only on stderr
  • removed special handling of true/false state in NondeterministicInterpolantAutomaton. This was probably also a bug in RefineBuchi in mode EagerNondeterminism because the old states were ignored.
  • do not blame SMT solver if Ultimate killed solver because of general timeout
  • bugfix live variables
  • bugfix: cyclomatic complexity, use balls instead off SCCs
  • bugfix: pass old abstraction
  • bugfix: support empty automaton
  • bugfix: mathsat settings
  • bugfix: use PredicateFactoryResultChecking instead of PredicateFactoryRefinement
  • various bugfixes in TreeAutomizer
  • timeout handling in trace checker

Plumbing

Testing

  • moved summaries and logs to library-ultimatetest
  • add method boolean createLogs() to AbstractRegressionTestSuite (overwrite and return true if you want logs for local execution of regression test cases)
  • updated regression test settings for float tests
  • allow more error path names for regression tests that use error paths

Abstract Interpretation

  • introduce useHierachicalPre() in IAbstractDomain that decides whether hierachical pre states or states before leaving are used with a post operator
  • VPDomain overrides useHierachicalPre() (closes #178)

ReqAnalyzer

  • remerge various improvements to Library-srParse (parsing of .req files): Can now handle Boogie expressions instead of only atomic propositions
  • allow specifying IDs for requirements
  • add new requirements pattern

Automata library

  • automata difference: check for simple nondeterminism before useless computations

Misc

  • do not unlet term
  • show warning if simplification was expensive
  • rename BenchmarkResult to StatisticsResult
  • local simplification for store and select
  • Improve performance of "Reachbility Hoare Triple Checks"

Known Issues

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

@danieldietsch danieldietsch released this Jun 2, 2017 · 4033 commits to dev since this release

Assets 5

Features

  • added support for equality in float-real approximation
  • added support for float to int conversion in float-real approximation

Bugfixes

  • recompiled z3 870017e without cpu-specific instructions
  • bugfix: equality of real constants with different value representations

Plumbing

  • rename statistic RUNTIME_TOTAL to RUNTIME_TOTAL_MS

Known Issues

README and Website usage instructions still outdated (see #135)

Pre-release

@danieldietsch danieldietsch released this May 30, 2017 · 4057 commits to dev since this release

Assets 5

Bugfixes

  • fix exception if branch encoders have unexpected length
  • fix an error in loop acceleration woelfing were orphaned returns would be added after acceleration
  • fix: take into account that succInternal() succCall() succReturn() may return null

Plumbing

  • updated Z3 and MathSAT to their current version (see README for the actual versions) (closes #180)

Known Issues

README and Website usage instructions still outdated (see #135)

Pre-release

@danieldietsch danieldietsch released this May 26, 2017 · 4097 commits to dev since this release

Assets 5

Features

  • AutomataScript is now case-sensitive. Operations are named similar to Java in CamelCase (see #179)
  • new MathSAT setting for .epf files and IRefinementStrategy
  • add interactive verification prototype via various new plugins

Bugfixes

Plumbing

Automata Library

  • refactoring automata library: do not store alphabet in three sets, but introduce an visibly pushdown alphabet object ( e4bb2b1 )
  • remove AA_Accept which is just a copy of AA_Accepts
  • add NCSB-based buchi inclusion operation
  • minor change in INwaSuccessorStateProvider API
  • let BuchiComplementNCSB use new on-demand API
  • let SetOfStates provide emtpy stack state
  • let BuchiComplementFKV implement new on-demand API

Misc

  • added generalized version of IPredicate and TransFormula
  • make PredicateTransformer domain-independent for all post operations via IDomainSpecificOperationProvider
  • add getConstants() for predicates
  • remove confusing field (fixes #184)
  • use SmtSortUtils throughout Ultimate (closes #152)
  • try to avoid any INFO logging before the controller takes over
  • add Library-InteractiveModel to ultimate common features
  • extend TransformedIcfgBuilder s.t. it can also be used to add new transformulas to the icfg (not only transform existing ones)
  • refactoring: support several interactive modules in PMaxSAT solver - added new interface for interactive module - former TransitivityGeneralMaxSatSolver became InteractiveMaxSatSolver which supports several modules
  • various refactorings in CEGAR loops (towards error automaton, see #182)

Known Issues

README and Website usage instructions still outdated (see #135)

Pre-release

@danieldietsch danieldietsch released this May 11, 2017 · 4251 commits to dev since this release

Assets 5

Features

write originfile to witnesses (close #166)

Known Issues

README and Website usage instructions still outdated (see #135)