We can scale an operator on a rational algebra by a rational number::
sage: J = RealSymmetricEJA(2)
- sage: e0,e1,e2 = J.gens()
- sage: x = 2*e0 + 4*e1 + 16*e2
+ sage: b0,b1,b2 = J.gens()
+ sage: x = 2*b0 + 4*b1 + 16*b2
sage: x.operator()
Linear operator between finite-dimensional Euclidean Jordan algebras
represented by the matrix:
# This should eventually delegate to _composition_ after performing
# some sanity checks for us.
- mor = super(FiniteDimensionalEJAOperator,self)
- return mor.__mul__(other)
+ return super().__mul__(other)
def _neg_(self):
The left-multiplication-by-zero operation on a given algebra
is its zero map::
- sage: set_random_seed()
sage: J = random_eja()
sage: J.zero().operator().is_zero()
True
The identity operator is its own inverse::
- sage: set_random_seed()
sage: J = random_eja()
sage: idJ = J.one().operator()
sage: idJ.inverse() == idJ
The inverse of the inverse is the operator we started with::
- sage: set_random_seed()
sage: x = random_eja().random_element()
sage: L = x.operator()
sage: not L.is_invertible() or (L.inverse().inverse() == L)
The identity operator is always invertible::
- sage: set_random_seed()
sage: J = random_eja()
sage: J.one().operator().is_invertible()
True
The zero operator is never invertible in a nontrivial algebra::
- sage: set_random_seed()
sage: J = random_eja()
sage: not J.is_trivial() and J.zero().operator().is_invertible()
False