# Jordan Algebras#

AUTHORS:

• Travis Scrimshaw (2014-04-02): initial version

• Travis Scrimshaw (2023-05-09): added the 27 dimensional exceptional Jordan algebra

class sage.algebras.jordan_algebra.ExceptionalJordanAlgebra(O)[source]#

Bases: JordanAlgebra

The exceptional $$27$$ dimensional Jordan algebra as self-adjoint $$3 \times 3$$ matrix over an octonion algebra.

Let $$\mathbf{O}$$ be the OctonionAlgebra over a commutative ring $$R$$ of characteristic not equal to $$2$$. The exceptional Jordan algebra $$\mathfrak{h}_3(\mathbf{O})$$ is a $$27$$ dimensional free $$R$$-module spanned by the matrices

$\begin{split}\begin{bmatrix} \alpha & x & y \\ x^* & \beta & z \\ y^* & z^* & \gamma \end{bmatrix}\end{split}$

for $$\alpha, \beta, \gamma \in R$$ and $$x, y, z \in \mathbf{O}$$, with multiplication given by the usual symmetrizer operation $$X \circ Y = \frac{1}{2}(XY + YX)$$.

These are also known as Albert algebras due to the work of Abraham Adrian Albert on these algebras over $$\RR$$.

EXAMPLES:

We construct an exceptional Jordan algebra over $$\QQ$$ and perform some basic computations:

sage: O = OctonionAlgebra(QQ)
sage: J = JordanAlgebra(O)
sage: gens = J.gens()
sage: gens[1]
[0 0 0]
[0 1 0]
[0 0 0]
sage: gens[3]
[0 1 0]
[1 0 0]
[0 0 0]
sage: gens[1] * gens[3]
[  0 1/2   0]
[1/2   0   0]
[  0   0   0]

>>> from sage.all import *
>>> O = OctonionAlgebra(QQ)
>>> J = JordanAlgebra(O)
>>> gens = J.gens()
>>> gens[Integer(1)]
[0 0 0]
[0 1 0]
[0 0 0]
>>> gens[Integer(3)]
[0 1 0]
[1 0 0]
[0 0 0]
>>> gens[Integer(1)] * gens[Integer(3)]
[  0 1/2   0]
[1/2   0   0]
[  0   0   0]


The Lie algebra of derivations of the exceptional Jordan algebra is isomorphic to the simple Lie algebra of type $$F_4$$. We verify that we the derivation module has the correct dimension:

sage: len(J.derivations_basis())  # long time
52
sage: LieAlgebra(QQ, cartan_type='F4').dimension()
52

>>> from sage.all import *
>>> len(J.derivations_basis())  # long time
52
>>> LieAlgebra(QQ, cartan_type='F4').dimension()
52


REFERENCES:

class Element(parent, data)[source]#

Bases: AlgebraElement

An element of an exceptional Jordan algebra.

monomial_coefficients(copy=True)[source]#

Return a dictionary whose keys are indices of basis elements in the support of self and whose values are the corresponding coefficients.

INPUT:

• copy – ignored

EXAMPLES:

sage: O = OctonionAlgebra(QQ)
sage: J = JordanAlgebra(O)
sage: elt = sum(~QQ(ind) * b for ind, b in enumerate(J.basis()[::6], start=1)); elt
[              1           1/2*k  1/3*i + 1/4*lk]
[         -1/2*k               0          1/5*li]
[-1/3*i - 1/4*lk         -1/5*li               0]
sage: elt.monomial_coefficients()
{0: 1, 6: 1/2, 12: 1/3, 18: 1/4, 24: 1/5}

>>> from sage.all import *
>>> O = OctonionAlgebra(QQ)
>>> J = JordanAlgebra(O)
>>> elt = sum(~QQ(ind) * b for ind, b in enumerate(J.basis()[::Integer(6)], start=Integer(1))); elt
[              1           1/2*k  1/3*i + 1/4*lk]
[         -1/2*k               0          1/5*li]
[-1/3*i - 1/4*lk         -1/5*li               0]
>>> elt.monomial_coefficients()
{0: 1, 6: 1/2, 12: 1/3, 18: 1/4, 24: 1/5}

algebra_generators()[source]#

Return a basis of self.

