]> gitweb.michael.orlitzky.com - sage.d.git/blobdiff - mjo/eja/TODO
eja: add another Cartesian product test.
[sage.d.git] / mjo / eja / TODO
index db02b276e9a8a427afd3ad2a3e0b9fb77020fb50..fe18d5634835c97dcc1ee635c4fadecab25787ea 100644 (file)
@@ -1,37 +1,25 @@
-1. Finish DirectSumEJA: add to_matrix(), random_instance(),
-   one()... methods. Make it subclass RationalBasisEuclideanJordanAlgebra.
-   This is not a general direct sum / cartesian product implementation,
-   it's used only with the other rationalbasis algebras (to make non-
-   simple EJAs out of the simple ones).
+1. Finish CartesianProductEJA: add to_matrix(), random_instance(),
+   one()... methods. This will require rethinking what a "matrix
+   representation" and "matrix space" means for a cartesian product
+   algebra. Do we want our matrix basis to consist of ordered pairs
+   (or triples, or...)? Should the matrix_space() of the algebra be
+   the cartesian product of the factors' matrix spaces? Can we just
+   fix the matrix basis/space after we call the FDEJA initializer?
 
 2. Add references and start citing them.
 
 3. Implement the octonion simple EJA.
 
 
 2. Add references and start citing them.
 
 3. Implement the octonion simple EJA.
 
-4. Pass already_echelonized (default: False) and echelon_basis
-   (default: None) into the subalgebra constructor. The value of
-   already_echelonized can be passed to V.span_of_basis() to save
-   some time, and using e.g. FreeModule_submodule_with_basis_field
-   we may somehow be able to pass the echelon basis straight in to
-   save time.
-
-   This may require supporting "basis" as a list of basis vectors
-   (as opposed to superalgebra elements) in the subalgebra constructor.
-
-5. Pre-cache charpoly for some small algebras?
+4. Pre-cache charpoly for some small algebras?
 
 RealSymmetricEJA(4):
 
 sage: F = J.base_ring()
 sage: a0 = (1/4)*X[4]**2*X[6]**2 - (1/2)*X[2]*X[5]*X[6]**2 - (1/2)*X[3]*X[4]*X[6]*X[7] + (F(2).sqrt()/2)*X[1]*X[5]*X[6]*X[7] + (1/4)*X[3]**2*X[7]**2 - (1/2)*X[0]*X[5]*X[7]**2 + (F(2).sqrt()/2)*X[2]*X[3]*X[6]*X[8] - (1/2)*X[1]*X[4]*X[6*X[8] - (1/2)*X[1]*X[3]*X[7]*X[8] + (F(2).sqrt()/2)*X[0]*X[4]*X[7]*X[8] + (1/4)*X[1]**2*X[8]**2 - (1/2)*X[0]*X[2]*X[8]**2 - (1/2)*X[2]*X[3]**2*X[9] + (F(2).sqrt()/2)*X[1]*X[3]*X[4]*X[9] - (1/2)*X[0]*X[4]**2*X[9] - (1/2)*X[1]**2*X[5]*X[9] + X[0]*X[2]*X[5]*X[9]
 
 
 RealSymmetricEJA(4):
 
 sage: F = J.base_ring()
 sage: a0 = (1/4)*X[4]**2*X[6]**2 - (1/2)*X[2]*X[5]*X[6]**2 - (1/2)*X[3]*X[4]*X[6]*X[7] + (F(2).sqrt()/2)*X[1]*X[5]*X[6]*X[7] + (1/4)*X[3]**2*X[7]**2 - (1/2)*X[0]*X[5]*X[7]**2 + (F(2).sqrt()/2)*X[2]*X[3]*X[6]*X[8] - (1/2)*X[1]*X[4]*X[6*X[8] - (1/2)*X[1]*X[3]*X[7]*X[8] + (F(2).sqrt()/2)*X[0]*X[4]*X[7]*X[8] + (1/4)*X[1]**2*X[8]**2 - (1/2)*X[0]*X[2]*X[8]**2 - (1/2)*X[2]*X[3]**2*X[9] + (F(2).sqrt()/2)*X[1]*X[3]*X[4]*X[9] - (1/2)*X[0]*X[4]**2*X[9] - (1/2)*X[1]**2*X[5]*X[9] + X[0]*X[2]*X[5]*X[9]
 
-6. Compute the scalar in the general natural_inner_product() for
-   matrices, so no overrides are necessary.
-
-7. The main EJA element constructor is happy to convert between
+5. The main EJA element constructor is happy to convert between
    e.g. HadamardEJA(3) and JordanSpinEJA(3).
 
    e.g. HadamardEJA(3) and JordanSpinEJA(3).
 
-8. Figure out if CombinatorialFreeModule's use of IndexedGenerators
-   can be used to replace the matrix_basis().
-
-9. Move the "field" argument to a keyword after basis, jp, and ip.
+6. Profile the construction of "large" matrix algebras (like the
+   15-dimensional QuaternionHermitianAlgebra(3)) to find out why
+   they're so slow.