]> gitweb.michael.orlitzky.com - sage.d.git/blobdiff - mjo/eja/euclidean_jordan_algebra.py
eja: use random_eja() where applicable in tests.
[sage.d.git] / mjo / eja / euclidean_jordan_algebra.py
index 5eb90fd45a03f1de6e826f8a985ef8dd701130c6..038de61f481c4036dec9032806f22bdf5d2e2602 100644 (file)
@@ -80,19 +80,6 @@ class FiniteDimensionalEuclideanJordanAlgebra(FiniteDimensionalAlgebra):
     class Element(FiniteDimensionalAlgebraElement):
         """
         An element of a Euclidean Jordan algebra.
-
-        Since EJAs are commutative, the "right multiplication" matrix is
-        also the left multiplication matrix and must be symmetric::
-
-            sage: set_random_seed()
-            sage: n = ZZ.random_element(1,10).abs()
-            sage: J = eja_rn(5)
-            sage: J.random_element().matrix().is_symmetric()
-            True
-            sage: J = eja_ln(5)
-            sage: J.random_element().matrix().is_symmetric()
-            True
-
         """
 
         def __pow__(self, n):
@@ -111,8 +98,7 @@ class FiniteDimensionalEuclideanJordanAlgebra(FiniteDimensionalAlgebra):
             EXAMPLES:
 
                 sage: set_random_seed()
-                sage: J = eja_ln(5)
-                sage: x = J.random_element()
+                sage: x = random_eja().random_element()
                 sage: x.matrix()*x.vector() == (x**2).vector()
                 True
 
@@ -181,23 +167,13 @@ class FiniteDimensionalEuclideanJordanAlgebra(FiniteDimensionalAlgebra):
             The identity element is never nilpotent::
 
                 sage: set_random_seed()
-                sage: n = ZZ.random_element(2,10).abs()
-                sage: J = eja_rn(n)
-                sage: J.one().is_nilpotent()
-                False
-                sage: J = eja_ln(n)
-                sage: J.one().is_nilpotent()
+                sage: random_eja().one().is_nilpotent()
                 False
 
             The additive identity is always nilpotent::
 
                 sage: set_random_seed()
-                sage: n = ZZ.random_element(2,10).abs()
-                sage: J = eja_rn(n)
-                sage: J.zero().is_nilpotent()
-                True
-                sage: J = eja_ln(n)
-                sage: J.zero().is_nilpotent()
+                sage: random_eja().zero().is_nilpotent()
                 True
 
             """
@@ -295,18 +271,14 @@ class FiniteDimensionalEuclideanJordanAlgebra(FiniteDimensionalAlgebra):
             EXAMPLES::
 
                 sage: set_random_seed()
-                sage: n = ZZ.random_element(1,10).abs()
-                sage: J = eja_rn(n)
-                sage: x = J.random_element()
+                sage: x = random_eja().random_element()
                 sage: x.degree() == x.minimal_polynomial().degree()
                 True
 
             ::
 
                 sage: set_random_seed()
-                sage: n = ZZ.random_element(1,10).abs()
-                sage: J = eja_ln(n)
-                sage: x = J.random_element()
+                sage: x = random_eja().random_element()
                 sage: x.degree() == x.minimal_polynomial().degree()
                 True
 
@@ -371,21 +343,15 @@ class FiniteDimensionalEuclideanJordanAlgebra(FiniteDimensionalAlgebra):
             TESTS::
 
                 sage: set_random_seed()
-                sage: n = ZZ.random_element(1,10).abs()
-                sage: J = eja_rn(n)
-                sage: x = J.random_element()
-                sage: x.subalgebra_generated_by().is_associative()
-                True
-                sage: J = eja_ln(n)
-                sage: x = J.random_element()
+                sage: x = random_eja().random_element()
                 sage: x.subalgebra_generated_by().is_associative()
                 True
 
             Squaring in the subalgebra should be the same thing as
             squaring in the superalgebra::
 
-                sage: J = eja_ln(5)
-                sage: x = J.random_element()
+                sage: set_random_seed()
+                sage: x = random_eja().random_element()
                 sage: u = x.subalgebra_generated_by().random_element()
                 sage: u.matrix()*u.vector() == (u**2).vector()
                 True
@@ -640,8 +606,16 @@ def eja_sn(dimension, field=QQ):
     def mat2vec(m):
         return vector(field, m.list())
 
+    def vec2mat(v):
+        return matrix(field, dimension, v.list())
+
     W = V.span( mat2vec(s) for s in S )
 
+    # Taking the span above reorders our basis (thanks, jerk!) so we
+    # need to put our "matrix basis" in the same order as the
+    # (reordered) vector basis.
+    S = [ vec2mat(b) for b in W.basis() ]
+
     for s in S:
         # Brute force the multiplication-by-s matrix by looping
         # through all elements of the basis and doing the computation