Boogie
github.com
What it 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 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 self-hosted and distributed as a.NET global tool through NuGet. It requires.NET and a supported SMT solver, and the NuGet listing identifies version 3.5.7 as targeting.NET 8.0 or higher. The project uses the MIT License and is free at free. The repository names VCC and HAVOC for C, along with Dafny, Chalice, Spec#, and Move verifiers, as projects built on Boogie. Yices2 has a stated constraint: it works for unquantified fragments such as arrays, arithmetic, and bitvectors, but not for quantifiers, generalized arrays, or datatypes. Users can ask questions or report issues through the project issue tracker, and contributions are accepted through pull requests.
Spec sheet
- Purpose
- Boogie is an intermediate modeling and verification language used as a layer for building program verifiers for other languages.Read 11 Oct 2026 · github.com
- Integrations
- The repository lists VCC and HAVOC for C, and Dafny, Chalice, Spec#, and Move verifiers as projects built on Boogie.Read 11 Oct 2026 · github.com
- Support
- The project directs users to its GitHub issue tracker to ask questions and report issues.Read 11 Oct 2026 · github.com
- License
- Boogie is licensed under the MIT License.Read 11 Oct 2026 · github.com
- Concurrency
- The Civl extension enables Boogie to model concurrent and distributed systems.Read 11 Oct 2026 · github.com
- Contributions
- The project accepts contributions through pull requests.Read 11 Oct 2026 · github.com
- Default solver
- Z3 is the default SMT solver.Read 11 Oct 2026 · github.com
- Help
- Users can ask questions and report issues on the project's issue tracker.Read 4 Oct 2026 · github.com
- Installation
- Releases are packaged as a .NET global tool and can be installed with dotnet tool install --global boogie.Read 11 Oct 2026 · github.com
- Other solvers
- CVC5 and Yices2 are supported experimentally.Read 11 Oct 2026 · github.com
- Package framework
- The NuGet listing identifies Boogie 3.5.7 as targeting .NET 8.0 or higher.Read 4 Oct 2026 · nuget.org
- Requirements
- Boogie requires .NET and a supported SMT solver.Read 11 Oct 2026 · github.com
- Solver limitation
- The README says Yices2 works for unquantified fragments such as arrays, arithmetic, and bitvectors, but not for quantifiers, generalized arrays, or datatypes.Read 11 Oct 2026 · github.com
- Verification tool
- The Boogie tool accepts Boogie programs, can optionally infer invariants, and generates verification conditions for an SMT solver.Read 11 Oct 2026 · github.com
Plans and prices
Strong points and limits
Strong points
- Free under the MIT License
- Can generate verification conditions for SMT solvers
- Z3 is the default solver
- Civl supports concurrent and distributed system models
Limits
- Requires .NET and a supported SMT solver
- CVC5 and Yices2 support is experimental
- Yices2 does not support several stated input features
Who it suits
Boogie suits developers and researchers building verifiers for other languages or checking contracts through Boogie input. It requires a .NET environment and a supported SMT solver.
Verdict
Boogie provides a self-hosted verification layer with contract-based deductive verification and an extension for concurrent and distributed models. Solver support varies, and the project lists .NET and an SMT solver as requirements.
Where Specifiction places it
- Formal Verification Tools#7 of 358.1