The problem is that ``x[0]`` being 2d has produced a variety of anomalies, and the natural fix is for ``x[0]`` to be 1d.
Gael has argued strongly that she should be able to use the following notation: ``x[0,:]*A*x[:,0]``. But this will work only if ``x[0,:]`` is 2d or if it is 1d but has an "orientation".
So *if* you think ``x[0] == x[0,:]`` is desirable, *and* you want to satisfy Gael, *then* it seems you must introduce 1d "oriented" vectors.
I believe Travis is also suggesting that we travel that road, taking a first step as follows: for now let ``x[0]`` be a 1d array to quickly fix the anomalies, but let ``x[0,:]`` continue to be a matrix until the vector code is written, at which point ``x[0]`` and ``x[0,:]`` we be the same "row vector".
Or so I have understood things.
You've characterized my current thinking pretty well. I'm less concerned that x[0] != x[0,:] than I think Gael is. -Travis