SETUP::
- sage: from mjo.eja.eja_algebra import (JordanSpinEJA,
+ sage: from mjo.eja.eja_algebra import (ComplexHermitianEJA,
+ ....: JordanSpinEJA,
....: HadamardEJA,
....: RealSymmetricEJA,
....: TrivialEJA,
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::