It's probably safe to assume (since the project relies on submodules) that the user has git installed, so this will stop configuration rather than display a warning and then stop with a confusing error.
This way you don't have to use Cygwin on Windows to configure cbmc with CMake and allows you to use Windows's native CMake support (assuming git is installed).
SMT-LIB2 function definitions have scopes for the identifiers of the
parameters. The same holds for let expressions.
This was raised in #5143.
The need to make the scoped identifiers unique will be removed once the IR
bindings have scopes.
For languages such as Java, where the `module` field of `symbolt` is
kept empty, maintaining the `internal_symbol_module_map` of the symbol
table can cause a performance bottleneck. This is because all symbols
end up mapped to the same key in this map. So when
`symbol_tablet::erase` attempts to remove a symbol from this map the
lookup results in a range containing the entire collection of symbols on
which it then performs a linear search to find the exact symbol to
remove.
Languages which don't set the `module` field never need to do any
lookups in the module map. The downstream EBMC repository always uses a
non-empty module to do its lookups. Therefore we can leave symbols with
an empty module out of the module map. This results in a performance
improvement for Java, whilst retaining EBMC compatibilty.
The performance improvement was confirmed using a subset of 231 methods
from Tika, which succeeded both with and without the fix and were
overall 216 seconds faster with the fix. With rt.jar on the classpath
(but no class from rt.jar being referenced anywhere), the time for a
trivial method went from around 40 seconds to 6 seconds.
Activate two tests marked FUTURE that can meanwhile be solved by the string
solver. Also adapt tests so they cannot be solved via constant propagation, and
load the models library.
This refactors the SMT2 parser to use hash tables instead of chains of
if()...else if()... for expressions.
This enables extensions, and may have a performance benefit as the number of
expressions grows.
This refactors the SMT2 parser to use hash tables instead of chains of
if()...else if()... for sorts.
This enables extensions, and may have a performance benefit as the number of
sorts grows.
This refactors the SMT2 parser to use hash tables instead of chains of
if()...else if()... for commands.
This enables extensions, and may have a performance benefit as the number of
commands grows.