A Revised Semantics for Rule Inheritance and Module Superimposition in ATL

There are two composition mechanisms in ATL that have evolved separately, and therefore are not well-aligned. These are rule inheritance and module superimposition. Both of these composition mechanisms had different goals in mind: rule inheritance aims to increase reuse at the rule level, as well as optimise the performance of the matching process, while module superimposition aims to increase reuse at the module level, and allows for incremental compilation whenever a single module changes. To achieve these goals, rule inheritance was in-lined at compile-time, while superimposed modules were composed at load-time. As a result, rule inheritance is limited to single modules, while module superimposition rule overriding does not work well on rule inheritance hierarchies. This paper aims to reconcile the two composition mechanisms by defining both at load-time/run-time, while respecting the original goals. In addition, rule inheritance is extended from single to multiple inheritance.