Skip to Content

Quint

Executable specs for reliable systems

Feel more confident about your code (human written or AI-generated)

Quint logo

Executable

Quint
checked names and types
executable
English & Markdown
not checked
not executable

Abstract

Quint
define only what matters
Programming Languages
define how things happen, in detail

Modern

Quint
familiar syntax
CLI and your editor
Existing Spec Languages
math-y syntax
old GUI tools
bank.qnt
/// A state variable to store the balance of each account var balances: str -> int pure val ADDRESSES = Set("alice", "bob", "charlie") action withdraw(account, amount) = { // Decrement balance of account by amount balances' = balances.setBy(account, curr => curr - amount) } // ... /// Invariant: Account balances should never be negative val no_negatives = ADDRESSES.forall(addr => balances.get(addr) >= 0 )

$ quint run bank.qnt --invariant=no_negatives
An example execution: [State 0] { balances: Map("alice" -> 0, "bob" -> 0, "charlie" -> 0) } [State 1] { balances: Map("alice" -> -63, "bob" -> 0, "charlie" -> 0) } [violation] Found an issue (44ms). Use --seed=0x4e85b3a53f7ef to reproduce. Use --verbosity=3 to show executions. error: Invariant violated

Can you spot the bug? Quint can

Quint is ready to use

The following projects already have Quint specifications

and your project could too

CometBFT Gossip (Flood)

CometBFT (Informal)

CometBFT Mempool

CometBFT (Informal)

Minimmit

commonware

MonadBFT

Category Labs

Neutron DeX

Neutron

Neutron Drop

Neutron

Tendermint Consensus

Tendermint

Timewave Vault

Neutron

Universally Composable Security

Quint

Executable specs for reliable systems

Need Help Getting Started with Quint?

Quint is free and open source (Apache 2.0). We offer a 1-hour free consultation to discuss your project, answer questions, and help you evaluate if executable specifications are right for your team. If there's a fit, we can explore ways to support your adoption journey.

Last updated on