-def eja_ln(dimension, field=QQ):
- """
- Return the Jordan algebra corresponding to the Lorentz "ice cream"
- cone of the given ``dimension``.
-
- EXAMPLES:
-
- This multiplication table can be verified by hand::
-
- sage: J = eja_ln(4)
- sage: e0,e1,e2,e3 = J.gens()
- sage: e0*e0
- e0
- sage: e0*e1
- e1
- sage: e0*e2
- e2
- sage: e0*e3
- e3
- sage: e1*e2
- 0
- sage: e1*e3
- 0
- sage: e2*e3
- 0
-
- In one dimension, this is the reals under multiplication::
-
- sage: J1 = eja_ln(1)
- sage: J2 = eja_rn(1)
- sage: J1 == J2
- True
-
- """
- Qs = []
- id_matrix = identity_matrix(field,dimension)
- for i in xrange(dimension):
- ei = id_matrix.column(i)
- Qi = zero_matrix(field,dimension)
- Qi.set_row(0, ei)
- Qi.set_column(0, ei)
- Qi += diagonal_matrix(dimension, [ei[0]]*dimension)
- # The addition of the diagonal matrix adds an extra ei[0] in the
- # upper-left corner of the matrix.
- Qi[0,0] = Qi[0,0] * ~field(2)
- Qs.append(Qi)
-
- # The rank of the spin factor algebra is two, UNLESS we're in a
- # one-dimensional ambient space (the rank is bounded by the
- # ambient dimension).
- rank = min(dimension,2)
- return FiniteDimensionalEuclideanJordanAlgebra(field,Qs,rank=rank)
-
-
-def eja_sn(dimension, field=QQ):
- """
- Return the simple Jordan algebra of ``dimension``-by-``dimension``
- symmetric matrices over ``field``.
-
- EXAMPLES::
-
- sage: J = eja_sn(2)
- sage: e0, e1, e2 = J.gens()
- sage: e0*e0
- e0
- sage: e1*e1
- e0 + e2
- sage: e2*e2
- e2
-
- """
- S = _real_symmetric_basis(dimension, field=field)
- Qs = _multiplication_table_from_matrix_basis(S)
-
- return FiniteDimensionalEuclideanJordanAlgebra(field,Qs,rank=dimension)
-