In our docs, we've referred to a datashape like A * A * int32 as a square matrix, but if A is permitted to match the var dimension, this is actually a ragged array.
Since 3 * int32 is syntactic sugar for fixed[3] * int32, we can specify a square matrix as the more wordy fixed[N] * fixed[N] * int32. (Note that the pattern matching implementation does not match type variables inside of type constructors presently though.).