This tool complements the ABS modeling language with support for session types. It can statically verify ABS models against session types and modifies them to enforce those parts of the specified behavior, which can not be statically guaranteed.
I developed this tool during my bachelor thesis. Please consult my thesis for more information on the tool. Link to thesis: Link (This is the first version as it had been originally submitted for review.)
Please make sure that the following dependencies are available on your system:
- Kotlin compiler version 1.3.50
- Erlang version 22.1
- OpenJDK 11
- Git version 2.24.0
Furthermore, it is assumed, that the commands in the following sections are
executed on the bash
shell of a linux system.
To build the tool, first, a modified version of ABS has to be downloaded and be built.
git clone https://github.com/ahbnr/SessionTypeABS.git
git clone --branch thisDestiny https://github.com/ahbnr/abstools.git
cd abstools/frontend
../gradlew assemble
cd ../../SessionTypeABS
./gradlew shadowJar
chmod +x sdstool
The SDS-tool can now be found as an executable .jar
file in build/libs
.
We provide a wrapper script sdstool
which can be invoked instead of the JAR
file.
Issue the command
./gradlew test
to run all tests.
The following command
- statically verifies an ABS model against the given session types
- (see link for more information on the syntax of
.st
session type specification files)
- (see link for more information on the syntax of
- applies our dynamic enforcement techniques to it
- compiles the modified model to Erlang
./sdstool compile [flags] [.abs files] [.st files]
With the optional flags, verification or enforcement can be deactivated etc.
Use ./sdstool compile --help
for further information on them.
After compiling the ABS model, it can be executed like this:
gen/erl/run
-
./sdstool printModel [.abs files] [.st files]
prints the parts of the given ABS model, which are modified by our dynamic enforcement methods. -
./sdstool printGlobalTypes [.st files]
parses the given session type files and outputs them again. -
./sdstool printLocalTypes [.st files]
prints the object local session types projected from the given global ones.
See evalutation/README.md
See LICENSE.txt. This license only applies to the files belonging to this project, not to abstools or the other libraries being used.
- our modified variation of abstools, version 1.8.1
- ANTLR, version 4.7
- picocli, version 4.0.0-beta-2
- Apache Commons IO, version 2.6
- JUnit 5, version 5.5.0
- NuProcess, version 1.2.3