Definition of the core rules.
These definitions use the convenience constructors for the abstract syntax.