{"id":13546120,"url":"https://github.com/Kha/electrolysis","last_synced_at":"2025-04-02T17:32:35.051Z","repository":{"id":42422247,"uuid":"53976468","full_name":"Kha/electrolysis","owner":"Kha","description":"Simple verification of Rust programs via functional purification in Lean 2(!)","archived":true,"fork":false,"pushed_at":"2017-03-06T09:41:13.000Z","size":2765,"stargazers_count":337,"open_issues_count":3,"forks_count":7,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-03-27T04:42:35.081Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Lean","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/Kha.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}},"created_at":"2016-03-15T20:31:53.000Z","updated_at":"2025-01-01T08:08:20.000Z","dependencies_parsed_at":"2022-09-23T16:11:01.236Z","dependency_job_id":null,"html_url":"https://github.com/Kha/electrolysis","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kha%2Felectrolysis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kha%2Felectrolysis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kha%2Felectrolysis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kha%2Felectrolysis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kha","download_url":"https://codeload.github.com/Kha/electrolysis/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246860263,"owners_count":20845634,"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":[],"created_at":"2024-08-01T12:00:32.064Z","updated_at":"2025-04-02T17:32:33.898Z","avatar_url":"https://github.com/Kha.png","language":"Lean","funding_links":[],"categories":["Projects","Vulnerability Assessment","Lean"],"sub_categories":["Verification","Formal Verification"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"logo.png?raw=true\"/\u003e\n\u003c/p\u003e\n\n# electrolysis\n\n[![Gitter](https://badges.gitter.im/Kha/electrolysis.svg)](https://gitter.im/Kha/electrolysis?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\n## About\n\nA tool for formally verifying Rust programs by transpiling them into definitions in the [Lean](http://leanprover.github.io/) theorem prover. \n\n* **Masters thesis: Simple Verification of Rust Programs via Functional Purification - [thesis](https://github.com/Kha/masters-thesis/raw/master/main.pdf)|[presentation](http://kha.github.io/electrolysis/presentation.pdf)**\n* [Official reference and coverage](http://kha.github.io/electrolysis/)\n* [Blog post: A Formal Verification of Rust's Binary Search Implementation](https://kha.github.io/2016/07/22/formally-verifying-rusts-binary-search.html)\n\n## Installation\n\nBecause electrolysis uses `rustc`'s unstable private API, you need a nightly compiler. Because the API is _highly_ unstable, you need a very specific nightly version, for which you should use [rustup.rs](https://www.rustup.rs/). After installing `rustup`, you can build this project by executing\n```\nelectrolysis$ rustup override add $(cat rust-nightly-version)\nelectrolysis$ rustup component add rust-src\nelectrolysis$ cargo run core\n```\nThis will build the project and export all code from the `core` crate necessary for `binary_search` (see also [thys/core/config.toml](thys/core/config.toml)) into [thys/core/generated.lean](thys/core/generated.lean) (this file already exists in case you just want to examine the correctness proof).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKha%2Felectrolysis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FKha%2Felectrolysis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKha%2Felectrolysis/lists"}