PTL language: The language makes possible to define meta-models and ATL-style rules, together with helpers and validation rules in Prolog syntax. EMF/ECore is the meta–meta-model of PTL, and source and target meta-models have to be defined in terms of the EMF/ECore meta-model.
Declarative semantics: PTL is equipped with a declarative semantics that provides precise semantics to the PTL constructors.
Encoding to Prolog rules: ATL-style transformation rules are translated into Prolog rules. Each rule is encoded by a set of Prolog rules, one rule for each object that is created, and one rule for each role set by the rule. A Prolog library for handling metamodels is also automatically generated from the meta-model specification.
Model validation: Constraints on source and target models and cross-constraints on source–target models can be expressed in our approach by Prolog rules. An OCL to Prolog mapping is also defined.
ATL to PTL mapping: An ATL to PTL mapping is defined in such a way that a subset of PTL is equivalent to a subset of ATL. For this fragment, PTL provides semantics to ATL and can be considered as a Prolog-based Virtual Machine for ATL.
Debugging capabilities: Debugging permits detect rules that fail in a certain transformation, and in addition, debugging is able to locate the point of the rule in which it fails.
Tracing capabilities: Tracing permits to navigate from a target model element to show all the rules and source model elements that contribute to this element.
PTL evaluation: PTL has been evaluated with examples of ATL. PTL have been also evaluated for testing performance of transformations with medium-size models, and for testing performance of constraint validation with large models.
Eclipse plugin: The plugin makes possible the edition of PTL code, the execution of transformations, as well as the debugging, tracing and validation of transformations.