]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
eja: add the AlbertEJA class.
authorMichael Orlitzky <michael@orlitzky.com>
Sun, 7 Mar 2021 05:10:07 +0000 (00:10 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Sun, 7 Mar 2021 05:10:07 +0000 (00:10 -0500)
mjo/eja/TODO
mjo/eja/all.py
mjo/eja/eja_algebra.py

index 2fb5505439e6530cdc7e6c9d31ad06941937918f..f415681182dd18bf401aba539a66f916e4f0c191 100644 (file)
@@ -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.
        sage: x.is_invertible() == (x.det() != 0)
 
    in eja_element.py returns False.
-
-8. Add an alias for AlbertAlgebra.
index f5ef5c9d9533082f1cebf36492211d3592baba2c..ef020fa6ee017906eed9407f3cc77eec79ad1237 100644 (file)
@@ -2,7 +2,8 @@
 All imports from mjo.eja modules.
 """
 
 All imports from mjo.eja modules.
 """
 
-from mjo.eja.eja_algebra import (BilinearFormEJA,
+from mjo.eja.eja_algebra import (AlbertEJA,
+                                 BilinearFormEJA,
                                  ComplexHermitianEJA,
                                  HadamardEJA,
                                  JordanSpinEJA,
                                  ComplexHermitianEJA,
                                  HadamardEJA,
                                  JordanSpinEJA,
index 6750f228451b5ec2052efc3974ddee72cd0d0c12..ca3df5fea55949225a51f8255a2c13a33c37d9f2 100644 (file)
@@ -36,17 +36,21 @@ for these simple algebras:
 
 In addition to these, we provide two other example constructions,
 
 
 In addition to these, we provide two other example constructions,
 
+  * :class:`JordanSpinEJA`
   * :class:`HadamardEJA`
   * :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
   * :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::
 
 
 SETUP::
 
@@ -58,8 +62,6 @@ EXAMPLES::
     Euclidean Jordan algebra of dimension...
 """
 
     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
 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)
 
         """
         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
 class HadamardEJA(ConcreteEJA, RationalBasisEJA):
     """
     Return the Euclidean Jordan Algebra corresponding to the set