Pono 2.0: A Versatile SMT-Based Model Checker for Safety and Liveness  
by Áron Ricardo Perez-Lopez, 18 May 2026  

Pono is our open-source, SMT-based model checker. The paper describing its new major release, Pono 2.0: A Versatile SMT-Based Model Checker for Safety and Liveness, received the Best Tool Paper Award at the 27th International Symposium on Formal Methods (FM 2026) in Tokyo. In this post we give an overview of Pono and the major new features in version 2.0.

What Pono does

Model checking automatically determines whether a system, typically a hardware design or a piece of software, satisfies a temporal property. Early symbolic model checkers used binary decision diagrams; later, SAT-based methods took over thanks to their robustness and scalability. SMT solvers take this a step further. They let a model checker reason about systems at the word level, treating a 32-bit register as a single bit-vector instead of 32 separate bits, or a memory as an array of bit-vectors instead of individual wires, and they can also handle infinite-state systems over integers and reals.

Pono takes as input a transition system, given by a set of state variables, a formula describing the initial states, and a formula relating each state to its successor. It then checks either a safety property (every reachable state is good) or, new in version 2.0, a liveness property, i.e., something good eventually happens. (The name “Pono” is Hawaiian for proper, correct, or goodness.)

Pono is solver-agnostic. It talks to SMT solvers through Smt-Switch, our uniform API for SMT solving. By default it uses Bitwuzla for solving and interpolation over bit-vectors and arrays and cvc5 for other theories. It can be used as a command-line tool or as a C++ library. Pono also provides Python bindings, including a pySMT front-end.

Pono is designed for three kinds of uses:

What’s new in 2.0

Since the original release in 2021, Pono has grown considerably. The highlights:

How well does it work?

At the 2025 Hardware Model Checking Competition (HWMCC’25), Pono 2.0 won first place in the word-level array track. In that track it found the most counterexamples, proved the most instances that no other tool proved, and had 100% of its counterexample witnesses confirmed.

In the paper we also compare Pono 2.0 with its predecessor and with the state-of-the-art model checkers nuXmv, AVR, and rIC3:

Try it

Pono and Smt-Switch are released as open source software under the BSD 3-Clause license. You can get Pono on GitHub or run the pre-built container image without compiling anything. Next on our roadmap are support for SystemVerilog designs, the MOXI input language, exporting correctness proofs as witness circuits, and newer liveness algorithms.

For the full story, read the paper.