Monitoring Hyperproperties With Prefix Transducers
Description
This artifact aims to reproduce experiments from the paper Monitoring Hyperproperties With Prefix Transducers accepted at RV'23, and give further pointers to implementation of prefix transducers.
It has two parts: a pre-compiled docker image and sources that one can use to compile (locally or in docker) the software and run the experiments.
Using the pre-compiled docker image
To use the pre-compiled docker image, use `docker load` and then `docker run` to load and run the image:
```
docker load < rv23-experiments.tar.gz
docker run -ti -v "$(pwd)/results":/opt/rv23-experiments/results rv23-experiments
```
Once in the docker container, follow the README.
Note that the image was build for x86 architectures. If your architecture is different, you either need to specify `--platform` when running/creating the container to emulate your architecture or build the image yourself. Note that emulating the architecture brings non-negligible overhead and so building the image may be a better option.
Building the artifact
To build the artifact, unpack the sources and follow the README.
The newest sources of this artifact can be found at https://github.com/ista-vamos/rv23-experiments.
Modifying the artifact
The source code of monitors is in `mpt-monitors/src` and `mpt-monitors/inputs`. It has been generated from a big part with our compiler for MPT that can be found at https://github.com/ista-vamos/vamos-mpt. However, at the time of doing the implementation, the compiler was not fully functioning and therefore it provided just a "skeleton" that we then manually modified. We also tried to fill in some comments so that the code is more readable if you want to dig into that.