A constraint on a virtual type has the form of a virtuality\-constraint:
<virtuality-constraint> ::= atleast <identifier>
where <identifier> identifies a type (which is called the constraint type) of the appropriate kind (block, process, service or procedure).
The implication of a constraint is that a redefined or finalized definition of the virtual type must be a type definition that inherits from the constraint type. In case of no constraint specified, the definition of the virtual type itself is the constraint.