]> gitweb.michael.orlitzky.com - sage.d.git/blobdiff - mjo/eja/eja_operator.py
eja: make AA the default field because everything cool requires it.
[sage.d.git] / mjo / eja / eja_operator.py
index 6e22d367c6faa55a4f1461925ce62b04aaedfef1..667e3d5acba051e08bf461e12aafd9ae2437cc74 100644 (file)
@@ -117,17 +117,17 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
             sage: from mjo.eja.eja_operator import FiniteDimensionalEuclideanJordanAlgebraOperator
             sage: from mjo.eja.eja_algebra import (
             ....:   JordanSpinEJA,
-            ....:   RealCartesianProductEJA,
+            ....:   HadamardEJA,
             ....:   RealSymmetricEJA)
 
         EXAMPLES::
 
             sage: J1 = JordanSpinEJA(3)
-            sage: J2 = RealCartesianProductEJA(2)
+            sage: J2 = HadamardEJA(2)
             sage: J3 = RealSymmetricEJA(1)
-            sage: mat1 = matrix(QQ, [[1,2,3],
+            sage: mat1 = matrix(AA, [[1,2,3],
             ....:                    [4,5,6]])
-            sage: mat2 = matrix(QQ, [[7,8]])
+            sage: mat2 = matrix(AA, [[7,8]])
             sage: g = FiniteDimensionalEuclideanJordanAlgebraOperator(J1,
             ....:                                                     J2,
             ....:                                                     mat1)
@@ -139,9 +139,9 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
             algebras represented by the matrix:
             [39 54 69]
             Domain: Euclidean Jordan algebra of dimension 3 over
-            Rational Field
+            Algebraic Real Field
             Codomain: Euclidean Jordan algebra of dimension 1 over
-            Rational Field
+            Algebraic Real Field
 
         """
         return FiniteDimensionalEuclideanJordanAlgebraOperator(
@@ -341,9 +341,9 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
             [1 0]
             [0 1]
             Domain: Euclidean Jordan algebra of dimension 2 over
-            Rational Field
+            Algebraic Real Field
             Codomain: Euclidean Jordan algebra of dimension 2 over
-            Rational Field
+            Algebraic Real Field
 
         """
         msg = ("Linear operator between finite-dimensional Euclidean Jordan "
@@ -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
 
         """
@@ -535,7 +542,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
         EXAMPLES::
 
-            sage: J = RealSymmetricEJA(4,AA)
+            sage: J = RealSymmetricEJA(4)
             sage: x = sum(J.gens())
             sage: A = x.subalgebra_generated_by(orthonormalize_basis=True)
             sage: L0x = A(x).operator()
@@ -575,4 +582,4 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
                    self.codomain(),
                    mat)
             projectors.append(Pi)
-        return zip(eigenvalues, projectors)
+        return list(zip(eigenvalues, projectors))