]> gitweb.michael.orlitzky.com - sage.d.git/blobdiff - mjo/eja/eja_operator.py
eja: begin major overhaul of class hierarchy and naming.
[sage.d.git] / mjo / eja / eja_operator.py
index 0b52f555d51f58341fe56f5b63984f88cdf99da0..6ec335f7560f174cf205b1f814fc7a1438a35e6c 100644 (file)
@@ -2,14 +2,14 @@ from sage.matrix.constructor import matrix
 from sage.categories.all import FreeModules
 from sage.categories.map import Map
 
-class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
+class FiniteDimensionalEJAOperator(Map):
     r"""
     An operator between two finite-dimensional Euclidean Jordan algebras.
 
     SETUP::
 
         sage: from mjo.eja.eja_algebra import HadamardEJA
-        sage: from mjo.eja.eja_operator import FiniteDimensionalEuclideanJordanAlgebraOperator
+        sage: from mjo.eja.eja_operator import FiniteDimensionalEJAOperator
 
     EXAMPLES:
 
@@ -19,12 +19,12 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
         sage: J = HadamardEJA(3)
         sage: V = VectorSpace(J.base_ring(), 3)
         sage: M = matrix.identity(J.base_ring(), 3)
-        sage: FiniteDimensionalEuclideanJordanAlgebraOperator(V,J,M)
+        sage: FiniteDimensionalEJAOperator(V,J,M)
         Traceback (most recent call last):
         ...
         TypeError: domain must be a finite-dimensional Euclidean
         Jordan algebra
-        sage: FiniteDimensionalEuclideanJordanAlgebraOperator(J,V,M)
+        sage: FiniteDimensionalEJAOperator(J,V,M)
         Traceback (most recent call last):
         ...
         TypeError: codomain must be a finite-dimensional Euclidean
@@ -33,16 +33,14 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
     """
 
     def __init__(self, domain_eja, codomain_eja, mat):
-        from mjo.eja.eja_algebra import FiniteDimensionalEuclideanJordanAlgebra
+        from mjo.eja.eja_algebra import FiniteDimensionalEJA
 
         # I guess we should check this, because otherwise you could
         # pass in pretty much anything algebraish.
-        if not isinstance(domain_eja,
-                          FiniteDimensionalEuclideanJordanAlgebra):
+        if not isinstance(domain_eja, FiniteDimensionalEJA):
             raise TypeError('domain must be a finite-dimensional '
                             'Euclidean Jordan algebra')
-        if not isinstance(codomain_eja,
-                          FiniteDimensionalEuclideanJordanAlgebra):
+        if not isinstance(codomain_eja, FiniteDimensionalEJA):
             raise TypeError('codomain must be a finite-dimensional '
                             'Euclidean Jordan algebra')
 
@@ -63,7 +61,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
         # The Map initializer will set our parent to a homset, which
         # is explicitly NOT what we want, because these ain't algebra
         # homomorphisms.
-        super(FiniteDimensionalEuclideanJordanAlgebraOperator,self).__init__(parent)
+        super().__init__(parent)
 
         # Keep a matrix around to do all of the real work. It would
         # be nice if we could use a VectorSpaceMorphism instead, but
@@ -78,7 +76,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
         SETUP::
 
-            sage: from mjo.eja.eja_operator import FiniteDimensionalEuclideanJordanAlgebraOperator
+            sage: from mjo.eja.eja_operator import FiniteDimensionalEJAOperator
             sage: from mjo.eja.eja_algebra import JordanSpinEJA
 
         EXAMPLES::
@@ -86,7 +84,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
             sage: J = JordanSpinEJA(3)
             sage: x = J.linear_combination(zip(J.gens(),range(len(J.gens()))))
             sage: id = identity_matrix(J.base_ring(), J.dimension())
-            sage: f = FiniteDimensionalEuclideanJordanAlgebraOperator(J,J,id)
+            sage: f = FiniteDimensionalEJAOperator(J,J,id)
             sage: f(x) == x
             True
 
