Verifereum is an executable formal semantics of the Ethereum Virtual Machine in the HOL4 theorem prover, with machine-checked theorems and a program logic built on it. Contributing means writing HOL4 definitions and proofs, or Standard ML for the tooling around them. This page covers getting a build, setting up an editor, and where help is welcome.
Verifereum is built with holbuild,
which fetches and builds the pinned HOL4 version for you, so there is no
HOL4 to install first; you need Poly/ML
and git. The version of holbuild to install is
minimum_version in holproject.toml,
which also pins HOL4 and the project’s dependencies. Then, in a clone of
the repository:
holbuild buildhol # build the HOL4 toolchain (once)
holbuild -j"$(nproc)" buildThe README
has the details, and the CI workflow in .github/workflows/
is the exact build to compare against. Running the Ethereum conformance
tests is a separate, many-hour job described in tests/README.md.
HOL4 proofs are developed interactively, sending goals and tactics from the editor to a running HOL session. HOL4 ships modes for Emacs, Vim and Kakoune, and there is a separate VS Code extension:
Ask in the Verifereum channel on the HOL Zulip if setup gives you trouble; different approaches work better on different systems.
The open issues are the current to-do list. The broad areas:
spec/prop/. Many instructions
and cases still lack them.prog/ provides
instruction rules and their connection to execution. Extend the rules
and their supporting proofs.If you are new to HOL4, start by building the project and stepping through an existing proof in your editor, then pick a small issue and say in Zulip that you are on it.