If id is an identifier, T a non-empty type other than an open array type, and E an expression, then:
    VAR id: T := E
declares id as a variable of type T whose initial value 
is the value of E.  Either ":= E" or ": T" 
can be omitted, but not both.  If T is omitted, it is taken 
to be the type of E.  If E is omitted, the initial value 
is an arbitrary value of type T.  If both are present, 
E must be assignable to T.
The initial value is a shorthand that is equivalent to inserting the assignment id := E at the beginning of the executable part of the block. If several variables have initial values, their assignments are inserted in the order they are declared. For example:
    VAR i: [0..5] := j; j: [0..5] := i; BEGIN S END
	
initializes i and j to the same arbitrary value
in [0..5]; 
it is equivalent to:
    VAR i: [0..5]; j: [0..5]; BEGIN i := j; j := i; S END
	
If a sequence of identifiers share the same type and initial value, id can be a list of identifiers separated by commas. Such a list is shorthand for a list in which the type and initial value are repeated for each identifier. That is:
    VAR v_1, ..., v_n: T := E
	
is shorthand for:
    VAR v_1: T := E; ...; VAR v_n: T := E
	
This means that E is evaluated n times.