What is Lightning ?


The Lightning Tool is a language workbench distributed as an Eclipse plugin. It can be used to:

  • Create modelling languages from scratch, following an agile design process read more
  • Provide intuitive domain specific visualisations to existing models read more
  • Seamlessly execute language specifications for both verification and validation purposes read more
  • Specifying analysable and efficiently computable model transformations read more

Underlying Technology


The Lightning tool relies on :

  • The lightweight formal language Alloy to express, in a model, concepts, inter-concept relations, and constraints used in languages definitions. It uses the associated Alloy Analyser, a SAT-solver based tool, to exhaustively generate instances conforming to the given specifications.
  • The F-Alloy transformation language to express transformations between two Alloy models. The F-Alloy language features a subset of the Alloy language syntax that can be computed in polynomial time rather than just analysed. This particularity allows drasitcal improvement in computation's time complexity hence improving user experience in the use of Alloy to specify model transformations.

Language Definitions in Lightning


Languages defined using Lightning consist of:

  • An abstract syntax model defining the set of valid language models (instances of the language).
  • A concrete syntax definition specifying how language models should be visualised. It is expressed as a transformation from the abstract syntax model to a built-in visual language model (in which the set of shapes and layout Lightning can render are defined).
  • An operational semantics definition consisting of :
    • a semantic domain model defining, given the abstract syntax model, what a state of the operational semantics corresponds to.
    • a semantics step transformation defining how to go from state to state.

Install Lightning

Instructions on how to get the latest Lightning version running can be found here.

Proceed to Installation Page >>

Join the Community

Can't find a solution to a specific problems ?
Willing to contribute to our growing community ?

Join us on StackOverflow »