]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
eja: clean up the TODO list after major refactoring.
authorMichael Orlitzky <michael@orlitzky.com>
Wed, 2 Dec 2020 14:53:52 +0000 (09:53 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Wed, 2 Dec 2020 14:53:52 +0000 (09:53 -0500)
mjo/eja/TODO

index ed15aa3dd5443c18195d9548c44e4a208a601dd7..db02b276e9a8a427afd3ad2a3e0b9fb77020fb50 100644 (file)
@@ -1,17 +1,14 @@
-1. Add CartesianProductEJA.
+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).
 
 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. Override random_instance(), one(), et cetera in DirectSumEJA.
-
-5. Switch to QQ in *all* algebras for _charpoly_coefficients().
-   This only works when we know that the basis can be rationalized...
-   which is the case at least for the concrete EJAs we provide,
-   but not in general.
-
-6. Pass already_echelonized (default: False) and echelon_basis
+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
    (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
    This may require supporting "basis" as a list of basis vectors
    (as opposed to superalgebra elements) in the subalgebra constructor.
 
    This may require supporting "basis" as a list of basis vectors
    (as opposed to superalgebra elements) in the subalgebra constructor.
 
-7. The inner product should be an *argument* to the main EJA
-   constructor.  Afterwards, the basis normalization step should be
-   optional (and enabled by default) for ALL algebras, since any
-   algebra can have a nonstandard inner-product and its basis can be
-   normalized with respect to that inner- product. For example, the
-   HadamardEJA could be equipped with an inner- product that is twice
-   the usual one. Then for the basis to be orthonormal, we would need
-   to divide e.g. (1,0,0) by <(1,0,0),(1,0,0)> = 2 to normalize it.
-
-8. Pre-cache charpoly for some small algebras?
+5. 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]
 
-9. Compute the scalar in the general natural_inner_product() for
+6. Compute the scalar in the general natural_inner_product() for
    matrices, so no overrides are necessary.
 
    matrices, so no overrides are necessary.
 
-10. The main EJA element constructor is happy to convert between
-    e.g. HadamardEJA(3) and JordanSpinEJA(3).
+7. The main EJA element constructor is happy to convert between
+   e.g. HadamardEJA(3) and JordanSpinEJA(3).
 
 
-11. Figure out if CombinatorialFreeModule's use of IndexedGenerators
-    can be used to replace the matrix_basis().
+8. Figure out if CombinatorialFreeModule's use of IndexedGenerators
+   can be used to replace the matrix_basis().
 
 
-12. Move the "field" argument to a keyword after basis, jp, and ip.
+9. Move the "field" argument to a keyword after basis, jp, and ip.