X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Feja%2Feja_subalgebra.py;h=fb0f26cceaca91c1a2d7328abb26c0003dcebcee;hb=4e966338c00181067c4d10f24b3fcaf288ebe207;hp=e7e559f80466d8b4da96c9a14ecea74bfd9351d4;hpb=f1ddf1e9eee634161aad87b9c2de0194efb17879;p=sage.d.git diff --git a/mjo/eja/eja_subalgebra.py b/mjo/eja/eja_subalgebra.py index e7e559f..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,8 +198,9 @@ 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] - self._inner_product_matrix = matrix(field, ip_table) matrix_basis = tuple( b.to_matrix() for b in basis ) @@ -200,6 +209,7 @@ class FiniteDimensionalEuclideanJordanSubalgebra(FiniteDimensionalEuclideanJorda fdeja = super(FiniteDimensionalEuclideanJordanSubalgebra, self) fdeja.__init__(field, mult_table, + ip_table, prefix=prefix, category=category, matrix_basis=matrix_basis,