EXAMPLES:

sage: O = OctonionAlgebra(QQ)
sage: J = JordanAlgebra(O)
sage: B = J.basis()
sage: B[::6]
([1 0 0]
[0 0 0]
[0 0 0],
[ 0  k  0]
[-k  0  0]
[ 0  0  0],
[ 0  0  i]
[ 0  0  0]
[-i  0  0],
[  0   0  lk]
[  0   0   0]
[-lk   0   0],
[  0   0   0]
[  0   0  li]
[  0 -li   0])
sage: len(B)
27

>>> from sage.all import *
>>> O = OctonionAlgebra(QQ)
>>> J = JordanAlgebra(O)
>>> B = J.basis()
>>> B[::Integer(6)]
([1 0 0]
[0 0 0]
[0 0 0],
[ 0  k  0]
[-k  0  0]
[ 0  0  0],
[ 0  0  i]
[ 0  0  0]
[-i  0  0],
[  0   0  lk]
[  0   0   0]
[-lk   0   0],
[  0   0   0]
[  0   0  li]
[  0 -li   0])
>>> len(B)
27

basis()[source]#

Return a basis of self.

EXAMPLES:

sage: O = OctonionAlgebra(QQ)
sage: J = JordanAlgebra(O)
sage: B = J.basis()
sage: B[::6]
([1 0 0]
[0 0 0]
[0 0 0],
[ 0  k  0]
[-k  0  0]
[ 0  0  0],
[ 0  0  i]
[ 0  0  0]
[-i  0  0],
[  0   0  lk]
[  0   0   0]
[-lk   0   0],
[  0   0   0]
[  0   0  li]
[  0 -li   0])
sage: len(B)
27

>>> from sage.all import *
>>> O = OctonionAlgebra(QQ)
>>> J = JordanAlgebra(O)
>>> B = J.basis()
>>> B[::Integer(6)]
([1 0 0]
[0 0 0]
[0 0 0],
[ 0  k  0]
[-k  0  0]
[ 0  0  0],
[ 0  0  i]
[ 0  0  0]
[-i  0  0],
[  0   0  lk]
[  0   0   0]
[-lk   0   0],
[  0   0   0]
[  0   0  li]
[  0 -li   0])
>>> len(B)
27

gens()[source]#

Return the generators of self.

EXAMPLES:

sage: O = OctonionAlgebra(QQ)
sage: J = JordanAlgebra(O)
sage: G = J.gens()
sage: G[0]
[1 0 0]
[0 0 0]
[0 0 0]
sage: G[5]
[ 0  j  0]
[-j  0  0]
[ 0  0  0]
sage: G[22]
[ 0  0  0]
[ 0  0  k]
[ 0 -k  0]

>>> from sage.all import *
>>> O = OctonionAlgebra(QQ)
>>> J = JordanAlgebra(O)
>>> G = J.gens()
>>> G[Integer(0)]
[1 0 0]
[0 0 0]
[0 0 0]
>>> G[Integer(5)]
[ 0  j  0]
[-j  0  0]
[ 0  0  0]
>>> G[Integer(22)]
[ 0  0  0]
[ 0  0  k]
[ 0 -k  0]

one()[source]#

Return multiplicative identity.

EXAMPLES:

sage: O = OctonionAlgebra(QQ)
sage: J = JordanAlgebra(O)
sage: J.one()
[1 0 0]
[0 1 0]
[0 0 1]
sage: all(J.one() * b == b for b in J.basis())
True

>>> from sage.all import *
>>> O = OctonionAlgebra(QQ)
>>> J = JordanAlgebra(O)
>>> J.one()
[1 0 0]
[0 1 0]
[0 0 1]
>>> all(J.one() * b == b for b in J.basis())
True

some_elements()[source]#

Return some elements of self.

EXAMPLES:

