introduces: sort1, sort2, ... , sortN .
needs: spec1, spec2, ... , specN.
op opName :: arg1 , ... , argN -> result .which declares the operator opName which accepts arguments of the sorts argX and returns a new element of the sort result.
eq sort1 <= sort2 .which describes sort1 as a subsort of sort2;
eq sort1 = sort2 .which declares that sort1 and sort2 are the same sort;
eq elem : sort .which declares that elem is a element (individual sort) of sort;
re term1 = term2 .which declares that the term1 can be rewrited to the term2.
pp opName = rule .which specifies the way which the abaco displays terms formed by the operator opName. The rule fields can be a sequence of the following operators:
syntax stack = [[ "push" element stack ]] | [[ "pop" stack ]] | [[ "empty-stack" ]] . element = [[ integer ]] | [[ string ]] . end syntax