class_docstr: Ideal implementation relying on the modules code.
  
  Attributes:
  
  - _module - the underlying module
class_docstr_tok: ["Ideal","implementation","relying","on","the","modules","code",".","Attributes",":","-","_module","-","the","underlying","module"]
code: def _product(self, J):
      if not isinstance(J, ModuleImplementedIdeal):
          raise NotImplementedError
      return self.__class__(
          self.ring,
          self._module.submodule(
              *[
                  [x * y]
                  for [x] in self._module.gens
                  for [y] in J._module.gens
              ]
          ),
      )
  
imports: from sympy.polys.polyerrors import CoercionFailed
  from sympy.polys.polyutils import IntegerPowerable
label_desc: Use image node_id 11 for calling the ModuleImplementedIdeal obj's underlying member method code with example usage: obj._product(J) and returns: self