Skip to content
Ennio Visconti edited this page Apr 4, 2023 · 43 revisions

MoonLight Build Status codecov

MoonLight is a lightweight Java tool for monitoring temporal, spatial, and spatio-temporal properties of distributed complex systems, such as Cyber-Physical Systems and Collective Adaptive Systems.

It supports the specification of properties written with the Reach and Escape Logic (STREL). STREL is a linear-time temporal logic, in particular, it extends the Signal Temporal Logic (STL) with a number of spatial operators that permit to described complex spatial behaviors as being surround, reaching target locations, and escaping from specific regions.

MoonLight is implemented in Java, where it can be added as a dependency, but it features also a MATLAB interface (:warning: legacy) that allows the monitoring of spatio-temporal signals generated within the MATLAB framework. A new Python Interface is also available.

Getting Started (python only)

If you plan to only use Moonlight via python, refer to Python > Pip Package.

Getting Started

First, you need to clone our repository

$ git clone https://github.com/MoonLightSuite/MoonLight.git

or download it (link).

To generate the executable for Python or MATLAB, you need to compile it by executing the following Gradle tasks in the console

$ ./gradlew clean
$ ./gradlew release

This tasks will generate a folder, named distribution, which contains three folders:

  • java: it contains the moonlight.jar
  • matlab: it contains all the necessary files to execute MoonLight from MATLAB and some examples
  • python: it contains all the necessary files to execute MoonLight from Python and some examples

🛑 Please, consider that every time you execute these tasks, the distribution folder will be replaced with a new one.

For more information visit the dedicated sections:

  • MATLAB (:warning: legacy)
  • Python (:white_check_mark: recommended)