No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

ForSyDe Atom Examples

This is a common archive for examples and demonstrators for ForSyDe-Atom. Each project is distributed as a separate Cabalized library, meant to be installed and tested in its own separate sandbox. All code sources have been written using the literate programming style and can generate a report for each project. These reports are bundled periodically in form of a user manual.


  • separate: because each example has different dependencies, and was developed for different releases of ForSyDe-Atom. That is why it is important to run them in separate sandboxed environments.
  • libraries: because it is more convenient to run different functions or configurations inside the ghci interpreter or a new Haskell file as simple as calling library-exported functions.
  • literate: because the main targets are human-readable documents, where the code listed is the same as the code executed, and it is guaranteed to be compatible with the respective release of ForSyDe-Atom.

List of examples

These are the projects included in this repository:

  • getting-started: a brief introduction to the main ForSyDe-Atom concepts and features.
  • hybrid: some examples and experiments for hybrid CT/DT models.
  • fft (TBA)
  • adc (TBA)


The following publications reference material from this repository:

  • George Ungureanu and Ingo Sander. 2017. A layered formal framework for modeling of cyber-physical systems. In Proceedings of the Conference on Design, Automation & Test in Europe (DATE '17). Lausanne, Switzerland, March 2017, pp. 1715–1720. ( slides | doi | bib )

  • George Ungureanu, José E. G. de Medeiros and Ingo Sander. 2018. Bridging discrete and continuous time models with Atoms. In Proceedings of the Conference on Design, Automation & Test in Europe (DATE '18). Dresden, Germany, March 2018 [ pre-print ]

Installation and usage

Each demonstrator contains additional info regarding installation and usage. This section provides general tips on how to operate this repository.

Some general dependencies need to be taken care of prior to fetching and compiling the demonstrators:

  • git : for fetching the repository and all special dependencies.
  • GNU make for using the Makefile scripts. On Debian distribution it usually comes with build-essential.
  • the Haskell platform and cabal-install for compiling the examples and taking care of dependencies.
  • a LaTeX compiler (optional) which provides the commands pdflatex and biber for compiling the PDF reports and manual from literate source code yourself.

Once the main dependencies have been taken care of, each project needs to be installed individually using the make commands. Among other commands, the installation setup of a project is performed by executing

make install

in the root path of the projecy. This creates a sandbox, fetches all specific dependencies and installes the haskell package. Check the files in each example for a full documentation of the make commands.

After a successful installation you can open an interpreter session with the examples loaded using the command

cabal repl


The examples are meant to be executed while reading the report associated with each project. A PDF manual putting together all project reports is periodically compiled and updated.

Each demonstrator comes with additional documentation:

  • a PDF report: compiled from the literate source code. Generating the document is done using the make report command run from the root of the project.
  • an API documentation HTML page: generated with the command make api or simply cabal haddock from root of the project.

Compiling both documents and fetching their dependencies can be performed with the command make docs run from the root of the demonstrator.