code: def test_quotient():
      # SCA, example 2.8.6
      R = QQ.old_poly_ring(x, y, z)
      F = R.free_module(2)
      assert F.submodule(
          [x * y, x * z], [y * z, x * y]
      ).module_quotient(
          F.submodule([y, z], [z, y])
      ) == QQ.old_poly_ring(
          x, y, z
      ).ideal(
          x**2 * y**2 - x * y * z**2
      )
      assert (
          F.submodule([x, y])
          .module_quotient(F.submodule())
          .is_whole_ring()
      )
  
      M = F.submodule([x**2, x**2], [y**2, y**2])
      N = F.submodule([x + y, x + y])
      q, rel = M.module_quotient(N, relations=True)
      assert q == R.ideal(y**2, x - y)
      for i, g in enumerate(q.gens):
          assert g * N.gens[0] == sum(
              c * x for c, x in zip(rel[i], M.gens)
          )
  
imports: from sympy.polys.agca.modules import FreeModule, ModuleOrder, FreeModulePolyRing
  from sympy.polys import CoercionFailed, QQ, lex, grlex, ilex, ZZ
  from sympy.abc import x, y, z
  from sympy.testing.pytest import raises
  from sympy.core.numbers import Rational
label_desc: Use image node_id 15 for calling a global function with example usage: test_quotient() without return types