Skip to content


Repository files navigation

The Incredible Proof Machine

Welcome to The Incredible Proof Machine. The Incredible Proof Machine is a non-textual interactive theorem prover, or at least it will hopefully become one.

If you want to try it out, go to

The project consists of both Haskell and JavaScript code, so there are a few dependencies to install.

Building the Logic Core

The Logic core is implemented in Haskell, and compiled to JavaScript using GHCJS. Installing GHCJS is not trivial, so we are using nix to obtain all build instructions. So to build the Haskell parts

  1. Install nix as described at

  2. Add the Kaleidogen nix cache at

    (This step is optional, but without it you will rebuild GHCJS which will take a long time.

  3. Download or build all build dependencies:

    nix-build --no-out-link shell.nix

    (Also optional, the next step will do it if you missed it.)

  4. Enter a nix-shell:


    You should now have ghcjs in your path.

  5. Build everything


    (See Makefile for the individual steps)

  6. Open ./index.html in your browser and play!

  7. To run the testsuite, run make test

Hacking on the UI without building Haskell

If you only want to run this locally, or work on the UI (which is written in plain JavaScript in folder webui/), you can also run

wget -O logic.js
wget -O sessions.js

The JavaScript part of the project uses a few external libraries. To obtain these, run ./

Continuous integration and deployment

Every push to the repository is tested on GithubActions, and if the tests succeed pushes to master are automatically pushed to

This uses the script script ./ dir/, which copies all files needed to run the Incredible Proof Machien into the directory dir/, which should not exist before.

Continuous deployment


Please contact Joachim Breitner if you have question or want to help out.