X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Feja%2Feja_subalgebra.py;h=8f6e56b55f309d10967ee5aae2bb8b2fe7261566;hb=32723f51147eb6260c8b41549208c851e54a4c56;hp=646da2fb8b649c11baa226833085c26564d75d46;hpb=1c7c3eb6e1861e6293ea2d92a1aa0ae52c35ab20;p=sage.d.git diff --git a/mjo/eja/eja_subalgebra.py b/mjo/eja/eja_subalgebra.py index 646da2f..8f6e56b 100644 --- a/mjo/eja/eja_subalgebra.py +++ b/mjo/eja/eja_subalgebra.py @@ -137,25 +137,20 @@ class FiniteDimensionalEuclideanJordanElementSubalgebra(FiniteDimensionalEuclide # First compute the vector subspace spanned by the powers of # the given element. - superalgebra_basis = [self._superalgebra.one()] + powers = [ elt**k for k in range(V.dimension()) ] + power_vectors = [ p.to_vector() for p in powers ] + + # Figure out which powers form a linearly-independent set. + ind_rows = matrix(field, power_vectors).pivot_rows() + + # Pick those out of the list of all powers. + superalgebra_basis = tuple(map(powers.__getitem__, ind_rows)) + # If our superalgebra is a subalgebra of something else, then - # superalgebra.one().to_vector() won't have the right - # coordinates unless we use V.from_vector() below. - basis_vectors = [V.from_vector(self._superalgebra.one().to_vector())] - W = V.span_of_basis(basis_vectors) - for exponent in range(1, V.dimension()): - new_power = elt**exponent - basis_vectors.append( V.from_vector(new_power.to_vector()) ) - try: - W = V.span_of_basis(basis_vectors) - superalgebra_basis.append( new_power ) - except ValueError: - # Vectors weren't independent; bail and keep the - # last subspace that worked. - break - - # Make the basis hashable for UniqueRepresentation. - superalgebra_basis = tuple(superalgebra_basis) + # these vectors won't have the right coordinates for + # V.span_of_basis() unless we use V.from_vector() on them. + basis_vectors = map(power_vectors.__getitem__, ind_rows) + W = V.span_of_basis( V.from_vector(v) for v in basis_vectors ) # Now figure out the entries of the right-multiplication # matrix for the successive basis elements b0, b1,... of