-7. Do we really need to orthonormalize the basis in a subalgebra?
- So long as we can decompose the operator (which is invariant
- under changes of basis), who cares?
+5. Profile the construction of "large" matrix algebras (like the
+ 15-dimensional QuaternionHermitianAlgebra(3)) to find out why
+ they're so slow.
+
+6. Instead of storing a basis multiplication matrix, just make
+ product_on_basis() a cached method and manually cache its
+ entries. The cython cached method lookup should be faster than a
+ python-based matrix lookup anyway.
+
+7. What the ever-loving fuck is this shit?
+
+ sage: O = Octonions(QQ)
+ sage: e0 = O.monomial(0)
+ sage: e0*[[[[]]]]
+ [[[[]]]]*e0
+
+8. Factor out a class for matrices with real embeddings (i.e. not the
+ octonions).
+
+9. In fact, could my octonion matrix algebra be generalized for any
+ algebra of matrices over the reals whose entries are not real? Then
+ we wouldn't need real embeddings at all. They might even be fricking
+ vector spaces if I did that...
+
+10. Add HurwitzMatrixAlgebra subclass between MatrixAlgebra and
+ OctonionMatrixAlgebra.