what can be supported in a general Jordan Algebra.
"""
-from sage.all import *
+from sage.structure.unique_representation import UniqueRepresentation
+from sage.algebras.finite_dimensional_algebras.finite_dimensional_algebra import FiniteDimensionalAlgebra
+
+class FiniteDimensionalEuclideanJordanAlgebra(FiniteDimensionalAlgebra):
+ @staticmethod
+ def __classcall__(cls, field, mult_table, names='e', category=None):
+ fda = super(FiniteDimensionalEuclideanJordanAlgebra, cls)
+ return fda.__classcall_private__(cls,
+ field,
+ mult_table,
+ names,
+ category)
+
+ def __init__(self, field, mult_table, names='e', category=None):
+ fda = super(FiniteDimensionalEuclideanJordanAlgebra, self)
+ fda.__init__(field, mult_table, names, category)
+
+
+ def _repr_(self):
+ """
+ Return a string representation of ``self``.
+ """
+ return "Euclidean Jordan algebra of degree {} over {}".format(self.degree(), self.base_ring())
-def eja_minimal_polynomial(x):
- """
- Return the minimal polynomial of ``x`` in its parent EJA
- """
- return x._x.matrix().minimal_polynomial()
def eja_rn(dimension, field=QQ):
# Assuming associativity is wrong here, but it works to
# temporarily trick the Jordan algebra constructor into using the
# multiplication table.
- A = FiniteDimensionalAlgebra(field,Qs,assume_associative=True)
- return JordanAlgebra(A)
+ return FiniteDimensionalEuclideanJordanAlgebra(field,Qs)
def eja_ln(dimension, field=QQ):
"""
- Return the Jordan algebra corresponding to the Lorenzt "ice cream"
+ Return the Jordan algebra corresponding to the Lorentz "ice cream"
cone of the given ``dimension``.
EXAMPLES:
Qi[0,0] = Qi[0,0] * ~field(2)
Qs.append(Qi)
- # Assuming associativity is wrong here, but it works to
- # temporarily trick the Jordan algebra constructor into using the
- # multiplication table.
- A = FiniteDimensionalAlgebra(field,Qs,assume_associative=True)
- return JordanAlgebra(A)
+ return FiniteDimensionalEuclideanJordanAlgebra(field,Qs)