From 7f55521ab4652d3ca10cd085f8e9d41bf149e8e5 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Sun, 7 Mar 2021 00:10:07 -0500 Subject: [PATCH] eja: add the AlbertEJA class. --- mjo/eja/TODO | 2 -- mjo/eja/all.py | 3 ++- mjo/eja/eja_algebra.py | 40 ++++++++++++++++++++++++++++++++-------- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/mjo/eja/TODO b/mjo/eja/TODO index 2fb5505..f415681 100644 --- a/mjo/eja/TODO +++ b/mjo/eja/TODO @@ -36,5 +36,3 @@ sage: a0 = (1/4)*X[4]**2*X[6]**2 - (1/2)*X[2]*X[5]*X[6]**2 - (1/2)*X[3]*X[4]*X[6 sage: x.is_invertible() == (x.det() != 0) in eja_element.py returns False. - -8. Add an alias for AlbertAlgebra. diff --git a/mjo/eja/all.py b/mjo/eja/all.py index f5ef5c9..ef020fa 100644 --- a/mjo/eja/all.py +++ b/mjo/eja/all.py @@ -2,7 +2,8 @@ All imports from mjo.eja modules. """ -from mjo.eja.eja_algebra import (BilinearFormEJA, +from mjo.eja.eja_algebra import (AlbertEJA, + BilinearFormEJA, ComplexHermitianEJA, HadamardEJA, JordanSpinEJA, diff --git a/mjo/eja/eja_algebra.py b/mjo/eja/eja_algebra.py index 6750f22..ca3df5f 100644 --- a/mjo/eja/eja_algebra.py +++ b/mjo/eja/eja_algebra.py @@ -36,17 +36,21 @@ for these simple algebras: In addition to these, we provide two other example constructions, + * :class:`JordanSpinEJA` * :class:`HadamardEJA` + * :class:`AlbertEJA` * :class:`TrivialEJA` The Jordan spin algebra is a bilinear form algebra where the bilinear form is the identity. The Hadamard EJA is simply a Cartesian product -of one-dimensional spin algebras. And last but least, the trivial EJA -is exactly what you think it is; it could also be obtained by -constructing a dimension-zero instance of any of the other -algebras. Cartesian products of these are also supported using the -usual ``cartesian_product()`` function; as a result, we support (up to -isomorphism) all Euclidean Jordan algebras. +of one-dimensional spin algebras. The Albert EJA is simply a special +case of the :class:`OctonionHermitianEJA` where the matrices are +three-by-three and the resulting space has dimension 27. And +last/least, the trivial EJA is exactly what you think it is; it could +also be obtained by constructing a dimension-zero instance of any of +the other algebras. Cartesian products of these are also supported +using the usual ``cartesian_product()`` function; as a result, we +support (up to isomorphism) all Euclidean Jordan algebras. SETUP:: @@ -58,8 +62,6 @@ EXAMPLES:: Euclidean Jordan algebra of dimension... """ -from itertools import repeat - from sage.algebras.quatalg.quaternion_algebra import QuaternionAlgebra from sage.categories.magmatic_algebras import MagmaticAlgebras from sage.categories.sets_cat import cartesian_product @@ -2770,6 +2772,28 @@ class OctonionHermitianEJA(ConcreteEJA, MatrixEJA): """ return (X*Y).trace().real().coefficient(0) + +class AlbertEJA(OctonionHermitianEJA): + r""" + The Albert algebra is the algebra of three-by-three Hermitian + matrices whose entries are octonions. + + SETUP:: + + from mjo.eja.eja_algebra import AlbertEJA + + EXAMPLES:: + + sage: AlbertEJA(field=QQ, orthonormalize=False) + Euclidean Jordan algebra of dimension 27 over Rational Field + sage: AlbertEJA() # long time + Euclidean Jordan algebra of dimension 27 over Algebraic Real Field + + """ + def __init__(self, *args, **kwargs): + super().__init__(3, *args, **kwargs) + + class HadamardEJA(ConcreteEJA, RationalBasisEJA): """ Return the Euclidean Jordan Algebra corresponding to the set -- 2.43.2