The MAA was described using only the data part of LOTOS: the behavioural part of LOTOS, which serves to describe concurrent processes, was not used. The LOTOS specification, which made intensive use of the predefined LOTOS data-type libraries, was mainly declarative but not executable, as all facilities of LOTOS abstract data types were used in an unconstrained way. For instance, some equations could be rephrased as: “[*given $x$, the result is $y$ such that $x = f (y)$*]{}”, which required to invert function $f$ in order to compute $y$.

-   In 1992, Hubert Garavel and Philippe Turlier, taking the aforementioned LOTOS specification as a starting point, gradually transformed it by successive modifications. Their goal was to obtain an executable specification that could be processed by the [C[Æ]{}SAR.ADT]{} compiler [@Garavel-89-c] [@Garavel-Turlier-93], while staying as close as possible to the original LOTOS specification. To do so, three main kinds of modifications were applied: (i) the LOTOS algebraic equations, which are not oriented, were turned into rewrite rules, which are oriented from left to right and, thus, more amenable to automatic execution; (ii) a distinction was made between constructor and non-constructor operations, and the discipline of “free” constructors was enforced — namely, each 