sage: O = OctonionAlgebra(QQ)
sage: J = JordanAlgebra(O)
sage: J.some_elements()
[[6/5   0   0]
[  0 6/5   0]
[  0   0 6/5],
[1 0 0]
[0 1 0]
[0 0 1],
[0 0 0]
[0 0 0]
[0 0 0],
[0 0 0]
[0 1 0]
[0 0 0],
[ 0  j  0]
[-j  0  0]
[ 0  0  0],
[  0   0  lj]
[  0   0   0]
[-lj   0   0],
[      0       0       0]
[      0       1  1/2*lj]
[      0 -1/2*lj       0],
[        1         0  j + 2*li]
[        0         1         0]
[-j - 2*li         0         1],
[      1  j + lk       l]
[-j - lk       0  i + lj]
[     -l -i - lj       0],
[     1  3/2*l    2*k]
[-3/2*l      0  5/2*j]
[  -2*k -5/2*j      0]]

sage: O = OctonionAlgebra(GF(3))
sage: J = JordanAlgebra(O)
sage: J.some_elements()
[[-1  0  0]
[ 0 -1  0]
[ 0  0 -1],
[1 0 0]
[0 1 0]
[0 0 1],
[0 0 0]
[0 0 0]
[0 0 0],
[0 0 0]
[0 1 0]
[0 0 0],
[ 0  j  0]
[-j  0  0]
[ 0  0  0],
[  0   0  lj]
[  0   0   0]
[-lj   0   0],
[  0   0   0]
[  0   1 -lj]
[  0  lj   0],
[      1       0  j - li]
[      0       1       0]
[-j + li       0       1],
[      1  j + lk       l]
[-j - lk       0  i + lj]
[     -l -i - lj       0],
[ 1  0 -k]
[ 0  0  j]
[ k -j  0]]

>>> from sage.all import *
>>> O = OctonionAlgebra(QQ)
>>> J = JordanAlgebra(O)
>>> J.some_elements()
[[6/5   0   0]
[  0 6/5   0]
[  0   0 6/5],
[1 0 0]
[0 1 0]
[0 0 1],
[0 0 0]
[0 0 0]
[0 0 0],
[0 0 0]
[0 1 0]
[0 0 0],
[ 0  j  0]
[-j  0  0]
[ 0  0  0],
[  0   0  lj]
[  0   0   0]
[-lj   0   0],
[      0       0       0]
[      0       1  1/2*lj]
[      0 -1/2*lj       0],
[        1         0  j + 2*li]
[        0         1         0]
[-j - 2*li         0         1],
[      1  j + lk       l]
[-j - lk       0  i + lj]
[     -l -i - lj       0],
[     1  3/2*l    2*k]
[-3/2*l      0  5/2*j]
[  -2*k -5/2*j      0]]

>>> O = OctonionAlgebra(GF(Integer(3)))
>>> J = JordanAlgebra(O)
>>> J.some_elements()
[[-1  0  0]
[ 0 -1  0]
[ 0  0 -1],
[1 0 0]
[0 1 0]
[0 0 1],
[0 0 0]
[0 0 0]
[0 0 0],
[0 0 0]
[0 1 0]
[0 0 0],
[ 0  j  0]
[-j  0  0]
[ 0  0  0],
[  0   0  lj]
[  0   0   0]
[-lj   0   0],
[  0   0   0]
[  0   1 -lj]
[  0  lj   0],
[      1       0  j - li]
[      0       1       0]
[-j + li       0       1],
[      1  j + lk       l]
[-j - lk       0  i + lj]
[     -l -i - lj       0],
[ 1  0 -k]
[ 0  0  j]
[ k -j  0]]

zero()[source]#

EXAMPLES:

sage: O = OctonionAlgebra(QQ)
sage: J = JordanAlgebra(O)
sage: J.zero()
[0 0 0]
[0 0 0]
[0 0 0]

>>> from sage.all import *
>>> O = OctonionAlgebra(QQ)
>>> J = JordanAlgebra(O)
>>> J.zero()
[0 0 0]
[0 0 0]
[0 0 0]

class sage.algebras.jordan_algebra.JordanAlgebra[source]#

A Jordan algebra.

A Jordan algebra is a magmatic algebra (over a commutative ring $$R$$) whose multiplication satisfies the following axioms:

• $$xy = yx$$, and

• $$(xy)(xx) = x(y(xx))$$ (the Jordan identity).

See [Ja1971], [Ch2012], and [McC1978], for example.

These axioms imply that a Jordan algebra is power-associative and the following generalization of Jordan’s identity holds [Al1947]: $$(x^m y) x^n = x^m (y x^n)$$ for all $$m, n \in \ZZ_{>0}$$.

