From AspectLTL Wiki Page
Revision as of 12:40, 9 October 2011 by Shahar (Talk | contribs) (Screenshot)

Jump to: navigation, search

AspectLTL is a temporal-logic based language for the specification and implementation of crosscutting concerns.

AspectLTL enables the modular declarative specification of expressive concerns, covering the addition of new behaviors, as well as the specification of safety and liveness properties. Moreover, given an AspectLTL specification, consisting of a base system and a set of aspects, we provide AspectLTL with a composition and synthesis-based weaving process, whose output is a correct-by-construction executable artifact. The language is supported by a prototype tool and is demonstrated using running examples.

AspectLTL was created by Shahar Maoz and Yaniv Sa'ar. It is first presented in the paper: S. Maoz and Y. Sa'ar, "AspectLTL: An Aspect Language for LTL Specifications", AOSD'11.


  • AspectLTL plug-in change log:
    • June 2010 (v1.2.0) First version available
    • Feb. 2011 (v1.3.0) Support for traceability and conflict debugging
    • Mar. 2011 (v1.3.1) Preferences page and few important fixes...
    • June 2011 (v1.3.2) Interactive graphic view of the generated controller, few bug fixes and usability improvements

Note that AspectLTL plugin v1.3.1 and above requires Eclipse Helios 3.6.X (not including Eclipse Indigo 3.7.0).


  • S. Maoz and Y. Sa'ar, "AspectLTL: An Aspect Language for LTL Specifications". In Proc. 10th Aspect Oriented Software Development Conf. (AOSD'11), ACM, pp. 19-30, March 2011. paper download
  • S. Maoz and Y. Sa'ar, "Two-Way Traceability and Conflict Debugging for AspectLTL Programs". Submitted.


The #evp parser function was deprecated in EmbedVideo 2.0. Please convert your parser function tag to #ev.


A screenshot from the AspectLTL plug-in, showing a debugging session of the Printer example (one of the examples supplied with the plug-in). The screenshot shows the selected aspects and base on the left, a textual description of the reversed roles controller, and traceability information in markers attached to the LTLSPEC of the two open aspects. Finally, on the right, a graph-based view of the reversed roles controller: input (environment) variables values are attached to the edges, and output (system) variables values are attached to the nodes. As this is a reversed roles controller, where the engineer plays the role of the system (i.e., chooses the output), each edge allows to open a popup menu, listing the alternative steps to choose from.

Screenshot debug.jpg