From: Michael Orlitzky Date: Thu, 28 Nov 2024 18:16:38 +0000 (-0500) Subject: mjo/eja/eja_operator.py: add complex hermitian EJA tests for is_isomorphism() X-Git-Url: https://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=ab80a84ce4576573c6c009ba0c17b715bad420c2;p=sage.d.git mjo/eja/eja_operator.py: add complex hermitian EJA tests for is_isomorphism() --- diff --git a/mjo/eja/eja_operator.py b/mjo/eja/eja_operator.py index 8b6dbe2..8f60ce7 100644 --- a/mjo/eja/eja_operator.py +++ b/mjo/eja/eja_operator.py @@ -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::