]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
eja: choose subalgebra generator prefix smarter.
authorMichael Orlitzky <michael@orlitzky.com>
Wed, 7 Aug 2019 19:16:04 +0000 (15:16 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Wed, 7 Aug 2019 19:16:04 +0000 (15:16 -0400)
mjo/eja/eja_subalgebra.py

index a3ad92a4f9f5acedc7a12c6c11971f0d9351c3a3..c43e53f2b030ed920e6cc22d10c3097c4b704cec 100644 (file)
@@ -71,6 +71,25 @@ class FiniteDimensionalEuclideanJordanElementSubalgebraElement(FiniteDimensional
 class FiniteDimensionalEuclideanJordanElementSubalgebra(FiniteDimensionalEuclideanJordanAlgebra):
     """
     The subalgebra of an EJA generated by a single element.
+
+    SETUP::
+
+        sage: from mjo.eja.eja_algebra import JordanSpinEJA
+
+    TESTS:
+
+    Ensure that our generator names don't conflict with the superalgebra::
+
+        sage: J = JordanSpinEJA(3)
+        sage: J.one().subalgebra_generated_by().gens()
+        (f0,)
+        sage: J = JordanSpinEJA(3, prefix='f')
+        sage: J.one().subalgebra_generated_by().gens()
+        (g0,)
+        sage: J = JordanSpinEJA(3, prefix='b')
+        sage: J.one().subalgebra_generated_by().gens()
+        (c0,)
+
     """
     def __init__(self, elt):
         superalgebra = elt.parent()
@@ -106,8 +125,17 @@ class FiniteDimensionalEuclideanJordanElementSubalgebra(FiniteDimensionalEuclide
                 product = superalgebra_basis[i]*superalgebra_basis[j]
                 mult_table[i][j] = W.coordinate_vector(product.to_vector())
 
-        # TODO: We'll have to redo this and make it unique again...
-        prefix = 'f'
+        # A half-assed attempt to ensure that we don't collide with
+        # the superalgebra's prefix (ignoring the fact that there
+        # could be super-superelgrbas in scope). If possible, we
+        # try to "increment" the parent algebra's prefix, although
+        # this idea goes out the window fast because some prefixen
+        # are off-limits.
+        prefixen = [ 'f', 'g', 'h', 'a', 'b', 'c', 'd' ]
+        try:
+            prefix = prefixen[prefixen.index(superalgebra.prefix()) + 1]
+        except ValueError:
+            prefix = prefixen[0]
 
         # The rank is the highest possible degree of a minimal
         # polynomial, and is bounded above by the dimension. We know