{"id":29573783,"url":"https://github.com/bbayazit16/vevm","last_synced_at":"2025-07-19T07:02:14.430Z","repository":{"id":305232465,"uuid":"1021027369","full_name":"bbayazit16/vevm","owner":"bbayazit16","description":"A formally verified virtual machine in Rocq.","archived":false,"fork":false,"pushed_at":"2025-07-18T22:55:41.000Z","size":40,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-19T02:16:58.055Z","etag":null,"topics":["coq","rocq-prover"],"latest_commit_sha":null,"homepage":"","language":"Rocq Prover","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/bbayazit16.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,"zenodo":null}},"created_at":"2025-07-16T19:03:14.000Z","updated_at":"2025-07-18T22:55:46.000Z","dependencies_parsed_at":"2025-07-19T02:30:00.814Z","dependency_job_id":null,"html_url":"https://github.com/bbayazit16/vevm","commit_stats":null,"previous_names":["bbayazit16/vevm"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/bbayazit16/vevm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbayazit16%2Fvevm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbayazit16%2Fvevm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbayazit16%2Fvevm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbayazit16%2Fvevm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bbayazit16","download_url":"https://codeload.github.com/bbayazit16/vevm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbayazit16%2Fvevm/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265899587,"owners_count":23845873,"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":["coq","rocq-prover"],"created_at":"2025-07-19T07:00:48.723Z","updated_at":"2025-07-19T07:02:14.425Z","avatar_url":"https://github.com/bbayazit16.png","language":"Rocq Prover","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Verified VM (VeVM)\n\nA stack-based virtual machine written and verified entirely in Rocq.\n\nThe VM supports conditional jump, memory assignments, outputting a result (halting with value), and manipulation of items in the stack (which is fairly easy to extend, simply by modifying [Instruction.v](Instruction.v) and copying proof cases based on the argument count). So, all the major instructions that may need 'different' proof cases are covered, and any other instruction is very easy to add.\n\nThe VM also features a concept of 'fuel' to prevent itself from running forever. Within the interpret function, the VM is given an initial fuel value, and the interpret function consumes one unit for each instruction executed. If the fuel runs out, the VM halts with an error.\n\n## Verification\n\nThe operational semantics for the language are defined in [Semantics.v](Semantics.v).\n\nBelow are some of the major proofs in [VmProofs.v](VmProofs.v). These are the most important ones, but there are many other lemmas and theorems that are not listed here:\n\n- Soundness and completeness of the interpret function with respect to the semantics.\n- Soundness and completeness of the interpret all function with respect to the semantics.\n- If the VM succeeds with a given fuel and outputs `a`, it must also output `a` with a fuel value higher than the original.\n- Proofs regarding halting and terminal state.\n- Lemmas about the empty program's behaviour.\n\n## Building and Extraction\n\nRun `make` to build the project. This invokes `coq_makefile` to generate another Makefile, which is then executed by the original Makefile. Because of this, you don't need to run `coq_makefile` each time after modifying `_CoqProject`.\n\nExtraction to OCaml is supported, and done automatically by the `make` command.\n\n## License\n\nVeVM is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbayazit16%2Fvevm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbbayazit16%2Fvevm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbayazit16%2Fvevm/lists"}