All Projects → model-checking → kani

model-checking / kani

Licence: other
Kani Rust Verifier

Programming Languages

rust
11053 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to kani

Software Quality Wiki
Software Quality Wiki
Stars: ✭ 1,991 (+769.43%)
Mutual labels:  verification, model-checking
vscode-tlaplus
TLA+ language support for Visual Studio Code
Stars: ✭ 213 (-6.99%)
Mutual labels:  verification, model-checking
jayhorn
Static checker for Java
Stars: ✭ 54 (-76.42%)
Mutual labels:  verification, model-checking
Tool lists
Links to tools by subject
Stars: ✭ 270 (+17.9%)
Mutual labels:  verification, model-checking
Tlaplus
TLC is an explicit state model checker for specifications written in TLA+. The TLA+Toolbox is an IDE for TLA+.
Stars: ✭ 1,618 (+606.55%)
Mutual labels:  verification, model-checking
Concuerror
Concuerror is a stateless model checking tool for Erlang programs.
Stars: ✭ 277 (+20.96%)
Mutual labels:  verification, model-checking
Seahorn
SeaHorn Verification Framework
Stars: ✭ 270 (+17.9%)
Mutual labels:  verification, model-checking
Vscode Tlaplus
TLA+ language support for Visual Studio Code
Stars: ✭ 152 (-33.62%)
Mutual labels:  verification, model-checking
klever
Read-only mirror of the Klever Git repository
Stars: ✭ 18 (-92.14%)
Mutual labels:  verification, model-checking
ITSTools
A multi-formalism, multi-solution model-checker centered on the language GAL
Stars: ✭ 17 (-92.58%)
Mutual labels:  model-checking
email-checker
Provides email verification on the go.
Stars: ✭ 116 (-49.34%)
Mutual labels:  verification
cafeobj
Development of the CafeOBJ interpreter
Stars: ✭ 25 (-89.08%)
Mutual labels:  verification
pcievhost
PCIe (1.0a to 2.0) Virtual host model for verilog
Stars: ✭ 22 (-90.39%)
Mutual labels:  verification
fphdl
VHDL-2008 Support Library
Stars: ✭ 36 (-84.28%)
Mutual labels:  verification
nnv
Neural Network Verification Software Tool
Stars: ✭ 71 (-69%)
Mutual labels:  verification
fingerprint
Fingerprint is a simple tool that can be used to verify the contents of a directory.
Stars: ✭ 71 (-69%)
Mutual labels:  verification
captcha-generator
An NPM package to generate captcha images that can be used in Discord bots or various other projects
Stars: ✭ 45 (-80.35%)
Mutual labels:  verification
flutter verification code input
Verify code input. You can create a verify code input.
Stars: ✭ 48 (-79.04%)
Mutual labels:  verification
VerifyBlocksView
Android view for providing blocks (Edit Texts) to achieve verification process.
Stars: ✭ 28 (-87.77%)
Mutual labels:  verification
VerificationCode
简单的滑动验证码JS插件 图片验证码
Stars: ✭ 15 (-93.45%)
Mutual labels:  verification

Kani Rust Verifier

The Kani Rust Verifier is a bit-precise model checker for Rust.

Kani verifies:

  • Memory Safety -- even in unsafe Rust code
  • User-specified assertions
  • Absence of panics
  • Absence of some classes of undefined behavior

Installation

Kani must currently be built from source. See the installation guide for more details.

How does Kani work?

You write a proof harness that looks a lot like a test harness, except that you can check all possible values using kani::any():

use my_crate::{function_under_test, is_valid, meets_specification};

#[kani::proof]
fn check_my_property() {
   // Create a nondeterministic input
   let input = kani::any();

   // Constrain it to represent valid values
   kani::assume(is_valid(input));

   // Call the function under verification
   let output = function_under_test(input);

   // Check that it meets the specification
   assert!(meets_specification(input, output));
}

Kani will then prove that all valid inputs produce acceptable outputs, without panicking or executing undefined behavior. We recommend following the tutorial to learn more about how to use Kani.

Security

See SECURITY for more information.

Contributing

If you are interested in contributing to Kani, please take a look at the developer documentation.

License

Kani

Kani is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.

Rust

Kani contains code from the Rust project. Rust is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), with portions covered by various BSD-like licenses.

See the Rust repository for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].