{"id":28368754,"url":"https://github.com/emptylambda/robustivl","last_synced_at":"2026-01-28T01:06:41.126Z","repository":{"id":85380399,"uuid":"328160231","full_name":"emptylambda/RobustIVL","owner":"emptylambda","description":null,"archived":false,"fork":false,"pushed_at":"2021-04-07T10:55:14.000Z","size":98245,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-22T08:44:23.764Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Boogie","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emptylambda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-01-09T13:22:48.000Z","updated_at":"2021-02-22T05:11:16.000Z","dependencies_parsed_at":"2023-07-12T15:00:24.357Z","dependency_job_id":null,"html_url":"https://github.com/emptylambda/RobustIVL","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/emptylambda/RobustIVL","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emptylambda%2FRobustIVL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emptylambda%2FRobustIVL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emptylambda%2FRobustIVL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emptylambda%2FRobustIVL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emptylambda","download_url":"https://codeload.github.com/emptylambda/RobustIVL/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emptylambda%2FRobustIVL/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28831226,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T23:29:49.665Z","status":"ssl_error","status_checked_at":"2026-01-27T23:25:58.379Z","response_time":168,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-29T04:40:29.973Z","updated_at":"2026-01-28T01:06:41.118Z","avatar_url":"https://github.com/emptylambda.png","language":"Boogie","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Boogie\n\n[![License][license-badge]](LICENSE.txt)\n[![NuGet package][nuget-badge]][nuget]\n[![Travis build status][travis-badge]][travis]\n\nBoogie is an intermediate verification language (IVL), intended as a layer on\nwhich to build program verifiers for other languages. Several program verifiers\nhave been built in this way, including the\n[VCC](https://github.com/microsoft/vcc) and\n[HAVOC](https://www.microsoft.com/en-us/research/project/havoc) verifiers for C\nand the verifiers for [Dafny](https://github.com/dafny-lang/dafny),\n[Chalice](https://www.microsoft.com/en-us/research/project/chalice), and\n[Spec#](https://www.microsoft.com/en-us/research/project/spec).\nFor a sample verifier for a toy language built on top of Boogie, see\n[Forro](https://github.com/boogie-org/forro).\n\nBoogie is also the name of a tool. The tool accepts the Boogie language as\ninput, optionally infers some invariants in the given Boogie program, and then\ngenerates verification conditions that are passed to an SMT solver. The default\nSMT solver is [Z3](https://github.com/Z3Prover/z3).\n\n## Documentation\n\nHere are some resources to learn more about Boogie. Be aware that some\ninformation might be incomplete or outdated.\n\n* [Documentation](https://boogie-docs.readthedocs.org/en/latest/)\n* [Language reference](https://boogie-docs.readthedocs.org/en/latest/LangRef.html).\n* [This is Boogie 2](https://research.microsoft.com/en-us/um/people/leino/papers/krml178.pdf)\n  details many aspects of the Boogie IVL but is slightly out of date.\n\n## Getting help and contribute\n\nYou can ask questions and report issues on our [issue tracker](https://github.com/boogie-org/boogie/issues).\n\nWe are happy to receive contributions via [pull requests](https://github.com/boogie-org/boogie/pulls).\n\n## Dependencies\n\nBoogie requires [.NET Core](https://dotnet.microsoft.com) and a supported SMT\nsolver (see [below](#backend-smt-solver)).\n\n## Installation\n\nBoogie releases are packaged as a .NET Core global tool available at\n[nuget.org][nuget]. To install Boogie simply run:\n\n```\n$ dotnet tool install --global boogie\n```\n\n## Building\n\nTo build Boogie run:\n\n```\n$ dotnet build Source/Boogie.sln\n```\n\n\u003e :warning: There is currently a know build problem with .NET Core and\n\u003e GitVersionTask (see #213). The workaround is to set the environment variable\n\u003e `MSBUILDSINGLELOADCONTEXT=1` and run `dotnet build-server shutdown`.\n\nThe compiled Boogie binary is\n`Source/BoogieDriver/bin/${CONFIGURATION}/${FRAMEWORK}/BoogieDriver`. Also, a\nNuGet package is placed in `Source/BoogieDriver/bin/Debug/` which can be used\nfor a local installation.\n\n## Backend SMT Solver\n\nThe default SMT solver for Boogie is [Z3](https://github.com/Z3Prover/z3).\nSupport for [CVC4](https://cvc4.github.io/) and\n[Yices2](https://yices.csl.sri.com/) is experimental.\n\nBy default, Boogie looks for an executable called `z3|cvc4|yices2[.exe]` in your\n`PATH` environment variable. If the solver executable is called differently on\nyour system, use `/proverOpt:PROVER_NAME=\u003cexeName\u003e`. Alternatively, an explicit\npath can be given using `/proverOpt:PROVER_PATH=\u003cpath\u003e`.\n\nTo learn how custom options can be supplied to the SMT solver (and more), call\nBoogie with `/proverHelp`.\n\n### Z3\n\nThe current test suite assumes version 4.8.8, but earlier and newer versions may\nalso work.\n\n### CVC4 (experimental)\n\nCall Boogie with `/proverOpt:SOLVER=CVC4`.\n\n### Yices2 (experimental)\n\nCall Boogie with `/proverOpt:SOLVER=Yices2 /useArrayTheory`.\n\nWorks for unquantified fragments, e.g. arrays + arithmetic + bitvectors. Does\nnot work for quantifiers, generalized arrays, datatypes.\n\n## Testing\n\nBoogie has two forms of tests. Driver tests and unit tests\n\n### Driver tests\n\nSee the [Driver test documentation](Test/README.md)\n\n### Unit tests\n\nSee the [Unit test documentation](Source/UnitTests/README.md)\n\n## Versioning and Release Automation\n\nThe [Bump workflow](.github/workflows/main.yml) will create and push a new tag\neach time commits are pushed to the master branch (including PR merges). By\ndefault, the created tag increments the patch version number from the previous\ntag. For example, if the last tagged commit were `v2.4.3`, then pushing to\nmaster would tag the latest commit with `v2.4.4`. If incrementing minor or major\nnumber is desired instead of patch, simply add `#minor` or `#major` anywhere in\nthe commit message. For instance:\n\n\u003e Adding the next greatest feature. #minor\n\nIf the last tagged commit were `v2.4.3`, then pushing this commit would generate\nthe tag `v2.5.0`.\n\nFor pull-request merges, if minor or major version increments are desired, the\nfirst line of the merge commit message can be changed to include `#minor` or\n`#major`.\n\nNote that on each push to `master`, the following will happen:\n* A travis build for `master` is triggered.\n* The GitHub workflow is also triggered.\n* Once the workflow pushes a new tag `vX.Y.Z`, another travis build for `vX.Y.Z`\n  is triggered.\n* The travis build for `vX.Y.Z` in Release configuration publishes releases to\n  GitHub and [NuGet.org][nuget].\n\n## License\n\nBoogie is licensed under the MIT License (see [LICENSE.txt](LICENSE.txt)).\n\n[license-badge]: https://img.shields.io/github/license/boogie-org/boogie?color=blue\n[nuget]:         https://www.nuget.org/packages/Boogie\n[nuget-badge]:   https://img.shields.io/nuget/v/Boogie\n[travis]:        https://travis-ci.com/boogie-org/boogie\n[travis-badge]:  https://travis-ci.com/boogie-org/boogie.svg?branch=master\n[jenkins]:       #FIXME\n[jenkins-badge]: https://pmbuilds.inf.ethz.ch/buildStatus/icon?job=boogie\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femptylambda%2Frobustivl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femptylambda%2Frobustivl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femptylambda%2Frobustivl/lists"}