v0.1.10
Pre-release
Pre-release
Features
C translation
- add support for "division by zero"-check for Float types (closes #137)
- add support for Float types on heap (pointers, globals)
- add support for
__builtin_bswap32
and__builtin_bswap64
via overapproximation
Automata library
- added option to unify objects in
AutomataScriptParser
The states and letters in automata are not unified when parsed from a file. That means there are a lot of String duplicates, which wastes memory and can become a bottleneck for very large automata. Currently only nested word automata can be unified. Tests have shown that there is no impact in runtime for small automata. The setting is not the default for now. NwaApproximateXsimulation
gets flag to ignore successors
With this optinal flag (default true) set to false, successors are not considered. What remains is optional separation of accepting and non-accepting states and states with different symbols.
Taipan / Abstract Interpretation
- new
HoareTripleChecker
based on abstract interpretation post operator (closes #109) - use
PathProgram
instead ofNWAPathProgramTransitionProvider
in Taipan's path program analysis (closes #82)
Statistics
- count number of variables in abstract states
- more/better runtime information for some minimization operations
- add solver statistics inside statistics method
- only compute minimization statistics if result is available
Misc
- when using
--help
with CLI, print core and controller options even if no toolchain is supplied - improved
RewriteNotEquals
option of BlockEncoding - ICFG transformation
ModuloNeighborTransformation
is now exact (no overapproximation) PathProgram
now constructs its own symbol table that only contains symbols present in the path program
Bugfixes
Taipan / Abstract Interpretation
- fix
isSubsetOf
in Octagon domain by handling different variable orders (permutated matrices) correctly - fix
merge
bug in octagon domain by correctly consideringisBottom()
- fix
isSubsetOf
inAbstractMultiState
by consideringisBottom()
correctly - fix toLogString bug
- fix
AbsIntPredicate
in automata problem by ensuring thatBasicPredicate
equals()
function is symmetric for all subclasses; this also implies that only the hashcode of aBasicPredicate
defines equality (closes #141) - fix bug in call handling of
AbsIntHoareTripleChecker
- fix bug that prevented using compound domain with just one domain
- fix bug that produced nullpointer exception instead of timeout in certain situations
- fix non-terminating loop in
getInnermostArrayValueSort()
- fix statistics generation during fixpoint computation
C translation
- fix decimal form conversion in multi-assignments (closes #140)
- bugfix: indicate need for floating types
- bugfixes: order of parameters, bitlength, no indices for fp
- bugfix: support integer and floating in SingleBitprecise
- bugfix: pointer array does not represent primitives
- bugfix for code that puts unions on heap
Automata library
- add timeout check to
FullMultipebbleGameAutomaton
- add extensive timeout checks to NestedWordAutomatonReachableStates
- do not report duplicate statistics in old simulation
- fix: FullMultipebble simulation readout wrong in certain combination
If the asymmetric preprocessing is used instead the symmetric postprocessing, the simulation was not correctly obtained. Those pairs for which (p, q) was an initial pair but (q, p) was not, the method claimed that p ~ q. - bugfix: missing spoiler winning sink selfloop
Misc
- log ignored exceptions in
TraceAbstractionRefinementEngine
- fix term to transformula conversion in SBE
- only rewrite equalities of ints and reals (<, <=, >, >= are not defined on arrays, bitvectors and floats need more work)
- use Exception instead of assert in pathinvariants (without -ea we obtained wrong results)
- escape illegal sequences in backtranslation
- bugfixes in backtranslation of quantified formulas
- fix: sort enum alphabetically, otherwise CSV concatenation does not work
Plumbing
Taipan / Abstract Interpretation
- throw all unknown exceptions in Taipan instead of supressing them
- use
IcfgEdge
andgetLabel()
in multiple places in abstract interpretation - remove dependency on BoogieSymboltable and remove
ISymbolTableAdapter
workaround
Testing
- add regression tests for Taipan
- add regression tests for tree automaton operations
- add regression tests for Ultimate's handling of floats on the heap
- print assertion status (
-ea
or not) inIncrementalLogWithVMParameters
- new TestResultDecider
SomeVerificationResultTestResultDecider
succeeds if there is any verification result
Misc
- add
toNnf
toSmtUtils
(analogously totoDnf
) and addNNF
to IcfgTransformer (analogously toDNF
) - add additional assert to BasicCegarLoop (automaton states should have identical types)
- add auto-generated visitors and transformers to Boogie AST
- add infrastructure for asserts in auto-generated AST code
- add asserts to Boogie AST that check identifier Strings for validity
- add
OS_IS_WINDOWS
toCoreUtils
- use windows detection to avoid using cvc4 on windows in Taipan
- new data structure
LinkedHashRelation
- support for dumping interprocedural path programs as Boogie code
- add support for pretty-printing
ASTType
- added new shrinker to automatondeltadebugger
- added IPartition to replace UnionFind in automaton minimization
- remove floating point rounding mode
- all random automata library operations get a seed
- moved Rers2016 benchmarks to new benchmark repository ultimate-pa/ultimate-benchmarks.
Known Issues
README and Website usage instructions still outdated (see #135)