From 7c49d1339187041755080f0569661820acfa95d9 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Tue, 16 Jul 2019 16:51:12 -0400 Subject: [PATCH] eja: add operator_commutes_with() for elements. --- mjo/eja/euclidean_jordan_algebra.py | 37 +++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) 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. -- 2.44.2