"""
(J1,J2) = self.factors()
- n = J1.dimension()
+ m = J1.dimension()
+ n = J2.dimension()
V_basis = self.vector_space().basis()
- P1 = matrix(self.base_ring(), V_basis[:n])
- P2 = matrix(self.base_ring(), V_basis[n:])
+ # Need to specify the dimensions explicitly so that we don't
+ # wind up with a zero-by-zero matrix when we want e.g. a
+ # zero-by-two matrix (important for composing things).
+ P1 = matrix(self.base_ring(), m, m+n, V_basis[:m])
+ P2 = matrix(self.base_ring(), n, m+n, V_basis[m:])
pi_left = FiniteDimensionalEuclideanJordanAlgebraOperator(self,J1,P1)
pi_right = FiniteDimensionalEuclideanJordanAlgebraOperator(self,J2,P2)
return (pi_left, pi_right)
"""
(J1,J2) = self.factors()
- n = J1.dimension()
+ m = J1.dimension()
+ n = J2.dimension()
V_basis = self.vector_space().basis()
- I1 = matrix.column(self.base_ring(), V_basis[:n])
- I2 = matrix.column(self.base_ring(), V_basis[n:])
+ # Need to specify the dimensions explicitly so that we don't
+ # wind up with a zero-by-zero matrix when we want e.g. a
+ # two-by-zero matrix (important for composing things).
+ I1 = matrix.column(self.base_ring(), m, m+n, V_basis[:m])
+ I2 = matrix.column(self.base_ring(), n, m+n, V_basis[m:])
iota_left = FiniteDimensionalEuclideanJordanAlgebraOperator(J1,self,I1)
iota_right = FiniteDimensionalEuclideanJordanAlgebraOperator(J2,self,I2)
return (iota_left, iota_right)