Let $$A$$ be an associative algebra over a ring $$R$$ in which $$2$$ is invertible. We construct a Jordan algebra $$A^+$$ with ground set $$A$$ by defining the multiplication as

$x \circ y = \frac{xy + yx}{2}.$

Often the multiplication is written as $$x \circ y$$ to avoid confusion with the product in the associative algebra $$A$$. We note that if $$A$$ is commutative then this reduces to the usual multiplication in $$A$$.

Jordan algebras constructed in this fashion, or their subalgebras, are called special. All other Jordan algebras are called exceptional.

Jordan algebras can also be constructed from a module $$M$$ over $$R$$ with a symmetric bilinear form $$(\cdot, \cdot) : M \times M \to R$$. We begin with the module $$M^* = R \oplus M$$ and define multiplication in $$M^*$$ by

$(\alpha + x) \circ (\beta + y) = \underbrace{\alpha \beta + (x,y)}_{\in R} + \underbrace{\beta x + \alpha y}_{\in M},$

where $$\alpha, \beta \in R$$ and $$x,y \in M$$.

INPUT:

Can be either an associative algebra $$A$$ or a symmetric bilinear form given as a matrix (possibly followed by, or preceded by, a base ring argument).

EXAMPLES:

We let the base algebra $$A$$ be the free algebra on 3 generators:

sage: F.<x,y,z> = FreeAlgebra(QQ)
sage: J = JordanAlgebra(F); J
Jordan algebra of Free Algebra on 3 generators (x, y, z) over Rational Field
sage: a,b,c = map(J, F.gens())
sage: a*b
1/2*x*y + 1/2*y*x
sage: b*a
1/2*x*y + 1/2*y*x

>>> from sage.all import *
>>> F = FreeAlgebra(QQ, names=('x', 'y', 'z',)); (x, y, z,) = F._first_ngens(3)
>>> J = JordanAlgebra(F); J
Jordan algebra of Free Algebra on 3 generators (x, y, z) over Rational Field
>>> a,b,c = map(J, F.gens())
>>> a*b
1/2*x*y + 1/2*y*x
>>> b*a
1/2*x*y + 1/2*y*x


Jordan algebras are typically non-associative:

sage: (a*b)*c
1/4*x*y*z + 1/4*y*x*z + 1/4*z*x*y + 1/4*z*y*x
sage: a*(b*c)
1/4*x*y*z + 1/4*x*z*y + 1/4*y*z*x + 1/4*z*y*x

>>> from sage.all import *
>>> (a*b)*c
1/4*x*y*z + 1/4*y*x*z + 1/4*z*x*y + 1/4*z*y*x
>>> a*(b*c)
1/4*x*y*z + 1/4*x*z*y + 1/4*y*z*x + 1/4*z*y*x


We check the Jordan identity:

sage: (a*b)*(a*a) == a*(b*(a*a))
True
sage: x = a + c
sage: y = b - 2*a
sage: (x*y)*(x*x) == x*(y*(x*x))
True

>>> from sage.all import *
>>> (a*b)*(a*a) == a*(b*(a*a))
True
>>> x = a + c
>>> y = b - Integer(2)*a
>>> (x*y)*(x*x) == x*(y*(x*x))
True


Next we construct a Jordan algebra from a symmetric bilinear form:

sage: m = matrix([[-2,3],[3,4]])
sage: J.<a,b,c> = JordanAlgebra(m); J
Jordan algebra over Integer Ring given by the symmetric bilinear form:
[-2  3]
[ 3  4]
sage: a
1 + (0, 0)
sage: b
0 + (1, 0)
sage: x = 3*a - 2*b + c; x
3 + (-2, 1)

>>> from sage.all import *
>>> m = matrix([[-Integer(2),Integer(3)],[Integer(3),Integer(4)]])
>>> J = JordanAlgebra(m, names=('a', 'b', 'c',)); (a, b, c,) = J._first_ngens(3); J
Jordan algebra over Integer Ring given by the symmetric bilinear form:
[-2  3]
[ 3  4]
>>> a
1 + (0, 0)
>>> b
0 + (1, 0)
>>> x = Integer(3)*a - Integer(2)*b + c; x
3 + (-2, 1)


