Page
Library
Module
Module type
Parameter
Class
Class type
Source
New features:
New IC3 engine based on Implicit (Predicate) Abstraction:
Support for subrange types with an open end:
type T = subrange [*,N] of inttype T = subrange [N,*] of intImprovements:
Add additional non-vacuity check for contract modes.
Changes:
--exit_code_mode option to control exit code convention.New features:
elsif clauses in If-Then-Else constraints.Add dedicated syntax for reachability properties of the form:
check reachable P [from <int>] [within <int>]check reachable P at <int> The modifiers from, within and at allow users to specify a lower and upper bound on the number of execution steps in the witness trace.Add dedicated syntax for conditional properties of the form:
check A provided B--check_reach and --check_nonvacuity that allow users to enable/disable reachability and non-vacuity checks.--print_cex and --print_witness that allow users to enable/disable printing of counterexamples and reachability witnesses.--dump_witness and --dump_deadlock that allow users to dump witnesses and deadlocks to files. Note: Kind 2 already supported the command-line option --dump_cex.Improvements:
Changes:
New backward-incompatible convention for exit codes.
0 for successful checks.--fake_filepath option for LSP server.New features:
Add support for SMT solver Bitwuzla.
Add option --flatten_proof to break down LFSC proofs into a sequence of lemmas.
Improvements:
Fixes and improvements solving machine integer problems:
New features:
Support for new SMT solver cvc5.
A revamp of Kind 2's proof production facility:
Improvements:
New features:
A new implementation of Kind 2's language front-end with:
Internally, the new implementation follows a multi-pass approach more strictly. This should facilitate the extensibility and maintenance of the new front-end. Although we strongly encourage users to use the new front-end, the old front-end can still be enabled for now by passing --old_frontend true to Kind 2.
Improvements:
--print_deadlock, and a flag to (de)activate the satisfiability check of an unrealizable contract, --check_contract_is_sat.Changes:
--enforce_func_congruence is true (default: false).This release includes performance improvements and various fixes. Notably:
--ae_val_use_ctx is false (bug introduced in v1.5.0).--invgen_all_out is true.In addition, this version adds support for a new Visual Studio Code extension for Kind 2.
Thanks to Andreas Katis for his feedback and bug reports.
New features:
--dump_cex).Improvements:
Changes:
Kind 2 now requires:
Thanks to M. Anthony Aiello, Andreas Katis, and Amos Robinson for their feedback and suggestions.
New features:
New option for checking contracts of imported nodes (see documentation).
Improvements:
Improve compositional reasoning about assumptions of called nodes.
Fix and update bounds checking feature for subrange streams.
Changes:
Set check_subproperties flag to true by default.
This release includes performance improvements and various fixes. Notably:
Fix soundness issue in path compression when there are temporal dependencies between input values.
New features:
Invariant generation for machine integers.
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.