Logically: Constrain a variable (or all variables in a list) to take only integer or real values in a given range. The type of the bounds determines the type of the variable (real or integer). Also allowed are the (untyped) symbolic bound values inf, +inf and -inf. For instance
X :: 0..1 % boolean X :: -1..5 % integer between -1 and 5 X :: 1..inf % strictly positive integer X :: 0.0..10.0 % real between 0.0 and 10.0 X :: 1.5..3.7 % real between 1.5 and 3.7 X :: 0.0..inf % positive real X :: 0.0..5 % TYPE ERROR
Operationally, the range and type information is immediately stored into the variable's attribute.