]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
mjo/eja/eja_operator.py: add complex hermitian EJA tests for is_isomorphism()
authorMichael Orlitzky <michael@orlitzky.com>
Thu, 28 Nov 2024 18:16:38 +0000 (13:16 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Thu, 28 Nov 2024 18:16:38 +0000 (13:16 -0500)
mjo/eja/eja_operator.py

index 8b6dbe2d7217833e4a29a896c3ca904b8cf4a343..8f60ce706ad4eff4288976d79597ffb3109615c0 100644 (file)
@@ -737,7 +737,8 @@ class EJAOperator(Map):
 
         SETUP::
 
-            sage: from mjo.eja.eja_algebra import (JordanSpinEJA,
+            sage: from mjo.eja.eja_algebra import (ComplexHermitianEJA,
+            ....:                                  JordanSpinEJA,
             ....:                                  HadamardEJA,
             ....:                                  RealSymmetricEJA,
             ....:                                  TrivialEJA,
@@ -801,6 +802,42 @@ class EJAOperator(Map):
             sage: (L^2).is_isomorphism()
             True
 
+        And the complex hermitian algebra. This starts to get tricky
+        because we need to coerce the unitary matrix into the correct
+        space (with real scalars)::
+
+            sage: J = ComplexHermitianEJA.random_instance()
+            sage: n = J.one().to_matrix().nrows()
+            sage: U = random_unitary_matrix(QQbar, n)
+            sage: UU = J.matrix_space().from_list(U.rows())
+
+            sage: L = lambda X: J((UU.conjugate_transpose()*X*UU))
+            sage: columns = ( L(b).to_vector() for b in J.matrix_basis() )
+            sage: MS = MatrixSpace(J.base_ring(), J.dimension(), J.dimension())
+            sage: M = MS(columns).transpose()
+            sage: L = EJAOperator(J,J,M)
+            sage: L.is_isomorphism()
+            True
+            sage: L.inverse().is_isomorphism()
+            True
+            sage: (L^2).is_isomorphism()
+            True
+
+        Now with a conjugate (there are two components to the Jordan
+        automorphism group of the ComplexHermitianEJA)::
+
+            sage: L = lambda X: J((UU.conjugate_transpose()*X.conjugate()*UU))
+            sage: columns = ( L(b).to_vector() for b in J.matrix_basis() )
+            sage: MS = MatrixSpace(J.base_ring(), J.dimension(), J.dimension())
+            sage: M = MS(columns).transpose()
+            sage: L = EJAOperator(J,J,M)
+            sage: L.is_isomorphism()
+            True
+            sage: L.inverse().is_isomorphism()
+            True
+            sage: (L^2).is_isomorphism()
+            True
+
         TESTS:
 
         The identity operator is always a Jordan isomorphism::