A Lem formalization of EVM and some Isabelle/HOL proofs
Isabelle
244
1,514 commits
updated Mar 24, 2022
This repository contains
lem/evm.lemlem/keccak.lemlem/evmNonExec.lemRelationalSem.thyexampleparser/hexparser.rbWhen you see \<Rightarrow> in the source, try using the Isabelle2017 interface. There you see ⇒ instead.
Lem is a language that can be translated into Coq, Isabelle/HOL, HOL4, OCaml, HTML and LaTeX.
opam install ocamlfind batteries yojson bignum easy-format bisect_ppx ocamlbuild sha secp256k1apt install secp256k1-0 secp256k1-dev is enoughmaster branch is necessary--enable-module-recovery is neededFirst translate the Lem definitions into Isabelle/HOL:
$ make lem-thy
Then, use Isabelle2017 to open ./examples/AlwaysFail.thy. The prerequisite Isabelle/HOL files are automatically opened.
Make sure the tests submodule is cloned
$ git submodule init tests
$ git submodule update tests
Extract the OCaml definitions
$ make lem-ocaml
And move to tester directory.
$ cd tester
One way is to run the VM Test.
$ sh compile.sh
$ ./runVmTest.native
(When ./runVmTest.native takes an argument, it executes only the test cases whose names contain the argument as a substring.)
Another way is to run the VM Test and measure the coverage.
$ sh measure_coverage.sh
Moreover, it's possible to run Blockchain Tests.
$ ./runBlockchainTest.native
make doc produces output/document.pdf as well as lem/*.pdf.make lem-thy compiles the Lem sources into Isabelle/HOLmake lem-hol compiles the Lem sources into HOL4make lem-coq; cd lem; make compiles the Lem sources into Coq (and then compiles the Coq sources)make lem-pdf compiles some of the Lem sources into PDF through LaTeXmake all-isabelle checks all Isabelle/HOL sources (but not the ones compiled from Lem)make does everything abovescript/gen_coq.sh generates a distribution useful for Coq usersIsabelle
78.9%
OCaml
9.6%
Standard ML
7.1%
TeX
3.4%
A Lem formalization of EVM and some Isabelle/HOL proofs
Isabelle
244
1,514 commits
updated Mar 24, 2022
This repository contains
lem/evm.lemlem/keccak.lemlem/evmNonExec.lemRelationalSem.thyexampleparser/hexparser.rbWhen you see \<Rightarrow> in the source, try using the Isabelle2017 interface. There you see ⇒ instead.
Lem is a language that can be translated into Coq, Isabelle/HOL, HOL4, OCaml, HTML and LaTeX.
opam install ocamlfind batteries yojson bignum easy-format bisect_ppx ocamlbuild sha secp256k1apt install secp256k1-0 secp256k1-dev is enoughmaster branch is necessary--enable-module-recovery is neededFirst translate the Lem definitions into Isabelle/HOL:
$ make lem-thy
Then, use Isabelle2017 to open ./examples/AlwaysFail.thy. The prerequisite Isabelle/HOL files are automatically opened.
Make sure the tests submodule is cloned
$ git submodule init tests
$ git submodule update tests
Extract the OCaml definitions
$ make lem-ocaml
And move to tester directory.
$ cd tester
One way is to run the VM Test.
$ sh compile.sh
$ ./runVmTest.native
(When ./runVmTest.native takes an argument, it executes only the test cases whose names contain the argument as a substring.)
Another way is to run the VM Test and measure the coverage.
$ sh measure_coverage.sh
Moreover, it's possible to run Blockchain Tests.
$ ./runBlockchainTest.native
make doc produces output/document.pdf as well as lem/*.pdf.make lem-thy compiles the Lem sources into Isabelle/HOLmake lem-hol compiles the Lem sources into HOL4make lem-coq; cd lem; make compiles the Lem sources into Coq (and then compiles the Coq sources)make lem-pdf compiles some of the Lem sources into PDF through LaTeXmake all-isabelle checks all Isabelle/HOL sources (but not the ones compiled from Lem)make does everything abovescript/gen_coq.sh generates a distribution useful for Coq usersIsabelle
78.9%
OCaml
9.6%
Standard ML
7.1%
TeX
3.4%