Boogie
What it is
Boogie is a free, open-source modeling language and tool for building program verifiers for other languages. It accepts Boogie language input, can infer invariants when requested, and generates verification conditions for an SMT solver. Z3 is the default solver; CVC5 and Yices2 support is experimental. The Civl extension lets users model concurrent and distributed systems. Boogie is distributed as a .NET global tool through NuGet and requires .NET plus a supported SMT solver. The NuGet listing identifies version 3.5.7 as targeting .NET 8.0 or higher. The project uses the MIT License and supports self-hosted deployment on Linux, macOS, and Windows. Its repository lists VCC and HAVOC for C, along with Dafny, Chalice, Spec#, and Move verifiers, as projects built on Boogie. Yices2 has a narrower stated scope: it works for unquantified fragments such as arrays, arithmetic, and bitvectors, but not quantifiers, generalized arrays, or datatypes. Questions and issue reports go through the project issue tracker, and contributions are accepted through pull requests.
For and against
For
- Free and licensed under MIT.
- Can infer invariants and generate solver conditions.
- Z3 is the default SMT solver.
- Civl supports concurrent and distributed system models.
- Available for Linux, macOS, and Windows.
Against
- Requires .NET and a supported SMT solver.
- CVC5 and Yices2 support is experimental.
- Yices2 does not support quantifiers, generalized arrays, or datatypes.
The verdict
Boogie provides a verification layer with contract support and a default Z3 solver. Its .NET and solver requirements, plus experimental support for alternatives, are key considerations for adoption.
Who it suits
Boogie suits developers and researchers building verifiers for other languages or checking contracts expressed in Boogie IVL. It can also suit teams modeling concurrent or distributed systems with the Civl extension.
Plans and prices
Boogie
MIT licensed · requires .NET and a supported SMT solver
Read 11 Oct 2026 · github.com
On the record
- Concurrency
- The Civl extension enables Boogie to model concurrent and distributed systems.github.com · read 11 Oct 2026
- Contributions
- The project accepts contributions through pull requests.github.com · read 11 Oct 2026
- Default solver
- Z3 is the default SMT solver.github.com · read 11 Oct 2026
- Help
- Users can ask questions and report issues on the project's issue tracker.github.com · read 4 Oct 2026
- Installation
- Releases are packaged as a .NET global tool and can be installed with dotnet tool install --global boogie.github.com · read 11 Oct 2026
- Integrations
- The repository lists VCC and HAVOC for C, and Dafny, Chalice, Spec#, and Move verifiers as projects built on Boogie.github.com · read 11 Oct 2026
- License
- Boogie is licensed under the MIT License.github.com · read 11 Oct 2026
- Other solvers
- CVC5 and Yices2 are supported experimentally.github.com · read 11 Oct 2026
- Package framework
- The NuGet listing identifies Boogie 3.5.7 as targeting .NET 8.0 or higher.nuget.org · read 4 Oct 2026
- Purpose
- Boogie is an intermediate modeling and verification language used as a layer for building program verifiers for other languages.github.com · read 11 Oct 2026
- Requirements
- Boogie requires .NET and a supported SMT solver.github.com · read 11 Oct 2026
- Solver limitation
- The README says Yices2 works for unquantified fragments such as arrays, arithmetic, and bitvectors, but not for quantifiers, generalized arrays, or datatypes.github.com · read 11 Oct 2026
- Support
- The project directs users to its GitHub issue tracker to ask questions and report issues.github.com · read 11 Oct 2026
- Verification tool
- The Boogie tool accepts Boogie programs, can optionally infer invariants, and generates verification conditions for an SMT solver.github.com · read 11 Oct 2026