Skip to content
← All decisions
ADR-0022026-05-18

Kani + proptest, not Halmos, for formal verification

Context
Earlier drafts cited "Halmos" for the 5-invariant CI. The Halmos README confirms it is EVM/Solidity-only.
Decision
Kani for Rust pure-function invariants; proptest for contract-level state behavior.
Alternatives
Certora (rejected: expensive, mainnet only). Manticore (rejected: Solidity bytecode focus). Coq/Lean proofs (rejected: too heavy for the team).
Consequences
Atrium publishes its Kani harnesses publicly. Honest signal: this was a lesson in not citing tools without verifying capability.