]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
eja: rename orthogonal_idempotents() to a_jordan_frame().
authorMichael Orlitzky <michael@orlitzky.com>
Sun, 11 Oct 2020 12:35:18 +0000 (08:35 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Sun, 11 Oct 2020 12:35:18 +0000 (08:35 -0400)
mjo/eja/eja_algebra.py

index 4b8d466c3456f9ec1daf6ca2d701f3078a3524d1..9198a8b124e041e4edcc4351271db01345accaa0 100644 (file)
@@ -773,10 +773,9 @@ class FiniteDimensionalEuclideanJordanAlgebra(CombinatorialFreeModule):
         return (J0, J5, J1)
 
 
-    def orthogonal_idempotents(self):
+    def a_jordan_frame(self):
         r"""
-        Generate a set of `r` orthogonal idempotents for this algebra,
-        where `r` is its rank.
+        Generate a Jordan frame for this algebra.
 
         This implementation is based on the so-called "central
         orthogonal idempotents" implemented for (semisimple) centers
@@ -798,9 +797,50 @@ class FiniteDimensionalEuclideanJordanAlgebra(CombinatorialFreeModule):
         Beware that Koecher defines the "center" of a Jordan algebra to
         be something else, because the usual definition is stupid in a
         (necessarily commutative) Jordan algebra.
+
+        SETUP::
+
+            sage: from mjo.eja.eja_algebra import (random_eja,
+            ....:                                  JordanSpinEJA,
+            ....:                                  TrivialEJA)
+
+        EXAMPLES:
+
+        A Jordan frame for the trivial algebra has to be empty
+        (zero-length) since its rank is zero. More to the point, there
+        are no non-zero idempotents in the trivial EJA. This does not
+        cause any problems so long as we adopt the convention that the
+        empty sum is zero, since then the sole element of the trivial
+        EJA has an (empty) spectral decomposition::
+
+            sage: J = TrivialEJA()
+            sage: J.a_jordan_frame()
+            ()
+
+        A one-dimensional algebra has rank one (equal to its dimension),
+        and only one primitive idempotent, namely the algebra's unit
+        element::
+
+            sage: J = JordanSpinEJA(1)
+            sage: J.a_jordan_frame()
+            (e0,)
+
+        TESTS::
+
+            sage: J = random_eja()
+            sage: c = J.a_jordan_frame()
+            sage: all( x^2 == x for x in c )
+            True
+            sage: r = len(c)
+            sage: all( c[i]*c[j] == c[i]*(i==j) for i in range(r)
+            ....:                               for j in range(r) )
+            True
+
         """
+        if self.dimension() == 0:
+            return ()
         if self.dimension() == 1:
-            return [self.one()]
+            return (self.one(),)
 
         for g in self.gens():
             eigenpairs = g.operator().matrix().right_eigenspaces()
@@ -823,7 +863,7 @@ class FiniteDimensionalEuclideanJordanAlgebra(CombinatorialFreeModule):
                     # apply this method recursively.
                     return tuple( c.superalgebra_element()
                                   for subalgebra in subalgebras
-                                  for c in subalgebra.orthogonal_idempotents() )
+                                  for c in subalgebra.a_jordan_frame() )
 
         # If we got here, the algebra didn't decompose, at least not when we looked at
         # the eigenspaces corresponding only to basis elements of the algebra. The