]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
eja: fix inclusions/projections with trivial algebras.
authorMichael Orlitzky <michael@orlitzky.com>
Tue, 24 Nov 2020 16:24:15 +0000 (11:24 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Tue, 24 Nov 2020 16:24:15 +0000 (11:24 -0500)
mjo/eja/eja_algebra.py

index 7857190a2e458f0d955a49de8df7e7a9052bfe4a..6252cc29a729472ef7f182cd3393ab3db98b6b58 100644 (file)
@@ -2524,10 +2524,14 @@ class DirectSumEJA(FiniteDimensionalEuclideanJordanAlgebra):
 
         """
         (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)
@@ -2587,10 +2591,14 @@ class DirectSumEJA(FiniteDimensionalEuclideanJordanAlgebra):
 
         """
         (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)