'Reduce the element ``x`` of our container modulo ``self``.
This applies the normal form ``NF`` to ``x``. If ``NF`` is passed
as none, the default Mora normal form is used (which is not unique!).'

def reduce_element(self, x, NF=None):

    from sympy.polys.distributedmodules import sdm_nf_mora
    if (NF is None):
        NF = sdm_nf_mora
    return self.container.convert(self.ring._sdm_to_vector(NF(self.ring._vector_to_sdm(x, self.order), self._groebner(), self.order, self.ring.dom), self.rank))