We again show that Jordan algebras are usually non-associative:

sage: (x*b)*b
-6 + (7, 0)
sage: x*(b*b)
-6 + (4, -2)

>>> from sage.all import *
>>> (x*b)*b
-6 + (7, 0)
>>> x*(b*b)
-6 + (4, -2)


We verify the Jordan identity:

sage: y = -a + 4*b - c
sage: (x*y)*(x*x) == x*(y*(x*x))
True

>>> from sage.all import *
>>> y = -a + Integer(4)*b - c
>>> (x*y)*(x*x) == x*(y*(x*x))
True


The base ring, while normally inferred from the matrix, can also be explicitly specified:

sage: J.<a,b,c> = JordanAlgebra(m, QQ); J
Jordan algebra over Rational Field given by the symmetric bilinear form:
[-2  3]
[ 3  4]
sage: J.<a,b,c> = JordanAlgebra(QQ, m); J # either order work
Jordan algebra over Rational Field given by the symmetric bilinear form:
[-2  3]
[ 3  4]

>>> from sage.all import *
>>> J = JordanAlgebra(m, QQ, names=('a', 'b', 'c',)); (a, b, c,) = J._first_ngens(3); J
Jordan algebra over Rational Field given by the symmetric bilinear form:
[-2  3]
[ 3  4]
>>> J = JordanAlgebra(QQ, m, names=('a', 'b', 'c',)); (a, b, c,) = J._first_ngens(3); J # either order work
Jordan algebra over Rational Field given by the symmetric bilinear form:
[-2  3]
[ 3  4]


REFERENCES:

class sage.algebras.jordan_algebra.JordanAlgebraSymmetricBilinear(R, form, names=None)[source]#

Bases: JordanAlgebra

A Jordan algebra given by a symmetric bilinear form $$m$$.

class Element(parent, s, v)[source]#

Bases: AlgebraElement

An element of a Jordan algebra defined by a symmetric bilinear form.

bar()[source]#

Return the result of the bar involution of self.

The bar involution $$\bar{\cdot}$$ is the $$R$$-linear endomorphism of $$M^*$$ defined by $$\bar{1} = 1$$ and $$\bar{x} = -x$$ for $$x \in M$$.

EXAMPLES:

sage: m = matrix([[0,1],[1,1]])
sage: J.<a,b,c> = JordanAlgebra(m)
sage: x = 4*a - b + 3*c
sage: x.bar()
4 + (1, -3)

>>> from sage.all import *
>>> m = matrix([[Integer(0),Integer(1)],[Integer(1),Integer(1)]])
>>> J = JordanAlgebra(m, names=('a', 'b', 'c',)); (a, b, c,) = J._first_ngens(3)
>>> x = Integer(4)*a - b + Integer(3)*c
>>> x.bar()
4 + (1, -3)


We check that it is an algebra morphism:

sage: y = 2*a + 2*b - c
sage: x.bar() * y.bar() == (x*y).bar()
True

>>> from sage.all import *
>>> y = Integer(2)*a + Integer(2)*b - c
>>> x.bar() * y.bar() == (x*y).bar()
True

monomial_coefficients(copy=True)[source]#

Return a dictionary whose keys are indices of basis elements in the support of self and whose values are the corresponding coefficients.

INPUT:

• copy – ignored

EXAMPLES:

sage: m = matrix([[0,1],[1,1]])
sage: J.<a,b,c> = JordanAlgebra(m)
sage: elt = a + 2*b - c
sage: elt.monomial_coefficients()
{0: 1, 1: 2, 2: -1}

>>> from sage.all import *
>>> m = matrix([[Integer(0),Integer(1)],[Integer(1),Integer(1)]])
>>> J = JordanAlgebra(m, names=('a', 'b', 'c',)); (a, b, c,) = J._first_ngens(3)
>>> elt = a + Integer(2)*b - c
>>> elt.monomial_coefficients()
{0: 1, 1: 2, 2: -1}

norm()[source]#

Return the norm of self.

The norm of an element $$\alpha + x \in M^*$$ is given by $$n(\alpha + x) = \alpha^2 - (x, x)$$.

EXAMPLES:

