X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Feja%2Feja_subalgebra.py;h=e7308ea34b9a36aef09a84069a1289e072487ec7;hb=987addc642a8e701b4212dedca40ffc196402339;hp=e7e559f80466d8b4da96c9a14ecea74bfd9351d4;hpb=f1ddf1e9eee634161aad87b9c2de0194efb17879;p=sage.d.git diff --git a/mjo/eja/eja_subalgebra.py b/mjo/eja/eja_subalgebra.py index e7e559f..e7308ea 100644 --- a/mjo/eja/eja_subalgebra.py +++ b/mjo/eja/eja_subalgebra.py @@ -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,8 +199,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 +210,7 @@ class FiniteDimensionalEuclideanJordanSubalgebra(FiniteDimensionalEuclideanJorda fdeja = super(FiniteDimensionalEuclideanJordanSubalgebra, self) fdeja.__init__(field, mult_table, + ip_table, prefix=prefix, category=category, matrix_basis=matrix_basis,