]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
eja: add some DESIGN notes.
authorMichael Orlitzky <michael@orlitzky.com>
Thu, 26 Nov 2020 20:38:48 +0000 (15:38 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Thu, 26 Nov 2020 20:38:48 +0000 (15:38 -0500)
mjo/eja/DESIGN [new file with mode: 0644]

diff --git a/mjo/eja/DESIGN b/mjo/eja/DESIGN
new file mode 100644 (file)
index 0000000..4e34946
--- /dev/null
@@ -0,0 +1,50 @@
+Overview
+--------
+This is a collection of design notes that should eventually wind up in
+the documentation. I'm just not sure where they go yet.
+
+Matrix representations
+----------------------
+
+Why allow matrix representations for all algebras?
+
+1. We already have a to_vector() operation that turns an algebra
+element into a vector whose coordinates live in the algebra's
+base_ring(). Adding a to_matrix() operation is a natural
+generalization of that.
+
+2. When constructing a Cartesian product algebra, we don't know a
+priori whether or not the result will have matrix-algebra factors. We
+can figure it out at runtime, but it would be nice if DirectSumEJA
+always returned the same class. Maybe more importantly, if a Cartesian
+product has one matrix and one non-matrix factor, then what would its
+own matrix representation look like? We want to delegate to the
+factors...
+
+
+Basis normalization
+-------------------
+For performance reasons, we need a class (RationalBasis...) that
+orthonormalizes its own basis. We *could* insist that the user do
+this, of course, but the reason we don't want him to is because we
+need to know how to undo the process. If we run Gram-Schmidt on the
+basis matrix ourselves, then we can save the matrix that undoes the
+process. And by undoing the process, we can get to a basis where
+computations are fast again.
+
+Question: what's the best way to construct these algebras? We'll
+usually know,
+
+  * the multiplication function
+  * the inner-product function
+  * a basis in either vector or matrix format
+
+and want:
+
+  * an orthonormalized copy of the basis, in long-vector format
+  * the reverse gram-schmidt matrix that deorthonormalizes that
+    long-vector basis
+  * a multiplication matrix (for speed) w.r.t. the orthonormal basis
+  * an inner-product matrix (for speed) w.r.t. the orthonormal basis
+  * a way to turn those two matrices into multiplication and inner-
+    product matrices for the deorthonormalized basis.