Skip to content

loonwerks/jkind

Folders and files

NameName
Last commit message
Last commit date

Latest commit

56c46c9 · Jan 21, 2025
Jan 10, 2025
Jul 21, 2020
Oct 5, 2021
Dec 25, 2024
Jan 7, 2025
Dec 25, 2024
Feb 10, 2016
Dec 25, 2024
Feb 3, 2015
Dec 25, 2024
Jan 26, 2015
Jan 6, 2025
Jan 21, 2025
Sep 30, 2021
Dec 25, 2024
Oct 4, 2021
Oct 4, 2021
Sep 24, 2021

Repository files navigation

JKind

JKind is an SMT-based infinite-state model checker for safety properties in Lustre. JKind uses parallel cooperating engines including k-induction, property directed reachability, and template-based invariant generation.

Downloads

JKind is written in Java and requires at least Java 8. The latest release of JKind is available on the releases page. This includes the JKind model checker as well as the JRealizability, JLustre2Excel, and JLustre2Kind tools.

Design Goals

JKind is designed to be cross-platform, reliable, and easy to extend. Power and performance are secondary goals. Additionally, JKind attempts to be mostly compatible with pkind and Kind 2, though this varies over time due to developments in both systems.

Alternative Solvers (optional)

By default, JKind is packaged with SMTInterpol as its underlying SMT solver. Advanced users may wish to install alternative solvers such as Z3, Yices (version 1), Yices 2, CVC4, CVC5, or MathSAT.

Minimal IVCs enumeration (optional)

JKind supports enumeration of All Minimal Inductive Validity Cores (All-MIVCs) to provide a full enumeration of all minimal set of model elements necessary for the inductive proofs of a safety property. Both the offline enumeration (as described in [1]) and the online enumeration (as described in [2]) have been implemented, and the offline enumeration is the algorithm made available for general use. To use the MIVC enumeration, run JKind with the following arguments:

-all_ivcs -solver z3

In addition, use the -timeout argument to limit the time for the enumeration, e.g.,

-timeout 1800

[1] E. Ghassabani, M. W. Whalen, and A. Gacek. Efficient generation of all minimal inductive validity cores. 2017 Formal Methods in Computer Aided Design (FMCAD), pages 31–38, 2017. [2] J. Bendik, E. Ghassabani, M. Whalen, and I. Cerna. Online enumeration of all minimal inductive validity cores. In International Conference on Software Engineering and Formal Methods, pages 189–204. Springer, 2018.

Usage Examples

CVC5 support is added: To use this jkind build with cvc5 on a test suite, navigate to the jkindRegression directory (assuming you have cloned the latest commit first https://github.com/loonwerks/jkindRegression/tree/master) and run JKind from the command line as shown below:

Example:

python3 ./jkindtest.py -dir /home/jkind/testing --recur -argfile ./test_arguments.xml -jkind /home/jkind/jkind/build/libs/jkind.jar

Output:

JKind 4.5.2
Detected solvers: smtinterpol, z3, yices, yices2, cvc4, cvc5

test_result (jktest.testcase./home/jkind/testing/bridge_and_torch.lus)
...