# long run to have the multiplication table be in terms of
# algebra elements. We do this after calling the superclass
# constructor so that from_vector() knows what to do.
- self._multiplication_table = matrix(
- [ map(lambda x: self.from_vector(x), ls)
- for ls in mult_table ] )
- self._multiplication_table.set_immutable()
+ self._multiplication_table = [ map(lambda x: self.from_vector(x), ls)
+ for ls in mult_table ]
def _element_constructor_(self, elt):
return fmt.format(self.dimension(), self.base_ring())
def product_on_basis(self, i, j):
- return self._multiplication_table[i,j]
+ return self._multiplication_table[i][j]
def _a_regular_element(self):
"""
R = PolynomialRing(self.base_ring(), names)
# Hack around the fact that our multiplication table is in terms of
# algebra elements but the constructor wants it in terms of vectors.
- vmt = [ tuple([ self._multiplication_table[i,j].to_vector()
- for j in range(self._multiplication_table.nrows()) ])
- for i in range(self._multiplication_table.ncols()) ]
+ vmt = [ tuple(map(lambda x: x.to_vector(), ls))
+ for ls in self._multiplication_table ]
J = FiniteDimensionalEuclideanJordanAlgebra(R, tuple(vmt), r)
idmat = matrix.identity(J.base_ring(), n)
[e2 0 e0]
"""
- return self._multiplication_table
+ return matrix(self._multiplication_table)
def natural_basis(self):