An abstract syntax is a type system designed to give a natural representation of programs as typed trees. AS follows what was already done by Metal and SDF [8] (even if in SDF the abstract syntax is generated from a concrete syntax specification). This means that an abstract syntax is a set of basic types (also called phyla) with explicit type inclusion, together with a set of constructors (also called operators) that are defined by their signatures.
Notice that this presentation of an abstract syntax, even if it was used at the very beginning of the Mentor project [4], was not directly used in Metal for some historical implementation reasons. In Metal, operators are defined only by the type of their sons, and phyla are defined as set of operators. This was a consequence of the table-driven design of Mentor, rather than a specification driven view. A table can be viewed as a way of encoding an abstract syntax [3].