Skip to content
/ pcs Public

Process Controller Synthesis using Labelled Transition Systems

Notifications You must be signed in to change notification settings

nightly/pcs

Repository files navigation

Process Controller Synthesis

standard ci.yml

Build instructions

Requirements

  • CMake (>=3.22)
  • Git (for submodule cloning)
  • C++20 compiler

And optionally:

  • GraphViz (for visualisation images, dot must be in system path)

Cloning & updating

Clone the repository alongside its submodules (shallow submodule cloning is optional).

git clone --recurse-submodules --shallow-submodules https://github.com/nightly/pcs

To correctly pull any newly added Git submodules to your local repository (git pull alone doesn't suffice):

git submodule update --recursive

CMake

Build the project using CMake or simply open it using an IDE that has CMake support.

cmake -S. -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build

All of the tests can also be run with the following:

cd build
ctest --output-on-failure --verbose

Layout

  • app: contains a CLI executable application. The examples/ subdirectory has pre-made examples to run.
  • benchmarks: contains all the project's benchmarks
  • data: has some sample recipes and modelled resources#
  • external: 3rd party dependencies added as Git submodules
  • src/pcs: PCS library code
  • tests: holds all tests & test data

GraphViz visualisation support

The labelled transition systems parsed and generated can be visualised using the GraphViz tool.

The output generated in exports/ can be visualised entirely online here or here without installing GraphViz on your system.

Alternatively with GraphViz installed, the following command can be run for a given LTS file lts1.gv:

dot -Tpng lts1.gv -o lts1.png

Or for SVG format:

dot -Tsvg lts1.gv -o lts1.svg

About

Process Controller Synthesis using Labelled Transition Systems

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages