Linux | Windows |
---|---|
Boogie is an intermediate verification language (IVL), intended as a layer on which to build program verifiers for other languages. Several program verifiers have been built in this way, including the VCC and HAVOC verifiers for C and the verifiers for Dafny, Chalice, and Spec#. A previous version of the language was called BoogiePL. The current language (version 2) is currently known as just Boogie, which is also the name of the verification tool that takes Boogie programs as input.
Boogie is also the name of a tool. The tool accepts the Boogie language as input, optionally infers some invariants in the given Boogie program, and then generates verification conditions that are passed to an SMT solver. The default SMT solver is Z3.
The Boogie research project is being developed primarily in the RiSE group at Microsoft Research in Redmond. However, people at several other institutions make the open-source Boogie tool what it is.
More documentation can be found at http://boogie-docs.readthedocs.org/en/latest/ .
See Language reference.
Note: This is Boogie2 details many aspects of the Boogie IVL but is slightly out of date.
We have a public mailing list for users of Boogie. You can also report issues on our issue tracker
- NuGet executable (note that executables are not directly provided on Windows with Visual Studio, but can be separately downloaded)
- Z3 4.8.4 (earlier versions may also work, but the test suite assumes 4.8.4 to produce the expected output) or CVC4 FIXME_VERSION (note CVC4 support is experimental)
- Visual Studio >= 2012
- Mono
- Open
Source\Boogie.sln
in Visual Studio - Right click the
Boogie
solution in the Solution Explorer and clickEnable NuGet Package Restore
. You will probably get a prompt asking to confirm this. ChooseYes
. - Click
BUILD > Build Solution
.
- Download nuget.exe - this is not shipped with newer Visual Studio versions
- Open a Visual Studio Developer Command Prompt and navigate to inside the top-level directory of your boogie check-out
- Use nuget.exe to install a version of NUnit older than version 3.0; for example:
c:\suitablepath\nuget.exe install -Version 2.6.3 NUnit.Runners
. Boogie's test annotations are not yet compatible with NUnit >= 3.0 - Use nuget.exe to restore the reference to this package:
c:\suitablepath\nuget.exe restore Source\Boogie.sln
- Use msbuild to compile the project:
msbuild Source\Boogie.sln
You first need to fetch the NuGet packages that Boogie depends on. If you're doing this on the command line run
$ cd /path/to/repository
$ wget https://nuget.org/nuget.exe
$ mono ./nuget.exe restore Source/Boogie.sln
Note if you're using MonoDevelop it has a NuGet plug-in which you can use to "restore" the packages needed by Boogie.
Note if you see an error message like the following
WARNING: Error: SendFailure (Error writing headers)
Unable to find version '2.6.3' of package 'NUnit.Runners'.
then you need to initialise Mono's certificate store by running
$ mozroots --import --sync
then you can build by running
$ msbuild Source/Boogie.sln
Finally make sure there is a symlink to Z3 in the Binaries directory
(replace with cvc4
if using CVC4 instead).
$ ln -s /usr/bin/z3 Binaries/z3.exe
On a Windows system call the Boogie binary:
$ Binaries\Boogie.exe
On a non-Windows system use the wrapper script:
$ Binaries/boogie
Boogie has two forms of tests. Driver tests and unit tests
See the Driver test documentation
See the Unit test documentation