The argument -v /tmp:/root puts the /tmp directory into the container as
/root, so the example.cgo file is found in the container as
/root/example.cgo.

Alternatively, use the docker-run script to run the examples:

cd /path/to/example;
docker-run example.cgo

This puts /path/to/example into docker and run the example inside the container,
all arguments are passed to the Godel binary inside the container, e.g.

docker-run -T example.cgo # Term check

Development Environment via Docker

This is similar to above, except the Godel binary in the current directory
will be used instead, so small modifications can be tested immediately. The
termination checker and its dependencies are in the container.

dev-run example.cgo

Build from scratch

Instructions to build from scratch can be found below.
There are three components: Godel frontend, the model checker backend,
and the termination analyser backend.

Godel

The Godel frontend is written in Haskell.

Dependencies

Glasgow Haskell Compiler (ghc) 8.0.2

The cabal package manager

For Ubuntu Linux, ghc can be installed via apt-get as part of Haskell
Platform, and the packages can be installed via cabal.

$ sudo apt-get install haskell-platform

Then run cabal update and install:

$ cabal update && cabal install --bindir=.

The Godel binary should be created after a successful build.

Model checker

The model checker we use is
mCRL2 (2017 release),
and can be downloaded from their official website (recommended).