]> gitweb.michael.orlitzky.com - sage.d.git/blobdiff - mjo/eja/eja_subalgebra.py
eja: don't pass in a full multiplication table unless necessary.
[sage.d.git] / mjo / eja / eja_subalgebra.py
index 6eca475b961d6951e4c3ecbe2097bc36d5b80bca..fb0f26cceaca91c1a2d7328abb26c0003dcebcee 100644 (file)
@@ -176,13 +176,21 @@ class FiniteDimensionalEuclideanJordanSubalgebra(FiniteDimensionalEuclideanJorda
         W = V.span_of_basis( V.from_vector(b.to_vector()) for b in basis )
 
         n = len(basis)
-        mult_table = [[W.zero() for i in range(n)] for j in range(n)]
-        ip_table = [ [ self._superalgebra.inner_product(basis[i],basis[j])
-                       for i in range(n) ]
-                     for j in range(n) ]
+        if check_axioms:
+            # The tables are square if we're verifying that they
+            # are commutative.
+            mult_table = [[W.zero() for j in range(n)] for i in range(n)]
+            ip_table = [ [ self._superalgebra.inner_product(basis[i],basis[j])
+                           for j in range(n) ]
+                         for i in range(n) ]
+        else:
+            mult_table = [[W.zero() for j in range(i+1)] for i in range(n)]
+            ip_table = [ [ self._superalgebra.inner_product(basis[i],basis[j])
+                           for j in range(i+1) ]
+                         for i in range(n) ]
 
         for i in range(n):
-            for j in range(n):
+            for j in range(i+1):
                 product = basis[i]*basis[j]
                 # product.to_vector() might live in a vector subspace
                 # if our parent algebra is already a subalgebra. We
@@ -190,6 +198,8 @@ class FiniteDimensionalEuclideanJordanSubalgebra(FiniteDimensionalEuclideanJorda
                 # that case.
                 product_vector = V.from_vector(product.to_vector())
                 mult_table[i][j] = W.coordinate_vector(product_vector)
+                if check_axioms:
+                    mult_table[j][i] = mult_table[i][j]
 
         matrix_basis = tuple( b.to_matrix() for b in basis )