In this example, I don't understand how is a rectangular in the first place?!
The line:
a:= [[1,2,3,4],[1,2,3]];
creates an array of 4 rows, 3 columns per row (or viceversa ); i.e. a rectangular array, as if it had been declared as:
a: array[0..3, 0..2] of Integer;
Strange syntax it is.
I would expect that initializer to allocate and populate array
a to something like this:
a[0] = [1, 2, 3, 4] -- four elements
a[1] = [1, 2, 3] -- three elements
but, if I understand you well, it is actually:
a[0] ... allocate three integers (will they be initialized? to what? zeros?)
a[1] ... ditto
a[2] ... ditto
a[3] ... ditto
?