X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Feja%2Feja_subalgebra.py;h=e7308ea34b9a36aef09a84069a1289e072487ec7;hb=987addc642a8e701b4212dedca40ffc196402339;hp=6a9d10f65b7164627394c5ddb32bd682c323c5b2;hpb=af79c1d027cf737d125b11fd41bb0bc2150778fb;p=sage.d.git diff --git a/mjo/eja/eja_subalgebra.py b/mjo/eja/eja_subalgebra.py index 6a9d10f..e7308ea 100644 --- a/mjo/eja/eja_subalgebra.py +++ b/mjo/eja/eja_subalgebra.py @@ -11,14 +11,14 @@ class FiniteDimensionalEuclideanJordanSubalgebraElement(FiniteDimensionalEuclide TESTS:: - The natural representation of an element in the subalgebra is - the same as its natural representation in the superalgebra:: + The matrix representation of an element in the subalgebra is + the same as its matrix representation in the superalgebra:: sage: set_random_seed() sage: A = random_eja().random_element().subalgebra_generated_by() sage: y = A.random_element() - sage: actual = y.natural_representation() - sage: expected = y.superalgebra_element().natural_representation() + sage: actual = y.to_matrix() + sage: expected = y.superalgebra_element().to_matrix() sage: actual == expected True @@ -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 @@ -121,11 +121,11 @@ class FiniteDimensionalEuclideanJordanSubalgebra(FiniteDimensionalEuclideanJorda sage: E22 = matrix(AA, [ [0,0], ....: [0,1] ]) sage: K1 = FiniteDimensionalEuclideanJordanSubalgebra(J, (J(E11),)) - sage: K1.one().natural_representation() + sage: K1.one().to_matrix() [1 0] [0 0] sage: K2 = FiniteDimensionalEuclideanJordanSubalgebra(J, (J(E22),)) - sage: K2.one().natural_representation() + sage: K2.one().to_matrix() [0 0] [0 1] @@ -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,9 +199,10 @@ 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) - natural_basis = tuple( b.natural_representation() for b in basis ) + matrix_basis = tuple( b.to_matrix() for b in basis ) self._vector_space = W @@ -200,9 +210,10 @@ class FiniteDimensionalEuclideanJordanSubalgebra(FiniteDimensionalEuclideanJorda fdeja = super(FiniteDimensionalEuclideanJordanSubalgebra, self) fdeja.__init__(field, mult_table, + ip_table, prefix=prefix, category=category, - natural_basis=natural_basis, + matrix_basis=matrix_basis, check_field=False, check_axioms=check_axioms) @@ -256,16 +267,16 @@ class FiniteDimensionalEuclideanJordanSubalgebra(FiniteDimensionalEuclideanJorda - def natural_basis_space(self): + def matrix_space(self): """ - Return the natural basis space of this algebra, which is identical - to that of its superalgebra. + Return the matrix space of this algebra, which is identical to + that of its superalgebra. - This is correct "by definition," and avoids a mismatch when the - subalgebra is trivial (with no natural basis to infer anything - from) and the parent is not. + This is correct "by definition," and avoids a mismatch when + the subalgebra is trivial (with no matrix basis elements to + infer anything from) and the parent is not. """ - return self.superalgebra().natural_basis_space() + return self.superalgebra().matrix_space() def superalgebra(self):