- # superalgebra.one().to_vector() won't have the right
- # coordinates unless we use V.from_vector() below.
- basis_vectors = [V.from_vector(self._superalgebra.one().to_vector())]
- W = V.span_of_basis(basis_vectors)
- for exponent in range(1, V.dimension()):
- new_power = elt**exponent
- basis_vectors.append( V.from_vector(new_power.to_vector()) )
- try:
- W = V.span_of_basis(basis_vectors)
- superalgebra_basis.append( new_power )
- except ValueError:
- # Vectors weren't independent; bail and keep the
- # last subspace that worked.
- break
-
- # Make the basis hashable for UniqueRepresentation.
- superalgebra_basis = tuple(superalgebra_basis)
-
- # Now figure out the entries of the right-multiplication
- # matrix for the successive basis elements b0, b1,... of
- # that subspace.
- n = len(superalgebra_basis)
- mult_table = [[W.zero() for i in range(n)] for j in range(n)]
+ # these vectors won't have the right coordinates for
+ # V.span_of_basis() unless we use V.from_vector() on them.
+ W = V.span_of_basis( (V.from_vector(b.to_vector()) for b in basis),
+ check=check_axioms)
+
+ n = len(basis)
+ if check_axioms:
+ # The tables are square if we're verifying that they
+ # are commutative.
+ mult_table = [[W.zero() for j in range(n)] for i in range(n)]
+ ip_table = [ [ self._superalgebra.inner_product(basis[i],basis[j])
+ for j in range(n) ]
+ for i in range(n) ]
+ else:
+ mult_table = [[W.zero() for j in range(i+1)] for i in range(n)]
+ ip_table = [ [ self._superalgebra.inner_product(basis[i],basis[j])
+ for j in range(i+1) ]
+ for i in range(n) ]
+