Boogie
Boogie is a modeling language and tool for building program verifiers for other languages.
What Boogie is
Boogie is a modeling language and tool for building program verifiers for other languages. It accepts Boogie language input, can optionally infer invariants, and creates verification conditions for an SMT solver. Z3 is the default solver; support for CVC5 and Yices2 is experimental. The Civl extension lets users model concurrent and distributed systems.
The project is self-hosted and distributed as a .NET global tool through NuGet. It requires .NET and a supported SMT solver, and the NuGet listing identifies Boogie 3.5.7 as targeting .NET 8.0 or higher. Boogie uses the MIT License and is free. The project repository names VCC and HAVOC for C, as well as Dafny, Chalice, Spec#, and Move verifiers, among projects built on Boogie. Yices2 has a defined limitation: it works for unquantified fragments such as arrays, arithmetic, and bitvectors, but not for quantifiers, generalized arrays, or datatypes. Users can raise questions or issues in the project's issue tracker, and contributions are accepted through pull requests.
Good
- Free and licensed under the MIT License
- Z3 is the default SMT solver
- Civl supports concurrent and distributed system models
- Distributed as a .NET global tool
Watch out
- Requires .NET and a supported SMT solver
- CVC5 and Yices2 support is experimental
- Yices2 does not support quantifiers or datatypes
Who it suits
Boogie suits developers building verifiers for other languages or expressing and checking contracts with Boogie input. It may also suit users modeling concurrent or distributed systems through Civl.
Verdict
Boogie provides a verification layer with optional invariant inference and a default Z3 solver. Adoption depends on having the required .NET and solver setup, and alternative solver support remains experimental.
Plans and prices
From Boogie's own pricing page, checked 11 Oct 2026.
| Plan | Price | What it gives you |
|---|---|---|
| Boogie | Free | MIT licensed · requires .NET and a supported SMT solver |
The facts
Each one read from Boogie's own pages, with the date it was checked.
What it does
- Concurrency
- The Civl extension enables Boogie to model concurrent and distributed systems.checked 11 Oct 2026
- Contributions
- The project accepts contributions through pull requests.checked 11 Oct 2026
- Default solver
- Z3 is the default SMT solver.checked 11 Oct 2026
- Help
- Users can ask questions and report issues on the project's issue tracker.checked 4 Oct 2026
- Installation
- Releases are packaged as a .NET global tool and can be installed with dotnet tool install --global boogie.checked 11 Oct 2026
- Integrations
- The repository lists VCC and HAVOC for C, and Dafny, Chalice, Spec#, and Move verifiers as projects built on Boogie.checked 11 Oct 2026
- License
- Boogie is licensed under the MIT License.checked 11 Oct 2026
- Other solvers
- CVC5 and Yices2 are supported experimentally.checked 11 Oct 2026
- Package framework
- The NuGet listing identifies Boogie 3.5.7 as targeting .NET 8.0 or higher.checked 4 Oct 2026
- Purpose
- Boogie is an intermediate modeling and verification language used as a layer for building program verifiers for other languages.checked 11 Oct 2026
- Requirements
- Boogie requires .NET and a supported SMT solver.checked 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.checked 11 Oct 2026
- Support
- The project directs users to its GitHub issue tracker to ask questions and report issues.checked 11 Oct 2026
- Verification tool
- The Boogie tool accepts Boogie programs, can optionally infer invariants, and generates verification conditions for an SMT solver.checked 11 Oct 2026
The full review of Boogie
Boogie is a self-hosted modeling language and verification tool for teams building verifiers around other programming languages. It is best for researchers and developers comfortable with deductive methods, contracts, intermediate representations, and SMT solvers. The trade-off is a capable verification layer that demands more setup and specialized knowledge than an application-language checker.
Overview
Boogie accepts programs written in Boogie IVL, can optionally infer invariants, and generates verification conditions for an SMT solver. It is therefore a foundation for a verification workflow, not a general-purpose analyzer that reads arbitrary source code and immediately reports defects. Its deductive method and contract support fit projects where properties are expressed explicitly and proof obligations are delegated to a solver.
That positioning has a useful ecosystem around it. Dafny, Chalice, Spec#, and Move verifiers are built on Boogie, while VCC and HAVOC use it for C. Those integrations make Boogie relevant when you are implementing a language verifier or extending an existing one. If you simply need verification in your application language, adopting one of those higher-level tools is likely more practical than working directly in the intermediate language.
Key features
- Verification-condition generation: Boogie translates IVL programs and contracts into conditions for an SMT solver. This gives verifier builders a clear backend boundary, but requires users to model programs and specifications in Boogie IVL.
- Optional invariant inference: The tool can infer invariants when requested, potentially reducing manual annotation work. It complements, rather than replaces, the need to understand the resulting proof obligations and solver behavior.
- Solver choices: Z3 is the default SMT solver and the most straightforward starting point. CVC5 and Yices2 support is experimental, so alternative-solver deployments are less established. Yices2 handles unquantified fragments such as arrays, arithmetic, and bitvectors, but not quantifiers, generalized arrays, or datatypes; that restriction matters for specifications using those constructs.
- Concurrency modeling: The Civl extension enables models of concurrent and distributed systems. It extends Boogie beyond sequential verification, although users still need the underlying formal-methods expertise to express and analyze those systems.
- Verifier ecosystem: Existing projects built on Boogie provide a route to language-specific workflows, while its intermediate-language design lets teams create their own front ends and verification layers.
Pricing
Boogie costs nothing under the MIT License. There are no paid tiers, seat charges, usage quotas, or trial terms. The free plan is the software itself, with self-hosted operation and the requirement to provide .NET and a supported SMT solver. That makes it suitable for academic work, open-source projects, and engineering teams that can maintain their own toolchain; organizations wanting a hosted service or managed solver environment will need to supply that infrastructure themselves.
Platforms
Boogie runs on Linux, macOS, and Windows. Releases are distributed as a .NET global tool through NuGet. The NuGet listing identifies Boogie 3.5.7 as targeting .NET 8.0 or higher, so the runtime requirement should be part of deployment planning. A supported SMT solver is also required, with Z3 providing the default path.
Who it's for
Boogie is a strong fit for researchers, language-tool authors, and verification engineers who need a reusable deductive backend based on contracts. It also suits teams modeling concurrent or distributed behavior through Civl and projects that want to build a verifier around a custom language. It is a weaker choice for developers seeking a turnkey checker for ordinary application code, or for teams that cannot take responsibility for installing and maintaining .NET and solver components.
Pros and cons
Pros
- Focused verification layer: IVL input, contract support, and verification-condition generation provide a defined foundation for building language verifiers.
- Open and adaptable: The MIT License, self-hosted deployment, and pull-request contributions allow projects to integrate and extend the tool without a commercial plan.
- Broad integration path: Support from projects such as Dafny, Chalice, Spec#, Move verifiers, VCC, and HAVOC demonstrates how Boogie can sit beneath different source languages.
- Concurrency option: Civl adds a route for concurrent and distributed-system models.
Cons
- Specialized workflow: Users must work in Boogie IVL and understand deductive verification rather than checking application code directly.
- Operational prerequisites: .NET and an SMT solver are mandatory, increasing setup and maintenance compared with a self-contained desktop tool.
- Uneven solver alternatives: CVC5 and Yices2 remain experimental, and Yices2 excludes important quantified and datatype fragments.
Alternatives
Lean is a free theorem prover and programming-language environment for users who want an interactive, dependently typed approach rather than Boogie's verifier-backend model. Rocq is another free interactive theorem prover and dependently typed language, suited to proof development in that style.
Choose cvc5 when you need an open-source SMT solver itself rather than a modeling and verifier layer. Z3 is the direct free alternative when your primary requirement is the default solver Boogie targets. PVS offers a free noncommercial plan and a separately priced commercial plan for users seeking that verification environment.
HOL4, Why3, and Isabelle are free formal-methods environments that may better match teams wanting their own theorem-proving or multi-prover workflow instead of building around Boogie IVL.
For a wider comparison, browse the Formal Verification Tools category.
Verdict
Choose Boogie when you are building or extending a program verifier and want a free, MIT-licensed deductive layer with Z3 as its default backend, plus an option for concurrency modeling through Civl. Look elsewhere when you need direct support for an application language, a hosted experience, or mature alternative-solver coverage without managing the .NET and SMT setup yourself.



