X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Feja%2Feja_element_subalgebra.py;h=b9069c484d16b57b4154774d5a288350adf1b64e;hb=3e46389a46db107db3fe36ace6fe5f2c2b52f815;hp=7fbd0609d9578406cb3ce9a8683fc6e46c8a95e4;hpb=2ce97eef3264e148f8a394c18b50db99d4619999;p=sage.d.git diff --git a/mjo/eja/eja_element_subalgebra.py b/mjo/eja/eja_element_subalgebra.py index 7fbd060..b9069c4 100644 --- a/mjo/eja/eja_element_subalgebra.py +++ b/mjo/eja/eja_element_subalgebra.py @@ -49,19 +49,19 @@ class FiniteDimensionalEuclideanJordanElementSubalgebra(FiniteDimensionalEuclide W = V.span_of_basis( V.from_vector(v) for v in basis_vectors ) + fdeja = super(FiniteDimensionalEuclideanJordanElementSubalgebra, self) + fdeja.__init__(self._superalgebra, + superalgebra_basis, + category=category, + check_axioms=False) + # The rank is the highest possible degree of a minimal # polynomial, and is bounded above by the dimension. We know # in this case that there's an element whose minimal # polynomial has the same degree as the space's dimension # (remember how we constructed the space?), so that must be # its rank too. - rank = W.dimension() - - fdeja = super(FiniteDimensionalEuclideanJordanElementSubalgebra, self) - return fdeja.__init__(self._superalgebra, - superalgebra_basis, - rank=rank, - category=category) + self.rank.set_cache(W.dimension()) def _a_regular_element(self): @@ -163,5 +163,10 @@ class FiniteDimensionalEuclideanJordanElementSubalgebra(FiniteDimensionalEuclide return self.zero() else: sa_one = self.superalgebra().one().to_vector() - sa_coords = self.vector_space().coordinate_vector(sa_one) - return self.from_vector(sa_coords) + # The extra hackery is because foo.to_vector() might not + # live in foo.parent().vector_space()! + coords = sum( a*b for (a,b) + in zip(sa_one, + self.superalgebra().vector_space().basis()) ) + return self.from_vector(self.vector_space().coordinate_vector(coords)) +