@@ -100,7 +98,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
         SETUP::
 
-            sage: from mjo.eja.eja_operator import FiniteDimensionalEuclideanJordanAlgebraOperator
+            sage: from mjo.eja.eja_operator import FiniteDimensionalEJAOperator
             sage: from mjo.eja.eja_algebra import (
             ....:   JordanSpinEJA,
             ....:   RealSymmetricEJA )
@@ -111,8 +109,8 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
             sage: J = RealSymmetricEJA(2)
             sage: id = identity_matrix(J.base_ring(), J.dimension())
-            sage: f = FiniteDimensionalEuclideanJordanAlgebraOperator(J,J,id)
-            sage: g = FiniteDimensionalEuclideanJordanAlgebraOperator(J,J,id)
+            sage: f = FiniteDimensionalEJAOperator(J,J,id)
+            sage: g = FiniteDimensionalEJAOperator(J,J,id)
             sage: f + g
             Linear operator between finite-dimensional Euclidean Jordan
             algebras represented by the matrix:
@@ -129,15 +127,15 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
             sage: id1 = identity_matrix(J1.base_ring(), 3)
             sage: J2 = JordanSpinEJA(3)
             sage: id2 = identity_matrix(J2.base_ring(), 3)
-            sage: f = FiniteDimensionalEuclideanJordanAlgebraOperator(J1,J1,id1)
-            sage: g = FiniteDimensionalEuclideanJordanAlgebraOperator(J2,J2,id2)
+            sage: f = FiniteDimensionalEJAOperator(J1,J1,id1)
+            sage: g = FiniteDimensionalEJAOperator(J2,J2,id2)
             sage: f + g
             Traceback (most recent call last):
             ...
             TypeError: unsupported operand parent(s) for +: ...
 
         """
-        return FiniteDimensionalEuclideanJordanAlgebraOperator(
+        return FiniteDimensionalEJAOperator(
                 self.domain(),
                 self.codomain(),
                 self.matrix() + other.matrix())
@@ -150,7 +148,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
         SETUP::
 
-            sage: from mjo.eja.eja_operator import FiniteDimensionalEuclideanJordanAlgebraOperator
+            sage: from mjo.eja.eja_operator import FiniteDimensionalEJAOperator
             sage: from mjo.eja.eja_algebra import (
             ....:   JordanSpinEJA,
             ....:   HadamardEJA,
@@ -164,12 +162,8 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
             sage: mat1 = matrix(AA, [[1,2,3],
             ....:                    [4,5,6]])
             sage: mat2 = matrix(AA, [[7,8]])
-            sage: g = FiniteDimensionalEuclideanJordanAlgebraOperator(J1,
-            ....:                                                     J2,
-            ....:                                                     mat1)
-            sage: f = FiniteDimensionalEuclideanJordanAlgebraOperator(J2,
-            ....:                                                     J3,
-            ....:                                                     mat2)
+            sage: g = FiniteDimensionalEJAOperator(J1, J2, mat1)
+            sage: f = FiniteDimensionalEJAOperator(J2, J3, mat2)
             sage: f*g
             Linear operator between finite-dimensional Euclidean Jordan
             algebras represented by the matrix:
@@ -180,7 +174,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
             Algebraic Real Field
 
         """
