This release includes performance improvements and various fixes. Notably:
New features:
IC3 model checking engine for machine integers.
Support for SMT solvers Boolector and MathSAT.
--only_parse true).Improvements:
Changes:
Removed CZMQ sources and OCaml bindings for CZMQ from the Kind 2 repository.
Replaced old build system with new one based on dune and OPAM.
New features:
Many bug fixes!
This new version features many internal improvements as well as several new features over v1.0.1 (more than 300 commits):
Arithmetic invariant generation: up to v1.0.1, the main invariant generation technique besides the IC3 engine was boolean template-based invariant generation. This technique can discover equalities and implications between predicates over the state variables of the system.
The technique has been extended to arithmetic terms (int and real): Kind 2 can discover equalities and orderings (<=) between arithmetic terms mined from the input system.
The boolean, integer and real template-based invariant generation techniques all come in two flavors: one-state which can only relate terms over the current state, and two-state which can relate terms mentioning the current and the previous state.
Each of them runs as a different process at runtime. By default, only the following are active:
Several features distinct from the actual verification process were introduced in Kind 2 v1.0.0: certification, contract generation, compilation to Rust, and test generation.
These features are now aggregated under the term post-analyses. Most of them have been improved and v1.1.0 introduces a post-analysis: invariant logging. This feature attempts to log strengthening invariants discovered by Kind 2 as a contract.
This new version brings many new features and improvements over v0.8 (more than 800 commits).
NB:
New features:
Assume/guarantee-based contract language with modes as Lustre annotations (see documentation)
Compositional reasoning: --compositional (see contract semantics)
Modular analyses: --modular
--compileMode-based test generation: --testgen
stdin and prints on stdout the boolean values the different parts of the contract evaluate toGeneration of certificates and proofs: --proof and --certif
Contract generation: --contract_gen
Improvements:
--help and --help_of <module>Refer to the user documentation online for more details.
Refer to the user documentation for more details.