{"id":25182102,"url":"https://github.com/verse-lab/veil","last_synced_at":"2026-01-16T01:38:23.962Z","repository":{"id":275378415,"uuid":"925604254","full_name":"verse-lab/veil","owner":"verse-lab","description":"A verifier for automated and interactive proofs about transition systems.  This repository is a public mirror with stable development snapshots. Submit issues and PRs here.","archived":false,"fork":false,"pushed_at":"2025-03-15T10:38:15.000Z","size":1103,"stargazers_count":21,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-15T11:27:31.428Z","etag":null,"topics":["lean","proof-assistant","smt","verification"],"latest_commit_sha":null,"homepage":"","language":"Lean","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/verse-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2025-02-01T09:20:48.000Z","updated_at":"2025-03-15T10:38:21.000Z","dependencies_parsed_at":"2025-02-02T04:24:30.936Z","dependency_job_id":"f214f87b-24d9-4943-97b3-c2559aff22ec","html_url":"https://github.com/verse-lab/veil","commit_stats":null,"previous_names":["verse-lab/veil"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verse-lab%2Fveil","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verse-lab%2Fveil/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verse-lab%2Fveil/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verse-lab%2Fveil/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/verse-lab","download_url":"https://codeload.github.com/verse-lab/veil/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247130200,"owners_count":20888540,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["lean","proof-assistant","smt","verification"],"created_at":"2025-02-09T17:29:48.388Z","updated_at":"2026-01-16T01:38:23.950Z","avatar_url":"https://github.com/verse-lab.png","language":"Lean","funding_links":[],"categories":["Lean"],"sub_categories":[],"readme":"# Veil: A Framework for Automated and Interactive Verification of Transition Systems\n\n[![Actions status](https://github.com/verse-lab/veil/actions/workflows/ci.yml/badge.svg)](https://github.com/verse-lab/veil/actions)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n\nVeil is a _foundational_ framework for (1) specifying, (2)\nimplementing, (3) testing, and (4) proving safety (and, in the future,\nliveness) properties of state transition systems, with a focus on\ndistributed protocols.\n\nVeil is embedded in the [Lean 4 proof assistant](https://lean-lang.org/) and provides push-button\nverification for transition systems and their properties expressed\ndecidable fragments of first-order logic, with the full power of a\nmodern higher-order proof assistant for when automation falls short.\n\n## Using `veil`\n\nTo use `veil` in your project, add the following to your\n`lakefile.lean`:\n\n```lean\nrequire \"verse-lab\" / \"veil\" @ git \"main\"\n```\n\nOr add the following to your `lakefile.toml`:\n\n```toml\n[[require]]\nname = \"veil\"\ngit = \"https://github.com/verse-lab/veil.git\"\nrev = \"main\"\n```\n\nSee\n[`verse-lab/veil-usage-example`](https://github.com/verse-lab/veil-usage-example)\nfor a fully set-up example project that you can\n[use as a template](https://github.com/new?template_name=veil-usage-example\u0026template_owner=verse-lab).\n\n## Tutorial\n\nThe file\n[`Examples/Tutorial/Ring.lean`](https://github.com/verse-lab/veil/blob/main/Examples/Tutorial/Ring.lean)\ncontains a guided tour of Veil's main features. Check it out if you want to see\nwhat Veil can do!\n\n## Build\n\nVeil requires [Lean 4](https://github.com/leanprover/lean4). We have tested Veil\non macOS (arm64) and Ubuntu (x86_64). Windows with WSL2 is also supported.\nNative Windows support is not yet available.\n\n\nTo build Veil, run:\n\n```bash\nlake build\n```\n\n\u003c!-- This will build the whole project, including the tests, but without the\ncase studies. --\u003e\n\nTo build the case studies run:\n\n```bash\nlake build Examples\n```\n\n\u003cdetails close\u003e\n\u003csummary\u003e\u003cstrong\u003eHow to install Lean?\u003c/strong\u003e\u003c/summary\u003e\n\nIf you don't have Lean installed, we recommend installing it via\n[`elan`](https://github.com/leanprover/elan):\n\n\n```bash\ncurl https://raw.githubusercontent.com/leanprover/elan/master/elan-init.sh -sSf | sh -s -- -y --default-toolchain leanprover/lean4:stable\n```\n\n\u003c/details\u003e\n\n\u003cdetails close\u003e\n\u003csummary\u003e\u003cstrong\u003eDependencies\u003c/strong\u003e\u003c/summary\u003e\n\nVeil depends on [`z3`](https://github.com/Z3Prover/z3),\n[`cvc5`](https://github.com/cvc5/cvc5), and\n[`uv`](https://github.com/astral-sh/uv). You do not need to have these installed\non your system, as our build system will download them automatically when you\nrun `lake build`. Veil will use its own copies of these tools, and will not\ntouch your system-wide versions.\n\nNote that if you want to invoke Lean-Auto's `auto` tactic, you need to have\n`z3` and `cvc5` installed on your system and available in your PATH.\n\u003c/details\u003e\n\n## Project Structure\n\nThe project consists of three major folders:\n\n- `Veil/`: the implementation of Veil,\n- `Test/`: Veil's artificial test cases for main Veil features,\n- `Examples/`: Veil's benchmarks, consisting of realistic specifications of distributed protocols\n\n### `Veil/` components\n\n- `DSL/`: Veil DSL\n  - `Action/Theory.lean`: meta-theory of action DSL with the soundness proof\n  - `Action/Lang.lean`: implementation of action DSL expansion\n  - `Specification/Lang.lean`: implementation of protocol declaration commands\n- `SMT/`: tactics for interaction with SMT\n- `Tactic/`: auxiliary tactics for proof automation\n\n### Case Studies implemented in `Examples/`\n\n- `FO/`: non-EPR protocols\n- `IvyBench/`: benchmarks [translated from Ivy](https://github.com/aman-goel/ivybench)\n- `Rabia/`: [Rabia protocol](https://github.com/haochenpan/rabia?tab=readme-ov-file)\n- `StellarConsensus/`: [Stellar Consensus Protocol](https://github.com/stellar/scp-proofs/tree/3e0428acc78e598a227a866b99fe0b3ad4582914)\n- `SuzukiKasami/`: [Suzuki Kasami protocol](https://github.com/markyuen/tlaplus-to-ivy/blob/main/ivy/suzuki_kasami.ivy)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fverse-lab%2Fveil","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fverse-lab%2Fveil","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fverse-lab%2Fveil/lists"}