]> gitweb.michael.orlitzky.com - sage.d.git/blobdiff - mjo/eja/eja_operator.py
eja: add a new TrivialEJA class and some tests for it.
[sage.d.git] / mjo / eja / eja_operator.py
index 41d68560524e9394a97dc6ff3ecbaf19e27cd06a..2a0c9c48633cd06551c49515840680b57a5b927d 100644 (file)
@@ -420,14 +420,13 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
             sage: idJ.inverse() == idJ
             True
 
-        The zero operator is never invertible::
+        The inverse of the inverse is the operator we started with::
 
             sage: set_random_seed()
-            sage: J = random_eja()
-            sage: J.zero().operator().inverse()
-            Traceback (most recent call last):
-            ...
-            ZeroDivisionError: input matrix must be nonsingular
+            sage: x = random_eja().random_element()
+            sage: L = x.operator()
+            sage: not L.is_invertible() or (L.inverse().inverse() == L)
+            True
 
         """
         return ~self
@@ -439,7 +438,9 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
         SETUP::
 
-            sage: from mjo.eja.eja_algebra import RealSymmetricEJA, random_eja
+            sage: from mjo.eja.eja_algebra import (RealSymmetricEJA,
+            ....:                                  TrivialEJA,
+            ....:                                  random_eja)
 
         EXAMPLES::
 
@@ -454,6 +455,12 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
             sage: x.operator().is_invertible()
             True
 
+        The zero operator is invertible in a trivial algebra::
+
+            sage: J = TrivialEJA()
+            sage: J.zero().operator().is_invertible()
+            True
+
         TESTS:
 
         The identity operator is always invertible::
@@ -463,11 +470,11 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
             sage: J.one().operator().is_invertible()
             True
 
-        The zero operator is never invertible::
+        The zero operator is never invertible in a nontrivial algebra::
 
             sage: set_random_seed()
             sage: J = random_eja()
-            sage: J.zero().operator().is_invertible()
+            sage: not J.is_trivial() and J.zero().operator().is_invertible()
             False
 
         """
@@ -524,6 +531,11 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
         Return the spectral decomposition of this operator as a list of
         (eigenvalue, orthogonal projector) pairs.
 
+        This is the unique spectral decomposition, up to the order of
+        the projection operators, with distinct eigenvalues. So, the
+        projections are generally onto subspaces of dimension greater
+        than one.
+
         SETUP::
 
             sage: from mjo.eja.eja_algebra import RealSymmetricEJA
@@ -547,15 +559,9 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
             True
             sage: P1^2 == P1
             True
-            sage: c0 = P0(A.one())
-            sage: c1 = P1(A.one())
-            sage: c0.inner_product(c1) == 0
-            True
-            sage: c0 + c1 == A.one()
-            True
-            sage: c0.is_idempotent()
+            sage: P0*P1 == A.zero().operator()
             True
-            sage: c1.is_idempotent()
+            sage: P1*P0 == A.zero().operator()
             True
 
         """