Locations are labelled with invariants and edges are labelled with guards. The abstract syntax for invariants and guards is the same. A guard is a comma separated list of side effect free expressions. The syntax of guards is defined by the grammar for GList:
GList ::= [Expression (',' Expression)*]
The guard is interpreted as a conjunction of the expressions. It is of course permissible to use the logical and symbol '&&' defined in the syntax for expressions instead of a comma separated list, but beware of the difference in precedence. Use of the logical or operator and the logical not operator is restricted to expressions over integers.
In invariants lower bounds on clocks are not allowed. The invariants of the current locations must be satisfied. It is important to understand that invariants influence the behaviour of the system -- they are distinctly different from specifying safety properties in the Requirements Specification Language. States which violate the invariants are undefined; they are by definition not reachable. This has a profound effect on the interpretation of urgent channels and broadcast cannels. Please see the section on synchronisations for a detailed discussion of this topic.