sage: m = matrix([[0,1],[1,1]])
sage: J.<a,b,c> = JordanAlgebra(m)
sage: x = 4*a - b + 3*c; x
4 + (-1, 3)
sage: x.norm()
13

>>> from sage.all import *
>>> m = matrix([[Integer(0),Integer(1)],[Integer(1),Integer(1)]])
>>> J = JordanAlgebra(m, names=('a', 'b', 'c',)); (a, b, c,) = J._first_ngens(3)
>>> x = Integer(4)*a - b + Integer(3)*c; x
4 + (-1, 3)
>>> x.norm()
13

trace()[source]#

Return the trace of self.

The trace of an element $$\alpha + x \in M^*$$ is given by $$t(\alpha + x) = 2 \alpha$$.

EXAMPLES:

sage: m = matrix([[0,1],[1,1]])
sage: J.<a,b,c> = JordanAlgebra(m)
sage: x = 4*a - b + 3*c
sage: x.trace()
8

>>> from sage.all import *
>>> m = matrix([[Integer(0),Integer(1)],[Integer(1),Integer(1)]])
>>> J = JordanAlgebra(m, names=('a', 'b', 'c',)); (a, b, c,) = J._first_ngens(3)
>>> x = Integer(4)*a - b + Integer(3)*c
>>> x.trace()
8

algebra_generators()[source]#

Return a basis of self.

The basis returned begins with the unity of $$R$$ and continues with the standard basis of $$M$$.

EXAMPLES:

sage: m = matrix([[0,1],[1,1]])
sage: J = JordanAlgebra(m)
sage: J.basis()
Family (1 + (0, 0), 0 + (1, 0), 0 + (0, 1))

>>> from sage.all import *
>>> m = matrix([[Integer(0),Integer(1)],[Integer(1),Integer(1)]])
>>> J = JordanAlgebra(m)
>>> J.basis()
Family (1 + (0, 0), 0 + (1, 0), 0 + (0, 1))

basis()[source]#

Return a basis of self.

The basis returned begins with the unity of $$R$$ and continues with the standard basis of $$M$$.

EXAMPLES:

sage: m = matrix([[0,1],[1,1]])
sage: J = JordanAlgebra(m)
sage: J.basis()
Family (1 + (0, 0), 0 + (1, 0), 0 + (0, 1))

>>> from sage.all import *
>>> m = matrix([[Integer(0),Integer(1)],[Integer(1),Integer(1)]])
>>> J = JordanAlgebra(m)
>>> J.basis()
Family (1 + (0, 0), 0 + (1, 0), 0 + (0, 1))

gens()[source]#

Return the generators of self.

EXAMPLES:

sage: m = matrix([[0,1],[1,1]])
sage: J = JordanAlgebra(m)
sage: J.gens()
(1 + (0, 0), 0 + (1, 0), 0 + (0, 1))

>>> from sage.all import *
>>> m = matrix([[Integer(0),Integer(1)],[Integer(1),Integer(1)]])
>>> J = JordanAlgebra(m)
>>> J.gens()
(1 + (0, 0), 0 + (1, 0), 0 + (0, 1))

one()[source]#

Return the element 1 if it exists.

EXAMPLES:

sage: m = matrix([[0,1],[1,1]])
sage: J = JordanAlgebra(m)
sage: J.one()
1 + (0, 0)

>>> from sage.all import *
>>> m = matrix([[Integer(0),Integer(1)],[Integer(1),Integer(1)]])
>>> J = JordanAlgebra(m)
>>> J.one()
1 + (0, 0)

zero()[source]#

Return the element 0.

EXAMPLES:

sage: m = matrix([[0,1],[1,1]])
sage: J = JordanAlgebra(m)
sage: J.zero()
0 + (0, 0)

>>> from sage.all import *
>>> m = matrix([[Integer(0),Integer(1)],[Integer(1),Integer(1)]])
>>> J = JordanAlgebra(m)
>>> J.zero()
0 + (0, 0)

class sage.algebras.jordan_algebra.SpecialJordanAlgebra(A, names=None)[source]#

Bases: JordanAlgebra

A (special) Jordan algebra $$A^+$$ from an associative algebra $$A$$.

class Element(parent, x)[source]#

Bases: AlgebraElement

