X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Feja%2Feja_subalgebra.py;h=fb0f26cceaca91c1a2d7328abb26c0003dcebcee;hb=707c1ace788819d3d0542e61dab0134eabea2159;hp=6eca475b961d6951e4c3ecbe2097bc36d5b80bca;hpb=472c151eae2e95d5611cf3761dfe98a3fe386400;p=sage.d.git diff --git a/mjo/eja/eja_subalgebra.py b/mjo/eja/eja_subalgebra.py index 6eca475..fb0f26c 100644 --- a/mjo/eja/eja_subalgebra.py +++ b/mjo/eja/eja_subalgebra.py @@ -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 )