class_docstr: Code generator of fast monomial arithmetic functions. 
class_docstr_tok: ["Code","generator","of","fast","monomial","arithmetic","functions","."]
code: def mul(self):
      name = "monomial_mul"
      template = dedent(
          """\
          def %(name)s(A, B):
              (%(A)s,) = A
              (%(B)s,) = B
              return (%(AB)s,)
          """
      )
      A = self._vars("a")
      B = self._vars("b")
      AB = ["%s + %s" % (a, b) for a, b in zip(A, B)]
      code = template % {
          "name": name,
          "A": ", ".join(A),
          "B": ", ".join(B),
          "AB": ", ".join(AB),
      }
      return self._build(code, name)
  
imports: from itertools import combinations_with_replacement, product
  from textwrap import dedent
  from sympy.core import Mul, S, Tuple, sympify
  from sympy.polys.polyerrors import ExactQuotientFailed
  from sympy.polys.polyutils import PicklableWithSlots, dict_from_expr
  from sympy.utilities import public
  from sympy.utilities.iterables import is_sequence, iterable
label_desc: Use image node_id 4 for calling the MonomialOps obj's underlying member method code with example usage: obj.mul() and returns: self