Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Type Soundness for DOT via logical relations

Build Status Artifact DOI

Mechanization accompanying the paper Scala Step-by-Step: Soundness for DOT with Step-Indexed Logical Relations in Iris, published at ICFP 2020.

The mapping between the paper and this mechanization, together with the layout of the codebase, is described in See below for how to process sources with coqdoc.

We have also provided an artifact, matching our v1.0 release. Its instructions are in

Compiling the Proof the first time


Cloning this repository

After the cloning, run

git submodule update --init --recursive

to fetch all git submodules.

Installing dependencies

The following commands will install the correct Coq version and the correct versions of the std++ and Iris libraries.

  • If opam is not configured, run its setup wizard with opam init.
  • Then, prepare for installation with:
eval $(opam env)
opam repo add coq-released --set-default --all
opam repo add iris-dev --set-default --all
opam update
  • If you use opam for other Coq projects, we recommend setting up a dedicated opam switch. Instructions appear in
  • Actually install dependencies with:
opam install --deps-only .

Compiling the actual proof

Run make -jN to build the full development, where N is the number of your CPU cores; that should take around 5-10 minutes.

Browsing published coqdoc

Start from here.

Running coqdoc

Run make html to run coqdoc over the code, to obtain an hyperlinked version (for ease of cross-referencing). html/toc.html offers an index for navigation; keep in mind that is a better overview.

Documentation for developers / additional docs (not relevant to paper)