]> gitweb.michael.orlitzky.com - sage.d.git/blobdiff - mjo/eja/eja_utils.py
eja: don't real-embed quaternion matrices.
[sage.d.git] / mjo / eja / eja_utils.py
index 0b2d2a315989949c2431641c8f82dea9b576f9b8..6f8cab6d8019dcbba0be1e81c3872a7ba738f807 100644 (file)
@@ -54,7 +54,9 @@ def _all2list(x):
     SETUP::
 
         sage: from mjo.eja.eja_utils import _all2list
-        sage: from mjo.octonions import Octonions, OctonionMatrixAlgebra
+        sage: from mjo.hurwitz import (QuaternionMatrixAlgebra,
+        ....:                          Octonions,
+        ....:                          OctonionMatrixAlgebra)
 
     EXAMPLES::
 
@@ -86,6 +88,13 @@ def _all2list(x):
         sage: _all2list(OctonionMatrixAlgebra(1).one())
         [1, 0, 0, 0, 0, 0, 0, 0]
 
+    ::
+
+        sage: _all2list(QuaternionAlgebra(QQ, -1, -1).one())
+        [1, 0, 0, 0]
+        sage: _all2list(QuaternionMatrixAlgebra(1).one())
+        [1, 0, 0, 0]
+
     ::
 
         sage: V1 = VectorSpace(QQ,2)
@@ -97,6 +106,13 @@ def _all2list(x):
         [3, 4, 1, 0, 0, 0, 0, 0, 0, 0]
 
     """
+    if hasattr(x, 'list') and hasattr(x, 'to_vector'):
+        # This avoids calling to_vector() on a matrix algebra with
+        # e.g. quaternions where the returned vector is of the wrong
+        # length (three instead of four) because the quaternions don't
+        # know how many generators they have.
+        return _all2list(x.list())
+
     if hasattr(x, 'to_vector'):
         # This works on matrices of e.g. octonions directly, without
         # first needing to convert them to a list of octonions and