+ def _element_constructor_(self, elt):
+ r"""
+ Construct an element of this algebra from an ordered tuple.
+
+ We just apply the element constructor from each of our factors
+ to the corresponding component of the tuple, and package up
+ the result.
+
+ SETUP::
+
+ sage: from mjo.eja.eja_algebra import (HadamardEJA,
+ ....: RealSymmetricEJA)
+
+ EXAMPLES::
+
+ sage: J1 = HadamardEJA(3)
+ sage: J2 = RealSymmetricEJA(2)
+ sage: J = cartesian_product([J1,J2])
+ sage: J( (J1.matrix_basis()[1], J2.matrix_basis()[2]) )
+ e(0, 1) + e(1, 2)
+ """
+ m = len(self.cartesian_factors())
+ try:
+ z = tuple( self.cartesian_factors()[i](elt[i]) for i in range(m) )
+ return self._cartesian_product_of_elements(z)
+ except:
+ raise ValueError("not an element of this algebra")
+
+ Element = CartesianProductEJAElement