{"id":18357172,"url":"https://github.com/nethermindeth/evmyullean","last_synced_at":"2025-04-10T01:53:42.256Z","repository":{"id":249632186,"uuid":"830607626","full_name":"NethermindEth/EVMYulLean","owner":"NethermindEth","description":"Executable formal model of the EVM and Yul in Lean 4.","archived":false,"fork":false,"pushed_at":"2025-04-09T07:58:33.000Z","size":2496,"stargazers_count":54,"open_issues_count":1,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-09T08:39:14.294Z","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":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NethermindEth.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}},"created_at":"2024-07-18T15:44:08.000Z","updated_at":"2025-03-26T07:00:04.000Z","dependencies_parsed_at":"2024-07-22T11:15:44.496Z","dependency_job_id":"53cfa2f1-4008-4bcf-b325-ad8578ed97dc","html_url":"https://github.com/NethermindEth/EVMYulLean","commit_stats":null,"previous_names":["nethermindeth/evmyullean"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NethermindEth%2FEVMYulLean","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NethermindEth%2FEVMYulLean/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NethermindEth%2FEVMYulLean/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NethermindEth%2FEVMYulLean/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NethermindEth","download_url":"https://codeload.github.com/NethermindEth/EVMYulLean/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248142939,"owners_count":21054671,"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-11-05T22:13:08.169Z","updated_at":"2025-04-10T01:53:42.245Z","avatar_url":"https://github.com/NethermindEth.png","language":"Lean","funding_links":[],"categories":[],"sub_categories":[],"readme":"This repository contains a formal model of the EVM and Yul in Lean 4.\nWhere applicable, the underlying EVM primops are used directly by the Yul model.\n\nEverything here is work in progress and is subject to change therefore.\n\n# Requirements\n- Python packages: coincurve, typing-extensions, pycryptodome, eth-typing, py-ecc\n\n# Project structure\n\n## Primops\nThe `Operation` describing all of the primitive operations:\n```\nEvmYul/Operations.lean\n```\n\nThe semantic function `primCall` associated with the ADT:\n```\nEvmYul/Yul/PrimOps.lean\n```\n\n## EVM\nThe model of the EVM state `EVM.State`:\n```\nEvmYul/EVM/State.lean\n```\n\nThe semantic function `step`:\n```\nEvmYul/EVM/Semantics.lean\n```\n\n## Yul\nThe ADT `Stmt` mutually defined with `Expr` and `FunctionDefinition` describing Yul:\n```\nEvmYul/Yul/Ast.lean\n```\n\nThe model of the Yul state `YUL.State`:\n```\nEvmYul/Yul/State.lean\n```\n\nThe semantic function `exec` mutually defined with `eval` (and some misc. functions):\n```\nEvmYul/Yul/Interpreter.lean\n```\n\n## Conformance testing\nA git submodule with EVM conformance tests is in:\n```\nEthereumTests/\n```\n\nThe test running infrastructure can be found in:\n```\nConform/\n```\n\nTo execute conformance tests, make sure the `EthereumTests` directory is the appropriate git submodule and run:\n```\nlake test -- \u003cNUM_THREADS\u003e 2\u003e out_discard.txt\n```\nwhere `\u003cNUM_THREADS\u003e` is the number of threads running conformance tests in parallel. Note that the default is `1`.\nWe recommend redirecting `stderr` into a file to not pollute the output.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnethermindeth%2Fevmyullean","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnethermindeth%2Fevmyullean","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnethermindeth%2Fevmyullean/lists"}