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::
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
"""
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