'Returns True if ``other`` is a submodule of ``self``.
>>> from sympy.abc import x
>>> from sympy import QQ
>>> F = QQ.old_poly_ring(x).free_module(2)
>>> M = F.submodule([2, x])
>>> N = M.submodule([2*x, x**2])
>>> M.is_submodule(M)
True
>>> M.is_submodule(N)
True
>>> N.is_submodule(M)
False'

def is_submodule(self, other):

    if isinstance(other, SubModule):
        return ((self.container == other.container) and all((self.contains(x) for x in other.gens)))
    if isinstance(other, (FreeModule, QuotientModule)):
        return ((self.container == other) and self.is_full_module())
    return False
