From: Michael Orlitzky Date: Tue, 16 Jul 2019 20:51:12 +0000 (-0400) Subject: eja: add operator_commutes_with() for elements. X-Git-Url: https://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=7c49d1339187041755080f0569661820acfa95d9;p=sage.d.git eja: add operator_commutes_with() for elements. --- diff --git a/mjo/eja/euclidean_jordan_algebra.py b/mjo/eja/euclidean_jordan_algebra.py index 1426d5e..4713ff0 100644 --- a/mjo/eja/euclidean_jordan_algebra.py +++ b/mjo/eja/euclidean_jordan_algebra.py @@ -161,6 +161,43 @@ class FiniteDimensionalEuclideanJordanAlgebra(FiniteDimensionalAlgebra): raise NotImplementedError('irregular element') + def operator_commutes_with(self, other): + """ + Return whether or not this element operator-commutes + with ``other``. + + EXAMPLES: + + The definition of a Jordan algebra says that any element + operator-commutes with its square:: + + sage: set_random_seed() + sage: x = random_eja().random_element() + sage: x.operator_commutes_with(x^2) + True + + TESTS: + + Test Lemma 1 from Chapter III of Koecher:: + + sage: set_random_seed() + sage: J = random_eja() + sage: u = J.random_element() + sage: v = J.random_element() + sage: lhs = u.operator_commutes_with(u*v) + sage: rhs = v.operator_commutes_with(u^2) + sage: lhs == rhs + True + + """ + if not other in self.parent(): + raise ArgumentError("'other' must live in the same algebra") + + A = self.matrix() + B = other.matrix() + return (A*B == B*A) + + def det(self): """ Return my determinant, the product of my eigenvalues.