- def __init__(self, A, elt=None):
- """
- SETUP::
-
- sage: from mjo.eja.eja_algebra import RealSymmetricEJA
- sage: from mjo.eja.eja_subalgebra import FiniteDimensionalEuclideanJordanElementSubalgebra
-
- EXAMPLES::
-
- sage: J = RealSymmetricEJA(3)
- sage: x = sum( i*J.gens()[i] for i in range(6) )
- sage: K = FiniteDimensionalEuclideanJordanElementSubalgebra(x)
- sage: [ K(x^k) for k in range(J.rank()) ]
- [f0, f1, f2]
-
- ::
-
- """
- if elt in A.superalgebra():
- # Try to convert a parent algebra element into a
- # subalgebra element...
- try:
- coords = A.vector_space().coordinates(elt.vector())
- elt = A(coords)
- except AttributeError:
- # Catches a missing method in elt.vector()
- pass
-
- FiniteDimensionalEuclideanJordanAlgebraElement.__init__(self,
- A,
- elt)
-
- def superalgebra_element(self):
- """
- Return the object in our algebra's superalgebra that corresponds
- to myself.
-
- SETUP::
-
- sage: from mjo.eja.eja_algebra import (RealSymmetricEJA,
- ....: random_eja)
-
- EXAMPLES::
-
- sage: J = RealSymmetricEJA(3)
- sage: x = sum(J.gens())
- sage: x
- e0 + e1 + e2 + e3 + e4 + e5
- sage: A = x.subalgebra_generated_by()
- sage: A(x)
- f1
- sage: A(x).superalgebra_element()
- e0 + e1 + e2 + e3 + e4 + e5
-
- TESTS:
-
- We can convert back and forth faithfully::
-
- sage: set_random_seed()
- sage: J = random_eja()
- sage: x = J.random_element()
- sage: A = x.subalgebra_generated_by()
- sage: A(x).superalgebra_element() == x
- True
- sage: y = A.random_element()
- sage: A(y.superalgebra_element()) == y
- True
-
- """
- return self.parent().superalgebra().linear_combination(
- zip(self.vector(), self.parent()._superalgebra_basis) )
+ return self.superalgebra().natural_basis_space()
+
+
+ def superalgebra(self):
+ """
+ Return the superalgebra that this algebra was generated from.
+ """
+ return self._superalgebra
+
+
+ def vector_space(self):
+ """
+ SETUP::
+
+ sage: from mjo.eja.eja_algebra import RealSymmetricEJA
+ sage: from mjo.eja.eja_subalgebra import FiniteDimensionalEuclideanJordanElementSubalgebra
+
+ EXAMPLES::
+
+ sage: J = RealSymmetricEJA(3)
+ sage: x = J.monomial(0) + 2*J.monomial(2) + 5*J.monomial(5)
+ sage: K = FiniteDimensionalEuclideanJordanElementSubalgebra(x)
+ sage: K.vector_space()
+ Vector space of degree 6 and dimension 3 over...
+ User basis matrix:
+ [ 1 0 1 0 0 1]
+ [ 1 0 2 0 0 5]
+ [ 1 0 4 0 0 25]
+ sage: (x^0).to_vector()
+ (1, 0, 1, 0, 0, 1)
+ sage: (x^1).to_vector()
+ (1, 0, 2, 0, 0, 5)
+ sage: (x^2).to_vector()
+ (1, 0, 4, 0, 0, 25)
+
+ """
+ return self._vector_space
+
+
+ Element = FiniteDimensionalEuclideanJordanElementSubalgebraElement