-        return FiniteDimensionalEuclideanJordanAlgebraOperator(
+        return FiniteDimensionalEJAOperator(
           other.domain(),
           self.codomain(),
           self.matrix()*other.matrix())
@@ -202,14 +196,14 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
         SETUP::
 
-            sage: from mjo.eja.eja_operator import FiniteDimensionalEuclideanJordanAlgebraOperator
+            sage: from mjo.eja.eja_operator import FiniteDimensionalEJAOperator
             sage: from mjo.eja.eja_algebra import RealSymmetricEJA
 
         EXAMPLES::
 
             sage: J = RealSymmetricEJA(2)
             sage: id = identity_matrix(J.base_ring(), J.dimension())
-            sage: f = FiniteDimensionalEuclideanJordanAlgebraOperator(J,J,id)
+            sage: f = FiniteDimensionalEJAOperator(J,J,id)
             sage: ~f
             Linear operator between finite-dimensional Euclidean Jordan
             algebras represented by the matrix:
@@ -220,7 +214,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
             Codomain: Euclidean Jordan algebra of dimension 3 over...
 
         """
-        return FiniteDimensionalEuclideanJordanAlgebraOperator(
+        return FiniteDimensionalEJAOperator(
                 self.codomain(),
                 self.domain(),
                 ~self.matrix())
@@ -237,7 +231,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
         SETUP::
 
-            sage: from mjo.eja.eja_operator import FiniteDimensionalEuclideanJordanAlgebraOperator
+            sage: from mjo.eja.eja_operator import FiniteDimensionalEJAOperator
             sage: from mjo.eja.eja_algebra import RealSymmetricEJA
 
         EXAMPLES:
@@ -267,7 +261,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
         """
         try:
             if other in self.codomain().base_ring():
-                return FiniteDimensionalEuclideanJordanAlgebraOperator(
+                return FiniteDimensionalEJAOperator(
                     self.domain(),
                     self.codomain(),
                     self.matrix()*other)
@@ -278,7 +272,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
         # This should eventually delegate to _composition_ after performing
         # some sanity checks for us.
-        mor = super(FiniteDimensionalEuclideanJordanAlgebraOperator,self)
+        mor = super(FiniteDimensionalEJAOperator,self)
         return mor.__mul__(other)
 
 
@@ -288,14 +282,14 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
         SETUP::
 
-            sage: from mjo.eja.eja_operator import FiniteDimensionalEuclideanJordanAlgebraOperator
+            sage: from mjo.eja.eja_operator import FiniteDimensionalEJAOperator
             sage: from mjo.eja.eja_algebra import RealSymmetricEJA
 
         EXAMPLES::
 
             sage: J = RealSymmetricEJA(2)
             sage: id = identity_matrix(J.base_ring(), J.dimension())
-            sage: f = FiniteDimensionalEuclideanJordanAlgebraOperator(J,J,id)
+            sage: f = FiniteDimensionalEJAOperator(J,J,id)
             sage: -f
             Linear operator between finite-dimensional Euclidean Jordan
             algebras represented by the matrix:
@@ -306,7 +300,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
             Codomain: Euclidean Jordan algebra of dimension 3 over...
 
         """
-        return FiniteDimensionalEuclideanJordanAlgebraOperator(
+        return FiniteDimensionalEJAOperator(
                 self.domain(),
                 self.codomain(),
                 -self.matrix())
@@ -318,7 +312,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
         SETUP::
 
-            sage: from mjo.eja.eja_operator import FiniteDimensionalEuclideanJordanAlgebraOperator
+            sage: from mjo.eja.eja_operator import FiniteDimensionalEJAOperator
             sage: from mjo.eja.eja_algebra import RealSymmetricEJA
 
         TESTS:
@@ -328,7 +322,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
             sage: J = RealSymmetricEJA(2)
             sage: id = identity_matrix(J.base_ring(), J.dimension())
-            sage: f = FiniteDimensionalEuclideanJordanAlgebraOperator(J,J,id)
+            sage: f = FiniteDimensionalEJAOperator(J,J,id)
             sage: f^0 + f^1 + f^2
             Linear operator between finite-dimensional Euclidean Jordan
             algebras represented by the matrix:
@@ -350,7 +344,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
         else:
             mat = self.matrix()**n
 
-        return FiniteDimensionalEuclideanJordanAlgebraOperator(
+        return FiniteDimensionalEJAOperator(
                  self.domain(),
                  self.codomain(),
                  mat)
@@ -364,14 +358,14 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
         SETUP::
 
-            sage: from mjo.eja.eja_operator import FiniteDimensionalEuclideanJordanAlgebraOperator
+            sage: from mjo.eja.eja_operator import FiniteDimensionalEJAOperator
             sage: from mjo.eja.eja_algebra import JordanSpinEJA
 
         EXAMPLES::
 
             sage: J = JordanSpinEJA(2)
             sage: id = identity_matrix(J.base_ring(), J.dimension())
-            sage: FiniteDimensionalEuclideanJordanAlgebraOperator(J,J,id)
+            sage: FiniteDimensionalEJAOperator(J,J,id)
             Linear operator between finite-dimensional Euclidean Jordan
             algebras represented by the matrix:
             [1 0]
@@ -398,14 +392,14 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
         SETUP::
 
-            sage: from mjo.eja.eja_operator import FiniteDimensionalEuclideanJordanAlgebraOperator
+            sage: from mjo.eja.eja_operator import FiniteDimensionalEJAOperator
             sage: from mjo.eja.eja_algebra import RealSymmetricEJA
 
         EXAMPLES::
 
             sage: J = RealSymmetricEJA(2)
             sage: id = identity_matrix(J.base_ring(),J.dimension())
-            sage: f = FiniteDimensionalEuclideanJordanAlgebraOperator(J,J,id)
+            sage: f = FiniteDimensionalEJAOperator(J,J,id)
             sage: f - (f*2)
             Linear operator between finite-dimensional Euclidean Jordan
             algebras represented by the matrix:
@@ -449,7 +443,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
         SETUP::
 
-            sage: from mjo.eja.eja_operator import FiniteDimensionalEuclideanJordanAlgebraOperator
+            sage: from mjo.eja.eja_operator import FiniteDimensionalEJAOperator
             sage: from mjo.eja.eja_algebra import (random_eja,
             ....:                                  JordanSpinEJA,
             ....:                                  RealSymmetricEJA)
@@ -462,13 +456,13 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
             sage: M = matrix(R, [ [0, 0],
             ....:                 [0, 0],
             ....:                 [0, 0] ])
-            sage: L = FiniteDimensionalEuclideanJordanAlgebraOperator(J1,J2,M)
+            sage: L = FiniteDimensionalEJAOperator(J1,J2,M)
             sage: L.is_zero()
             True
             sage: M = matrix(R, [ [0, 0],
             ....:                 [0, 1],
             ....:                 [0, 0] ])
-            sage: L = FiniteDimensionalEuclideanJordanAlgebraOperator(J1,J2,M)
+            sage: L = FiniteDimensionalEJAOperator(J1,J2,M)
             sage: L.is_zero()
             False
 
@@ -591,14 +585,14 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
         SETUP::
 
-            sage: from mjo.eja.eja_operator import FiniteDimensionalEuclideanJordanAlgebraOperator
+            sage: from mjo.eja.eja_operator import FiniteDimensionalEJAOperator
             sage: from mjo.eja.eja_algebra import RealSymmetricEJA
 
         EXAMPLES::
 
             sage: J = RealSymmetricEJA(2)
             sage: mat = matrix(J.base_ring(), J.dimension(), range(9))
-            sage: f = FiniteDimensionalEuclideanJordanAlgebraOperator(J,J,mat)
+            sage: f = FiniteDimensionalEJAOperator(J,J,mat)
             sage: f.matrix()
             [0 1 2]
             [3 4 5]
@@ -615,7 +609,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
 
         SETUP::
 
-            sage: from mjo.eja.eja_operator import FiniteDimensionalEuclideanJordanAlgebraOperator
+            sage: from mjo.eja.eja_operator import FiniteDimensionalEJAOperator
             sage: from mjo.eja.eja_algebra import RealSymmetricEJA
 
         EXAMPLES::
@@ -680,7 +674,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map):
             # for the spectral theorem to work.
             us[i] = us[i]/us[i].norm()
             mat = us[i].column()*us[i].row()
-            Pi = FiniteDimensionalEuclideanJordanAlgebraOperator(
+            Pi = FiniteDimensionalEJAOperator(
                    self.domain(),
                    self.codomain(),
                    mat)