]> gitweb.michael.orlitzky.com - sage.d.git/blobdiff - mjo/eja/eja_subalgebra.py
eja: move the "field" argument to (usually passed through) kwargs.
[sage.d.git] / mjo / eja / eja_subalgebra.py
index 6eca475b961d6951e4c3ecbe2097bc36d5b80bca..e7308ea34b9a36aef09a84069a1289e072487ec7 100644 (file)
@@ -27,7 +27,7 @@ class FiniteDimensionalEuclideanJordanSubalgebraElement(FiniteDimensionalEuclide
     our basis::
 
         sage: set_random_seed()
-        sage: x = random_eja(AA).random_element()
+        sage: x = random_eja(field=AA).random_element()
         sage: A = x.subalgebra_generated_by(orthonormalize_basis=True)
         sage: y = A.random_element()
         sage: y.operator()(A.one()) == y
@@ -173,16 +173,25 @@ class FiniteDimensionalEuclideanJordanSubalgebra(FiniteDimensionalEuclideanJorda
         # If our superalgebra is a subalgebra of something else, then
         # these vectors won't have the right coordinates for
         # V.span_of_basis() unless we use V.from_vector() on them.
-        W = V.span_of_basis( V.from_vector(b.to_vector()) for b in basis )
+        W = V.span_of_basis( (V.from_vector(b.to_vector()) for b in basis),
+                             check=check_axioms)
 
         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 +199,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 )