]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
eja: fix construction of subalgebra-subalgebras.
authorMichael Orlitzky <michael@orlitzky.com>
Fri, 9 Aug 2019 16:58:54 +0000 (12:58 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Fri, 9 Aug 2019 16:58:54 +0000 (12:58 -0400)
mjo/eja/eja_subalgebra.py

index c43e53f2b030ed920e6cc22d10c3097c4b704cec..9e5b010145b99f9442b5a86df8db3cd7d25048ad 100644 (file)
@@ -74,7 +74,8 @@ class FiniteDimensionalEuclideanJordanElementSubalgebra(FiniteDimensionalEuclide
 
     SETUP::
 
-        sage: from mjo.eja.eja_algebra import JordanSpinEJA
+        sage: from mjo.eja.eja_algebra import (ComplexHermitianEJA,
+        ....:                                  JordanSpinEJA)
 
     TESTS:
 
@@ -90,6 +91,13 @@ class FiniteDimensionalEuclideanJordanElementSubalgebra(FiniteDimensionalEuclide
         sage: J.one().subalgebra_generated_by().gens()
         (c0,)
 
+    Ensure that we can find subalgebras of subalgebras::
+
+        sage: A = ComplexHermitianEJA(3).one().subalgebra_generated_by()
+        sage: B = A.one().subalgebra_generated_by()
+        sage: B.dimension()
+        1
+
     """
     def __init__(self, elt):
         superalgebra = elt.parent()
@@ -98,11 +106,14 @@ class FiniteDimensionalEuclideanJordanElementSubalgebra(FiniteDimensionalEuclide
         # the given element.
         V = superalgebra.vector_space()
         superalgebra_basis = [superalgebra.one()]
-        basis_vectors = [superalgebra.one().to_vector()]
+        # If our superalgebra is a subalgebra of something else, then
+        # superalgebra.one().to_vector() won't have the right
+        # coordinates unless we use V.from_vector() below.
+        basis_vectors = [V.from_vector(superalgebra.one().to_vector())]
         W = V.span_of_basis(basis_vectors)
         for exponent in range(1, V.dimension()):
             new_power = elt**exponent
-            basis_vectors.append( new_power.to_vector() )
+            basis_vectors.append( V.from_vector(new_power.to_vector()) )
             try:
                 W = V.span_of_basis(basis_vectors)
                 superalgebra_basis.append( new_power )
@@ -123,7 +134,12 @@ class FiniteDimensionalEuclideanJordanElementSubalgebra(FiniteDimensionalEuclide
         for i in range(n):
             for j in range(n):
                 product = superalgebra_basis[i]*superalgebra_basis[j]
-                mult_table[i][j] = W.coordinate_vector(product.to_vector())
+                # product.to_vector() might live in a vector subspace
+                # if our parent algebra is already a subalgebra. We
+                # use V.from_vector() to make it "the right size" in
+                # that case.
+                product_vector = V.from_vector(product.to_vector())
+                mult_table[i][j] = W.coordinate_vector(product_vector)
 
         # A half-assed attempt to ensure that we don't collide with
         # the superalgebra's prefix (ignoring the fact that there