X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Feja%2Feja_algebra.py;h=28e86c25e3a3d315cf8fefb325fc05ef4b03b427;hb=78b54b562e1eedbb919dc442b2b3f6996440a1a2;hp=a7bccc3f400899e90837911a6b5683f70e71a35c;hpb=98c3ab3a9df8c634a0fbb05ed6ad22abf41118f3;p=sage.d.git diff --git a/mjo/eja/eja_algebra.py b/mjo/eja/eja_algebra.py index a7bccc3..28e86c2 100644 --- a/mjo/eja/eja_algebra.py +++ b/mjo/eja/eja_algebra.py @@ -64,10 +64,8 @@ class FiniteDimensionalEuclideanJordanAlgebra(CombinatorialFreeModule): # 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): @@ -155,7 +153,7 @@ class FiniteDimensionalEuclideanJordanAlgebra(CombinatorialFreeModule): 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): """ @@ -251,9 +249,8 @@ class FiniteDimensionalEuclideanJordanAlgebra(CombinatorialFreeModule): 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) @@ -414,7 +411,7 @@ class FiniteDimensionalEuclideanJordanAlgebra(CombinatorialFreeModule): [e2 0 e0] """ - return self._multiplication_table + return matrix(self._multiplication_table) def natural_basis(self): @@ -480,7 +477,7 @@ class FiniteDimensionalEuclideanJordanAlgebra(CombinatorialFreeModule): sage: J.one() e0 + e1 + e2 + e3 + e4 - TESTS:: + TESTS: The identity element acts like the identity:: @@ -641,7 +638,7 @@ class RealCartesianProductEJA(FiniteDimensionalEuclideanJordanAlgebra): """ def __init__(self, n, field=QQ): V = VectorSpace(field, n) - mult_table = [ [ V.basis()[i]*(i == j) for j in range(n) ] + mult_table = [ [ V.gen(i)*(i == j) for j in range(n) ] for i in range(n) ] fdeja = super(RealCartesianProductEJA, self) @@ -1298,8 +1295,8 @@ class JordanSpinEJA(FiniteDimensionalEuclideanJordanAlgebra): mult_table = [[V.zero() for j in range(n)] for i in range(n)] for i in range(n): for j in range(n): - x = V.basis()[i] - y = V.basis()[j] + x = V.gen(i) + y = V.gen(j) x0 = x[0] xbar = x[1:] y0 = y[0]