An element of a special Jordan algebra.

monomial_coefficients(copy=True)[source]#

Return a dictionary whose keys are indices of basis elements in the support of self and whose values are the corresponding coefficients.

INPUT:

• copy – (default: True) if self is internally represented by a dictionary d, then make a copy of d; if False, then this can cause undesired behavior by mutating d

EXAMPLES:

sage: F.<x,y,z> = FreeAlgebra(QQ)
sage: J = JordanAlgebra(F)
sage: a,b,c = map(J, F.gens())
sage: elt = a + 2*b - c
sage: elt.monomial_coefficients()
{x: 1, y: 2, z: -1}

>>> from sage.all import *
>>> F = FreeAlgebra(QQ, names=('x', 'y', 'z',)); (x, y, z,) = F._first_ngens(3)
>>> J = JordanAlgebra(F)
>>> a,b,c = map(J, F.gens())
>>> elt = a + Integer(2)*b - c
>>> elt.monomial_coefficients()
{x: 1, y: 2, z: -1}

algebra_generators()[source]#

Return the basis of self.

EXAMPLES:

sage: F.<x,y,z> = FreeAlgebra(QQ)
sage: J = JordanAlgebra(F)
sage: J.basis()
Lazy family (Term map(i))_{i in Free monoid on 3 generators (x, y, z)}

>>> from sage.all import *
>>> F = FreeAlgebra(QQ, names=('x', 'y', 'z',)); (x, y, z,) = F._first_ngens(3)
>>> J = JordanAlgebra(F)
>>> J.basis()
Lazy family (Term map(i))_{i in Free monoid on 3 generators (x, y, z)}

basis()[source]#

Return the basis of self.

EXAMPLES:

sage: F.<x,y,z> = FreeAlgebra(QQ)
sage: J = JordanAlgebra(F)
sage: J.basis()
Lazy family (Term map(i))_{i in Free monoid on 3 generators (x, y, z)}

>>> from sage.all import *
>>> F = FreeAlgebra(QQ, names=('x', 'y', 'z',)); (x, y, z,) = F._first_ngens(3)
>>> J = JordanAlgebra(F)
>>> J.basis()
Lazy family (Term map(i))_{i in Free monoid on 3 generators (x, y, z)}

gens()[source]#

Return the generators of self.

EXAMPLES:

sage: cat = Algebras(QQ).WithBasis().FiniteDimensional()
sage: C = CombinatorialFreeModule(QQ, ['x','y','z'], category=cat)
sage: J = JordanAlgebra(C)
sage: J.gens()
(B['x'], B['y'], B['z'])

sage: F.<x,y,z> = FreeAlgebra(QQ)
sage: J = JordanAlgebra(F)
sage: J.gens()
Traceback (most recent call last):
...
NotImplementedError: infinite set

>>> from sage.all import *
>>> cat = Algebras(QQ).WithBasis().FiniteDimensional()
>>> C = CombinatorialFreeModule(QQ, ['x','y','z'], category=cat)
>>> J = JordanAlgebra(C)
>>> J.gens()
(B['x'], B['y'], B['z'])

>>> F = FreeAlgebra(QQ, names=('x', 'y', 'z',)); (x, y, z,) = F._first_ngens(3)
>>> J = JordanAlgebra(F)
>>> J.gens()
Traceback (most recent call last):
...
NotImplementedError: infinite set

one()[source]#

Return the element $$1$$ if it exists.

EXAMPLES:

sage: F.<x,y,z> = FreeAlgebra(QQ)
sage: J = JordanAlgebra(F)
sage: J.one()
1

>>> from sage.all import *
>>> F = FreeAlgebra(QQ, names=('x', 'y', 'z',)); (x, y, z,) = F._first_ngens(3)
>>> J = JordanAlgebra(F)
>>> J.one()
1

zero()[source]#

Return the element $$0$$.

EXAMPLES:

sage: F.<x,y,z> = FreeAlgebra(QQ)
sage: J = JordanAlgebra(F)
sage: J.zero()
0

>>> from sage.all import *
>>> F = FreeAlgebra(QQ, names=('x', 'y', 'z',)); (x, y, z,) = F._first_ngens(3)
>>> J = JordanAlgebra(F)
>>> J.zero()
0