]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
eja: rename is_minimal_idempotent() to is_primitive_idempotent().
authorMichael Orlitzky <michael@orlitzky.com>
Fri, 15 Nov 2019 17:44:03 +0000 (12:44 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Fri, 15 Nov 2019 17:44:03 +0000 (12:44 -0500)
The term "primitive" is more common in optimization, anyway. Also the
word "minimal" is a bit overloaded. Oh, and I added two more tests to
preclude zero from being primitive.

mjo/eja/eja_element.py

index 4d3b071923b2c275ecb559c8d60d183696c729ac..276eab040db20d1df1715eed782db7dfe2acd481 100644 (file)
@@ -546,10 +546,15 @@ class FiniteDimensionalEuclideanJordanAlgebraElement(IndexedFreeModuleElement):
         return not (p(zero) == zero)
 
 
-    def is_minimal_idempotent(self):
+    def is_primitive_idempotent(self):
         """
-        Return whether or not this element is a minimal idempotent.
+        Return whether or not this element is a primitive (or minimal)
+        idempotent.
 
+        A primitive idempotent is a non-zero idempotent that is not
+        the sum of two other non-zero idempotents. Remark 2.7.15 in
+        Baes shows that this is what he refers to as a "minimal
+        idempotent."
 
         An element of a Euclidean Jordan algebra is a minimal idempotent
         if it :meth:`is_idempotent` and if its Peirce subalgebra
@@ -560,6 +565,7 @@ class FiniteDimensionalEuclideanJordanAlgebraElement(IndexedFreeModuleElement):
 
             sage: from mjo.eja.eja_algebra import (JordanSpinEJA,
             ....:                                  RealSymmetricEJA,
+            ....:                                  TrivialEJA,
             ....:                                  random_eja)
 
         WARNING::
@@ -575,7 +581,7 @@ class FiniteDimensionalEuclideanJordanAlgebraElement(IndexedFreeModuleElement):
             sage: x = sum(J.gens())
             sage: x.is_regular()
             False
-            sage: [ c.is_minimal_idempotent()
+            sage: [ c.is_primitive_idempotent()
             ....:   for (l,c) in x.spectral_decomposition() ]
             [False, True]
 
@@ -586,7 +592,7 @@ class FiniteDimensionalEuclideanJordanAlgebraElement(IndexedFreeModuleElement):
             sage: x = sum( i*J.gens()[i] for i in range(len(J.gens())) )
             sage: x.is_regular()
             True
-            sage: [ c.is_minimal_idempotent()
+            sage: [ c.is_primitive_idempotent()
             ....:   for (l,c) in x.spectral_decomposition() ]
             [True, True]
 
@@ -596,7 +602,7 @@ class FiniteDimensionalEuclideanJordanAlgebraElement(IndexedFreeModuleElement):
 
             sage: set_random_seed()
             sage: J = random_eja()
-            sage: J.rank() == 1 or not J.one().is_minimal_idempotent()
+            sage: J.rank() == 1 or not J.one().is_primitive_idempotent()
             True
 
         A non-idempotent cannot be a minimal idempotent::
@@ -604,7 +610,7 @@ class FiniteDimensionalEuclideanJordanAlgebraElement(IndexedFreeModuleElement):
             sage: set_random_seed()
             sage: J = JordanSpinEJA(4)
             sage: x = J.random_element()
-            sage: (not x.is_idempotent()) and x.is_minimal_idempotent()
+            sage: (not x.is_idempotent()) and x.is_primitive_idempotent()
             False
 
         Proposition 2.7.19 in Baes says that an element is a minimal
@@ -615,14 +621,36 @@ class FiniteDimensionalEuclideanJordanAlgebraElement(IndexedFreeModuleElement):
             sage: J = JordanSpinEJA(4)
             sage: x = J.random_element()
             sage: expected = (x.is_idempotent() and x.trace() == 1)
-            sage: actual = x.is_minimal_idempotent()
+            sage: actual = x.is_primitive_idempotent()
             sage: actual == expected
             True
 
+        Primitive idempotents must be non-zero::
+
+            sage: set_random_seed()
+            sage: J = random_eja()
+            sage: J.zero().is_idempotent()
+            True
+            sage: J.zero().is_primitive_idempotent()
+            False
+
+        As a consequence of the fact that primitive idempotents must
+        be non-zero, there are no primitive idempotents in a trivial
+        Euclidean Jordan algebra::
+
+            sage: J = TrivialEJA()
+            sage: J.one().is_idempotent()
+            True
+            sage: J.one().is_primitive_idempotent()
+            False
+
         """
         if not self.is_idempotent():
             return False
 
+        if self.is_zero():
+            return False
+
         (_,_,J1) = self.parent().peirce_decomposition(self)
         return (J1.dimension() == 1)