sage: J.one().is_invertible()
True
- The zero element is never invertible::
+ The zero element is never invertible in a non-trivial algebra::
sage: set_random_seed()
sage: J = random_eja()
- sage: J.zero().is_invertible()
+ sage: (not J.is_trivial()) and J.zero().is_invertible()
False
"""
- zero = self.parent().zero()
+ if self.is_zero():
+ if self.parent().is_trivial():
+ return True
+ else:
+ return False
+
+ # In fact, we only need to know if the constant term is non-zero,
+ # so we can pass in the field's zero element instead.
+ zero = self.base_ring().zero()
p = self.minimal_polynomial()
return not (p(zero) == zero)
True
"""
+ if self.is_zero() and not self.parent().is_trivial():
+ # The minimal polynomial of zero in a nontrivial algebra
+ # is "t"; in a trivial algebra it's "1" by convention
+ # (it's an empty product).
+ return 1
return self.subalgebra_generated_by().dimension()
0
"""
+ if self.is_zero():
+ # We would generate a zero-dimensional subalgebra
+ # where the minimal polynomial would be constant.
+ # That might be correct, but only if *this* algebra
+ # is trivial too.
+ if not self.parent().is_trivial():
+ # Pretty sure we know what the minimal polynomial of
+ # the zero operator is going to be. This ensures
+ # consistency of e.g. the polynomial variable returned
+ # in the "normal" case without us having to think about it.
+ return self.operator().minimal_polynomial()
+
A = self.subalgebra_generated_by()
return A(self).operator().minimal_polynomial()
"""
P = self.parent()
+ left_mult_by_self = lambda y: self*y
+ L = P.module_morphism(function=left_mult_by_self, codomain=P)
return FiniteDimensionalEuclideanJordanAlgebraOperator(
P,
P,
- self.to_matrix() )
+ L.matrix() )
def quadratic_representation(self, other=None):
sage: A(x^2) == A(x)*A(x)
True
+ The subalgebra generated by the zero element is trivial::
+
+ sage: set_random_seed()
+ sage: A = random_eja().zero().subalgebra_generated_by()
+ sage: A
+ Euclidean Jordan algebra of dimension 0 over Rational Field
+ sage: A.one()
+ 0
+
"""
return FiniteDimensionalEuclideanJordanElementSubalgebra(self)