Freedom251 › Formal Verification Tools
Boogie

What Boogie is
Boogie is a modeling language and verification tool used as a layer for building program verifiers for other languages. It takes Boogie IVL input, can optionally infer invariants, and generates verification conditions for an SMT solver. Z3 is the default solver; support for CVC5 and Yices2 is experimental. The Civl extension supports models of concurrent and distributed systems. The project lists VCC and HAVOC for C, along with Dafny, Chalice, Spec#, and Move verifiers, as projects built on Boogie. Boogie is self-hosted and distributed as a .NET global tool through NuGet. It requires .NET and a supported SMT solver; the NuGet listing identifies version 3.5.7 as targeting .NET 8.0 or higher. The project is free and licensed under the MIT License. Yices2 works with unquantified fragments such as arrays, arithmetic, and bitvectors, but not with quantifiers, generalized arrays, or datatypes. Users can ask questions and report issues through the project issue tracker, and contribute through pull requests.
Who it suits
Boogie suits developers and researchers building verifiers for other languages or checking contracts with Boogie IVL. It is for users able to work with .NET and a supported SMT solver.
What it does well
- Generates verification conditions for SMT solvers.
- Z3 is the default solver.
- Civl supports concurrent and distributed system models.
- MIT-licensed and free.
- Accepts contributions through pull requests.
What to know first
- Requires .NET and a supported SMT solver.
- CVC5 and Yices2 support is experimental.
- Yices2 does not support several stated fragments.
Limits
Boogie requires .NET and a supported SMT solver. CVC5 and Yices2 support is experimental; Yices2 is limited to unquantified fragments such as arrays, arithmetic, and bitvectors, and does not support quantifiers, generalized arrays, or datatypes.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| Boogie | MIT licensed · requires .NET and a supported SMT solver | Free |
As github.com lists them, read 11 Oct 2026. The maker's own page has the final word.
Getting started
- Visit the Boogie GitHub repository.
- Install the Boogie .NET global tool distributed through NuGet.
- Use .NET and a supported SMT solver; the NuGet listing identifies version 3.5.7 as targeting .NET 8.0 or higher.
- Provide Boogie IVL input to the tool.
- Use Z3 by default, or configure experimental CVC5 or Yices2 support.
Boogie is an intermediate language and verification tool for developers building verifiers for other languages. It is best suited to teams comfortable working with contracts, deductive verification and SMT solvers; it is less direct than a ready-made checker for application code.
Overview
Boogie sits between a verifier and a solver. It accepts Boogie IVL input, can optionally infer invariants, then generates verification conditions for an SMT solver. That makes it a focused foundation for verification workflows rather than a general-purpose program checker.
Projects built on Boogie include Dafny, Chalice, Spec# and Move verifiers; VCC and HAVOC use it for C. These integrations show its role as infrastructure for language-specific verification. If you want to verify code without building or adopting a verifier that targets Boogie, this layer may be more than you need.
Key features
- Deductive verification with contracts: Boogie generates proof obligations from Boogie IVL input. This suits verifier builders who need contract-based reasoning, but requires expressing the work in Boogie's intermediate language.
- Optional invariant inference: The tool can infer invariants when requested, a useful capability in a verification workflow. It does not remove the need to model the program and its properties in Boogie IVL.
- SMT solver integration: Z3 is the default solver. CVC5 and Yices2 support is experimental, so projects that depend on those alternatives should account for a less mature integration. Yices2 works with unquantified fragments such as arrays, arithmetic and bitvectors, but not quantifiers, generalized arrays or datatypes.
- Concurrency modeling: The Civl extension lets users model concurrent and distributed systems. It is relevant when those systems are the verification target, not a substitute for a ready-made checker in a source language.
- Self-hosted distribution: Boogie is distributed as a .NET global tool through NuGet. The NuGet package targets .NET 8.0 or higher, and using the tool requires .NET and a supported SMT solver; users must manage that environment themselves.
Pricing
Boogie is free and MIT-licensed. Its sole plan, Boogie, costs free and includes the MIT-licensed tool, with .NET and a supported SMT solver required. There are no paid tiers or seat and usage caps to weigh; the practical cost is setting up and maintaining the required local dependencies.
Platforms
Boogie supports Linux, macOS and Windows, with self-hosted deployment. Its .NET global-tool distribution makes it a fit for users able to install and manage .NET and an SMT solver on their chosen platform.
Who it's for
Boogie is a strong fit for developers and researchers building program verifiers, or extending a workflow that already uses its IVL and solver model. Its contract support and Civl extension also make it relevant to teams modeling concurrent or distributed systems. For users who want to verify application code directly, a language-specific verifier built on Boogie is likely the more practical route.
Pros and cons
- Pro: Verification-condition generation, contract support and optional invariant inference give verifier builders a defined deductive workflow.
- Pro: The MIT license and free plan allow self-hosted use without a software charge.
- Pro: Civl extends its relevance to concurrent and distributed-system models.
- Con: Boogie IVL is an intermediate language, so using the tool directly requires working below the level of most application languages.
- Con: .NET and a supported SMT solver are prerequisites, and CVC5 and Yices2 remain experimental options.
Alternatives
For other tools in this category, see Formal Verification Tools. Choose Lean if you want a free tool available on Linux, macOS, Windows and the web. Rocq is another free option, available across desktop platforms and the web, with an extension listing as well.
If you need a solver rather than a verification layer, Z3 is a free, MIT-licensed option. cvc5 is also free and open source, though optional GPL-licensed dependencies affect the license of a combined work; Boogie's CVC5 support, by contrast, is experimental.
HOL4, PVS, Why3 and Alloy Analyzer are other options to compare. PVS offers a free noncommercial plan and a commercial plan with custom pricing; its Allegro runtime requires acceptance of a click-through license.
Verdict
Choose Boogie if you are building a verifier around Boogie IVL and want a free, MIT-licensed deductive layer with default Z3 support. Its main advantage is that focused verification role; look elsewhere if you need a direct checker for your programming language or cannot take on the .NET and solver setup.
Verdict
Boogie provides a verification layer with contract support and a default Z3 solver. Adoption requires .NET and a supported SMT solver, while CVC5 and Yices2 support remains experimental.
Questions
How much does Boogie cost?
Boogie is listed as free and is licensed under MIT.
What does Boogie do?
It is a modeling language and tool for building program verifiers for other languages. The tool can infer invariants and generate verification conditions for an SMT solver.
Which solver does Boogie use?
Z3 is the default. CVC5 and Yices2 support is experimental.
What does Boogie require?
It requires .NET and a supported SMT solver. The NuGet listing identifies Boogie 3.5.7 as targeting .NET 8.0 or higher.
How is Boogie installed?
Releases are distributed as a .NET global tool through NuGet.
Where can users get help?
The project directs users to its GitHub issue tracker for questions and issue reports. Contributions are accepted through pull requests.
Facts from Boogie's own pages
- Concurrency
- The Civl extension enables Boogie to model concurrent and distributed systems. · github.com, 11 Oct 2026
- Contributions
- The project accepts contributions through pull requests. · github.com, 11 Oct 2026
- Default solver
- Z3 is the default SMT solver. · github.com, 11 Oct 2026
- Help
- Users can ask questions and report issues on the project's issue tracker. · github.com, 4 Oct 2026
- Installation
- Releases are packaged as a .NET global tool and can be installed with dotnet tool install --global boogie. · github.com, 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, 11 Oct 2026
- License
- Boogie is licensed under the MIT License. · github.com, 11 Oct 2026
- Other solvers
- CVC5 and Yices2 are supported experimentally. · github.com, 11 Oct 2026
- Package framework
- The NuGet listing identifies Boogie 3.5.7 as targeting .NET 8.0 or higher. · nuget.org, 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, 11 Oct 2026
- Requirements
- Boogie requires .NET and a supported SMT solver. · github.com, 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, 11 Oct 2026
- Support
- The project directs users to its GitHub issue tracker to ask questions and report issues. · github.com, 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, 11 Oct 2026
Where Boogie stands on Freedom251
- Formal Verification Tools#4 of 34