X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Feja%2Feja_element.py;h=4d3b071923b2c275ecb559c8d60d183696c729ac;hb=d4dda0de8204273c70b599bfa532e54563cf0af1;hp=5b8bc1e98a58ef03234e8a966a75eefd859c461c;hpb=d6d7353ccdcd1ab58c5f0e4621cb114e4a8c65ed;p=sage.d.git diff --git a/mjo/eja/eja_element.py b/mjo/eja/eja_element.py index 5b8bc1e..4d3b071 100644 --- a/mjo/eja/eja_element.py +++ b/mjo/eja/eja_element.py @@ -620,19 +620,10 @@ class FiniteDimensionalEuclideanJordanAlgebraElement(IndexedFreeModuleElement): True """ - # TODO: when the Peirce decomposition is implemented for real, - # we can use that instead of finding this eigenspace manually. - # - # Trivial eigenspaces don't appear in the list, so we default to the - # trivial one and override it if there's a nontrivial space in the - # list. if not self.is_idempotent(): return False - J1 = VectorSpace(self.parent().base_ring(), 0) - for (eigval, eigspace) in self.operator().matrix().left_eigenspaces(): - if eigval == 1: - J1 = eigspace + (_,_,J1) = self.parent().peirce_decomposition(self) return (J1.dimension() == 1) @@ -1270,10 +1261,13 @@ class FiniteDimensionalEuclideanJordanAlgebraElement(IndexedFreeModuleElement): sage: from mjo.eja.eja_algebra import random_eja - TESTS:: + TESTS: + + Ensure that we can find an idempotent in a non-trivial algebra + where there are non-nilpotent elements:: sage: set_random_seed() - sage: J = random_eja() + sage: J = random_eja(nontrivial=True) sage: x = J.random_element() sage: while x.is_nilpotent(): ....: x = J.random_element() @@ -1282,6 +1276,9 @@ class FiniteDimensionalEuclideanJordanAlgebraElement(IndexedFreeModuleElement): True """ + if self.parent().is_trivial(): + return self + if self.is_nilpotent(): raise ValueError("this only works with non-nilpotent elements!")