Enumerated and Subrange Types  51  Example:  Incorrect example:  because the type of  Sat  is ambiguous.  You are already acquainted with the predefined type  Boolean  defined as:  type Boolean  =  (false,  true);  This automatically defines the constant identifiers  false  and  true  and specifies that  false  <  true.  The  relational  operators  =,  <>,  <,  <=,  >=,  and  >, are  applicable to all enumerated types provided both operands are of the  same type.  The order is determined by the  sequence in  which the  constants are listed.  Predeclared functions with arguments of ordinal types are:  Assuming that  C  and C1  are of type  Color  (above), B  is of type  Boolean,  and  Sl ... Sn  are arbitrary statements, then the following are  meaningful statements:  type Workday  (Mon,  Tues,  Wed,  Thur,  Fri,  Sat);  Free  =  (Sat,  Sun);  type Color  =  (White,  Red,  Orange,  Yellow,  Green,  Blue,  Purple,  Black);  Sex  =  (Male,  Female);  Day  =  (Mon,  Tue,  Wed,  Thu,  Fri,  Sat,  Sun);  Operators  =  (Plus,  Minus,  Times,  Divide);  Continent  =  (Africa, Antarctica, Asia,  Europe  Australia,  NorthAmerica,  SouthAmerica);  for C := Black downto Red do Sl;  while  (C1  <>  C)  and B do Sl;  if C  >  White then C := pred(C);  case C of  end  Red,  Blue,  Yellow:  Sl;  Purple:  S2;  Green,  Orange:  S3;  White,  Black:  S4  succ (X)  e.g.  succ (Blue)  pred(X)  ord(X)  pred(Blue)  ord(Blue)  =  2  Yellow  the successor of  x  Red  the predecessor of  x  the ordinal number of x 