]> gitweb.michael.orlitzky.com - sage.d.git/blobdiff - mjo/eja/TODO
eja: propagate check_axioms to some other "check" variables.
[sage.d.git] / mjo / eja / TODO
index 87a162c73ab3ccf86623496dee39064e8b96bfb7..c9c264c436b198e02c39f7792307572c5efead7d 100644 (file)
@@ -1,31 +1,32 @@
-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. Factor out the unit-norm basis (and operator symmetry) tests once
-   all of the algebras pass.
+4. Pre-cache charpoly for some small algebras?
 
 
-5. Override random_instance(), one(), et cetera in DirectSumEJA.
+RealSymmetricEJA(4):
 
 
-6. 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.
+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]
 
 
-7. 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 usinf e.g. FreeModule_submodule_with_basis_field
-   we may somehow be able to pass the echelon basis straight in to
-   save time.
+5. Compute the scalar in the general natural_inner_product() for
+   matrices, so no overrides are necessary.
 
 
-   This may require supporting "basis" as a list of basis vectors
-   (as opposed to superalgebra elements) in the subalgebra constructor.
+6. The main EJA element constructor is happy to convert between
+   e.g. HadamardEJA(3) and JordanSpinEJA(3).
 
 
-8. Implement random_instance() for general algebras as random_eja().
-   Copy/paste the "general" construction into the other classes that
-   can use it. The general construction can be something like "call
-   random_instance() on something that inherits me and return the
-   result."
+7. Figure out if CombinatorialFreeModule's use of IndexedGenerators
+   can be used to replace the matrix_basis().
+
+8. Move the "field" argument to a keyword after basis, jp, and ip.
+
+9. Add back the check_field=False and check_axioms=False parameters
+   for the EJAs we've constructed ourselves. We can probably pass
+   the value of "check_axioms" to <whatever>.span_of_basis() to skip
+   the linear-independence check.