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):
"""
the same as its matrix representation in the superalgebra::
sage: set_random_seed()
- sage: x = random_eja(field=QQ).random_element()
+ 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: 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()
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()
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