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()
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