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 int
type T = subrange [N,*] of int
Improvements:
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
--compile
Mode-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.