]> gitweb.michael.orlitzky.com - sage.d.git/blobdiff - mjo/eja/eja_subalgebra.py
eja: add subalgebra() method for algebras.
[sage.d.git] / mjo / eja / eja_subalgebra.py
index 3eee24866216ca84aa8acf2484e07d01d6cad019..e2d12d26b01a0deaedeb190d450dfd14ede3c262 100644 (file)
@@ -1,7 +1,11 @@
 from sage.matrix.constructor import matrix
 
-from mjo.eja.eja_algebra import FiniteDimensionalEJA
-from mjo.eja.eja_element import FiniteDimensionalEJAElement
+from sage.combinat.free_module import CombinatorialFreeModule_CartesianProduct
+
+from mjo.eja.eja_algebra import (CartesianProductEJA,
+                                 FiniteDimensionalEJA)
+from mjo.eja.eja_element import (CartesianProductEJAElement,
+                                 FiniteDimensionalEJAElement)
 
 class FiniteDimensionalEJASubalgebraElement(FiniteDimensionalEJAElement):
     """
@@ -15,7 +19,8 @@ class FiniteDimensionalEJASubalgebraElement(FiniteDimensionalEJAElement):
     the same as its matrix representation in the superalgebra::
 
         sage: set_random_seed()
-        sage: A = random_eja().random_element().subalgebra_generated_by()
+        sage: x = random_eja(field=QQ,orthonormalize=False).random_element()
+        sage: A = x.subalgebra_generated_by(orthonormalize=False)
         sage: y = A.random_element()
         sage: actual = y.to_matrix()
         sage: expected = y.superalgebra_element().to_matrix()
@@ -28,7 +33,7 @@ class FiniteDimensionalEJASubalgebraElement(FiniteDimensionalEJAElement):
 
         sage: set_random_seed()
         sage: x = random_eja(field=AA).random_element()
-        sage: A = x.subalgebra_generated_by(orthonormalize_basis=True)
+        sage: A = x.subalgebra_generated_by(orthonormalize=True)
         sage: y = A.random_element()
         sage: y.operator()(A.one()) == y
         True
@@ -51,7 +56,7 @@ class FiniteDimensionalEJASubalgebraElement(FiniteDimensionalEJAElement):
             sage: x = sum(J.gens())
             sage: x
             e0 + e1 + e2 + e3 + e4 + e5
-            sage: A = x.subalgebra_generated_by()
+            sage: A = x.subalgebra_generated_by(orthonormalize=False)
             sage: A(x)
             f1
             sage: A(x).superalgebra_element()
@@ -59,7 +64,7 @@ class FiniteDimensionalEJASubalgebraElement(FiniteDimensionalEJAElement):
             sage: y = sum(A.gens())
             sage: y
             f0 + f1
-            sage: B = y.subalgebra_generated_by()
+            sage: B = y.subalgebra_generated_by(orthonormalize=False)
             sage: B(y)
             g1
             sage: B(y).superalgebra_element()
@@ -83,7 +88,7 @@ class FiniteDimensionalEJASubalgebraElement(FiniteDimensionalEJAElement):
             True
 
         """
-        return self._superalgebra(self.to_matrix())
+        return self.parent().superalgebra()(self.to_matrix())
 
 
 
@@ -229,3 +234,24 @@ class FiniteDimensionalEJASubalgebra(FiniteDimensionalEJA):
 
 
     Element = FiniteDimensionalEJASubalgebraElement
+
+
+
+class CartesianProductEJASubalgebraElement(CartesianProductEJAElement,
+                                           FiniteDimensionalEJASubalgebraElement):
+    pass
+
+class CartesianProductEJASubalgebra(CartesianProductEJA,
+                                    FiniteDimensionalEJASubalgebra):
+
+    def __init__(self, superalgebra, basis, **kwargs):
+        CombinatorialFreeModule_CartesianProduct.__init__(self,
+                                                          superalgebra.cartesian_factors())
+        FiniteDimensionalEJASubalgebra.__init__(self,
+                                                superalgebra,
+                                                basis,
+                                                cartesian_product=True,
+                                                **kwargs)
+
+
+    Element = CartesianProductEJASubalgebraElement