Installing command-line tools

Many of the tools can be run from the command line. This section describes how to run various ABS tools on a local machine.

The ABS compiler is contained in a single file called absfrontend.jar.

Running the ABS compiler requires Java (version 25 or greater) and Erlang (version 26 or greater) installed. Java can be downloaded, e.g., from <https://adoptopenjdk.net>. Erlang is available at <https://www.erlang.org/downloads> (but also check below for platform-specific instructions).

Installing dependencies

MacOS

On MacOS, the homebrew package manager can be used to install the dependencies. After installing homebrew, run the following commands in a terminal:

brew install erlang git openjdk

Windows

On windows, the chocolatey package manager can be used to install the dependencies. First install chocolatey following the instructions at https://chocolatey.org/install, then run the following command in a terminal with Administrator rights:

choco install openjdk25 git erlang visualstudio2019buildtools

To compile the ABS toolchain, make sure to run the command ./gradlew build from a developer shell (e.g., Start -> Visual Studio 2019 -> Developer PowerShell for VS 2019).

Linux

On Linux, check if your distribution offers the necessary programs pre-packaged in the version needed (JDK25, Erlang >= 26, a C compiler); otherwise download from the distribution pages linked above.

Using a pre-built ABS compiler

A pre-built absfrontend.jar of the current release of ABS is always linked from https://github.com/abstools/abstools/releases/latest. It can be invoked with java -jar absfrontend.jar --help. (Java and Erlang still need to be installed to run ABS, as above.)

To compile an ABS model model.abs, invoke the compiler with java -jar absfrontend.jar --java model.abs -o model.jar, then run the model with java -jar model.jar.

Using docker to run the ABS compiler

The latest released ABS compiler is always published as a docker image called abslang/absc:latest. To use this image, first install the docker tool from https://www.docker.com/products/docker-desktop or via your operating system’s package manager.

To install or update the docker image of the ABS compiler, run docker pull abslang/absc:latest. Then, run docker run --rm abslang/absc:latest --help – you should see the help output of the ABS compiler.

To compile an ABS model model.abs in the current directory, invoke the compiler with the following command:

docker run --rm -v "$PWD":/usr/src -w /usr/src abslang/absc:latest --java model.abs -o model.jar

There is a shell script frontend/bin/bash/absc-docker that wraps this command:

frontend/bin/bash/absc-docker --java model.abs -o model.jar

To run the model after compiling, either run java -jar model.jar (if the host machine has Java installed), or run the model inside docker with the following command:

docker run --rm -v "$PWD":/usr/src -w /usr/src --entrypoint java abslang/absc:latest -jar hello.jar

Note that using the Model API of a model running inside a docker container requires additional parameters to make the listening port visible on the host system. To run the Model API on port 8080, use the following command:

docker run --rm -v "$PWD":/usr/src -p 8080:8080 -w /usr/src --entrypoint java abslang/absc:latest -jar hello.jar -p 8080

Compiling the ABS compiler from source

To compile the ABS compiler from source, clone the git repository and run gradle (after installing the necessary dependencies):

On Linux, macOS:

git clone https://github.com/abstools/abstools.git
cd abstools
./gradlew assemble
frontend/bin/absc --help

on Windows:

git clone "https://github.com/abstools/abstools.git"
cd abstools
.\gradlew assemble
frontend\bin\absc.bat --help

At the end of these commands, you should see the help output of the ABS compiler.

The directory abstools/frontend/bin contains convenience scripts absc (for Linux, macOS, other Unix systems) and absc.bat (for Windows) that invoke the ABS compiler. This directory can be added to the PATH environment variable if desired.

To compile an ABS model model.abs, invoke the compiler with absc --java model.abs -o model.jar, then run the model with java -jar model.jar.

The ABS source tree contains a [Development Container](https://containers.dev) definition, so the toolchain can be compiled inside a container via these commands:

devcontainer up
devcontainer exec ./gradlew assemble

Installing Crowbar

For a local installation of the Crowbar verification systems, either download a prepackaged jar file, or compile the code locally. Crowbar requires Java >= 1.8 and an SMTSolver to run.

On an Ubuntu machine, run the following to install Crowbar and run it on an example file:

sudo apt-get install z3
mkdir crowbar
cd crowbar
git clone https://github.com/Edkamb/crowbar-tool.git .
./gradlew assemble
java -jar build/libs/crowbar.jar --full examples/account.abs

The expected output should end in the lines:

...
Crowbar  : Final verification result: true
Crowbar  : Verification time: ...
Crowbar  : Total number of branches: 6

Installing KeY-ABS

For a local installation of the KeY-ABS theorem prover, install Java 8. Then, download KeY-ABS from http://i12www.ira.uka.de/key/key-abs/key-abs.zip. Unzipping that downloaded file and double-clicking on the key.jar file should start KeY-ABS. To start from the command line, use:

java -jar key.jar