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
ghciinterpreter 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
Makefilescripts. On Debian distribution it usually comes with
- the Haskell platform and
cabal-installfor compiling the examples and taking care of dependencies.
- a LaTeX compiler (optional) which provides the commands
biberfor 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
in the root path of the projecy. This creates a sandbox, fetches all specific dependencies and installes the haskell package. Check the
README.md files in each example for a full documentation of the
After a successful installation you can open an interpreter session with the examples loaded using the command
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 reportcommand run from the root of the project.
- an API documentation HTML page: generated with the command
make apior simply
cabal haddockfrom 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.