- clone the repository locally
- make sure docker and make are installed
make build- the Java container takes particularly long due to Maven's slow download speed (about 2mins on my machine)make bench- it may be advisable to tweak the MAX_CHILDREN value, as some benchmarks (which run at least 3 times each) can take as long as 10 mins for each run on my machine. This would need to be changed for every individual benchmark in the makefile.python plot.py- this needs matplotlib to be installed, and requires python 3.8 or later. It generates plots in the results folder
Run make build to build all of the benchmark containers. These all contain the model checker, and a copy of hyperfine for benchmarking. Running make build-python, for example, would build only the python container.
Once the containers are all built, make bench runs the muddy children benchmark for all the languages. Running make bench-python would run only the python benchmark.
ctrl+c won't stop a running benchmark. You need to run docker ps in a separate terminal, and then docker stop <container_name>.
Both the Python and Java programs can parse input files. The C++ and Go parsers were not completed.
- From inside the
<workspace_root>/javafolder (and after building the containers withmake build) rundocker run --rm -it -v (pwd)/examples:/examples --entrypoint bash gabesoich/palchecker:java - This mounts the
<workspace_root>/java/examplesfolder to /examples in the container, and opens a shell in the container - Inside the container, run
java -jar target/EpistemicModelChecker-1.0-SNAPSHOT.jar 10 0 /examples/cheryls_birthday.txtto parse thecheryls_birthday.txtfile, and answer the queries. The10 0is necessary only because a more advanced argument passing method wasn't used.
- From inside the
<workspace_root>/pythonfolder (and after building the containers withmake build) rundocker run --rm -it -v (pwd)/epistemic_model_checker/examples:/examples --entrypoint bash gabesoich/palchecker:python - This mounts the
<workspace_root>/python/epistemic_model_checker/examplesfolder to /examples in the container, and opens a shell in the container - Inside the container, run
python epistemic_model_checker/main.py /examples/cheryls_birthday.txtto parse thecheryls_birthday.txtfile, and answer the queries.