The simple types are boolean, enumerated and subrange. The type ``boolean'' is simply an abbreviation for the set {0,1}. Thus,
foo : boolean;
declares a signal named ``foo'', which can take on the value 0
or 1. An enumerated type is a set of symbols. For example,
bar : {ready,willing,able};
declares a signal named ``bar'', which can take one of the symbolic
values ``ready'', ``willing'' or ``able''. A type can also be a subrange of
the integers. For example,
count : 0..7;
declares a signal ``count'' which can take any value inclusively
in the range from 0 to 7. Numeric values in type declarations may
also be expressions, consisting of numeric constants, and the numeric operators
+, -, *, /, mod, «, » and **
(see section 9).