{"id":20910125,"url":"https://github.com/viperproject/voila","last_synced_at":"2026-04-24T11:02:15.601Z","repository":{"id":48417694,"uuid":"262350215","full_name":"viperproject/voila","owner":"viperproject","description":"Voila is proof outline checker for fine-grained concurrency verification","archived":false,"fork":false,"pushed_at":"2022-04-10T19:29:39.000Z","size":91938,"stargazers_count":1,"open_issues_count":53,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-30T19:26:30.680Z","etag":null,"topics":["concurrency","fine-grained-concurrency","formal-methods","program-verification","separation-logic","software-verification","verification"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/viperproject.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}},"created_at":"2020-05-08T14:50:26.000Z","updated_at":"2022-04-08T15:30:50.000Z","dependencies_parsed_at":"2022-09-19T05:40:56.005Z","dependency_job_id":null,"html_url":"https://github.com/viperproject/voila","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/viperproject/voila","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fvoila","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fvoila/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fvoila/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fvoila/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/viperproject","download_url":"https://codeload.github.com/viperproject/voila/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fvoila/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32220295,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T10:26:35.452Z","status":"ssl_error","status_checked_at":"2026-04-24T10:25:27.643Z","response_time":64,"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":["concurrency","fine-grained-concurrency","formal-methods","program-verification","separation-logic","software-verification","verification"],"created_at":"2024-11-18T14:13:59.298Z","updated_at":"2026-04-24T11:02:10.592Z","avatar_url":"https://github.com/viperproject.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Voila: Concise Outlines for a Complex Logic\n\n\u003cp align=\"center\"\u003e\n   \u003cimg width=\"447\" height=\"160\" alt=\"Voila logo\" src=\".github/voila-logo.svg\"\u003e\n\u003c/p\u003e\n\nVoila — [conference paper at FM'21](http://pm.inf.ethz.ch/publications/getpdf.php?bibname=Own\u0026id=WolfSchwerhoffMueller21.pdf), an [extensive technical report](http://pm.inf.ethz.ch/publications/getpdf.php?bibname=Own\u0026id=WolfSchwerhoffMueller20.pdf) is also available — is a *proof outline checker* for fine-grained concurrency verification. It supports a simple, Java-like programming language, with specifications based on a concurrent separation logic. Voila uses the [Viper verification infrastructure](https://viper.ethz.ch) to automatically discharge all proof obligations.\n\nSee [TicketLock.vl](https://github.com/viperproject/voila/blob/master/src/test/resources/examples/Caper/TicketLock.vl) for an example, or browse all examples and regression tests in [src/test/resources](https://github.com/viperproject/voila/blob/master/src/test/resources).\n\n## Installation\n\nPrerequisites:\n\n1. Java: Voila is written in Scala, and runs on the Java Virtual Machine. We recommend Java 11, but newer versions should work as well.\n\n1. Z3: Voila uses the excellent Z3 SMT solver. We strongly recommend [Z3 4.8.7](https://github.com/Z3Prover/z3/releases/tag/z3-4.8.7). Add Z3's executable to your path, or let environment variable `Z3_EXE` point to it.\n\nWe provide instructions for Linux, but adapting them for Windows or MacOS should be straightforward.\n\n### Pre-built\n\nDownload the [latest official Voila release](https://github.com/viperproject/voila/releases/latest), or see [all Voila release](https://github.com/viperproject/voila/releases) for alternatives.\n\n### Self-built\n\nInstall the Scala build tool [sbt](https://www.scala-sbt.org/download.html), version 1.4.4 or newer.\n\n1. Download this repository into, e.g. `~/voila`\n1. ~~Download [Silver](https://github.com/viperproject/silver/) into `~/voila/silver`~~ No longer necessary, since Silicon includes Silver as a Git submodule\n1. Download [Silicon](https://github.com/viperproject/silicon/) into `~/voila/silicon`\n1. Create a symlink `~/voila/silver` pointing to `~/voila/silicon/silver` \n1. Open a terminal, change directory to `~/voila`, and start `sbt`\n   1. Compile with sbt command `compile`\n   1. Generate fat jar `~/voila/target/scala-2.13/voila.jar` with sbt command `assembly`\n   1. Optional: verify a single file with `run`, e.g. `run src/test/resources/examples/Caper/TicketLock.vl` (no verification failures expected)\n   1. Optional: run all tests with sbt command `test` (will take some time)\n   1. Quit with sbt command `exit`\n\n## Usage\n\n1. Open a terminal, change directory to where you downloaded or built Voila, e.g. `~/voila`\n1. Run `./voila.sh -i \u003cpath_to_file.vl\u003e` to verify a file\n\n## Demo Session\n\n\u003cp align=\"center\"\u003e\n   \u003cimg --width=\"2103\" --height=\"1617\" alt=\"Recording of a Voila demo session\" src=\".github/voila-demo.webp\"\u003e\n\u003c/p\u003e\n\n## Authors\n\nVoila is developed at ETH Zurich, by \n[Felix A. Wolf](https://www.pm.inf.ethz.ch/people/person-detail.html?persid=198607), \n[Malte Schwerhoff](https://www.pm.inf.ethz.ch/people/person-detail.html?persid=162169), and \n[Peter Müller](https://www.pm.inf.ethz.ch/people/person-detail.html?persid=112017).\n\n## License\n\nVoila is licensed under [Mozilla Public License Version 2.0](LICENSE.txt).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviperproject%2Fvoila","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fviperproject%2Fvoila","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviperproject%2Fvoila/lists"}