class_docstr: Abstract base class for module homomoprhisms. Do not instantiate.
  
  Instead, use the ``homomorphism`` function:
  
  >>> from sympy import QQ
  >>> from sympy.abc import x
  >>> from sympy.polys.agca import homomorphism
  
  >>> F = QQ.old_poly_ring(x).free_module(2)
  >>> homomorphism(F, F, [[1, 0], [0, 1]])
  Matrix([
  [1, 0], : QQ[x]**2 -> QQ[x]**2
  [0, 1]])
  
  Attributes:
  
  - ring - the ring over which we are considering modules
  - domain - the domain module
  - codomain - the codomain module
  - _ker - cached kernel
  - _img - cached image
  
  Non-implemented methods:
  
  - _kernel
  - _image
  - _restrict_domain
  - _restrict_codomain
  - _quotient_domain
  - _quotient_codomain
  - _apply
  - _mul_scalar
  - _compose
  - _add
class_docstr_tok: ["Abstract","base","class","for","module","homomoprhisms",".","Do","not","instantiate",".","Instead",",","use","the","``","homomorphism","``","function",":",">",">",">","from","sympy","import","QQ",">",">",">","from","sympy.abc","import","x",">",">",">","from","sympy.polys.agca","import","homomorphism",">",">",">","F","=","QQ.old_poly_ring","(","x",")",".free_module","(","2",")",">",">",">","homomorphism","(","F",",","F",",","[","[","1",",","0","]",",","[","0",",","1","]","]",")","Matrix","(","[","[","1",",","0","]",",",":","QQ","[","x","]","*","*","2","-",">","QQ","[","x","]","*","*","2","[","0",",","1","]","]",")","Attributes",":","-","ring","-","the","ring","over","which","we","are","considering","modules","-","domain","-","the","domain","module","-","codomain","-","the","codomain","module","-","_ker","-","cached","kernel","-","_img","-","cached","image","Non-implemented","methods",":","-","_kernel","-","_image","-","_restrict_domain","-","_restrict_codomain","-","_quotient_domain","-","_quotient_codomain","-","_apply","-","_mul_scalar","-","_compose","-","_add"]
code: def __eq__(self, oth):
      try:
          return (self - oth).is_zero()
      except TypeError:
          return False
  
imports: from sympy.polys.agca.modules import Module, FreeModule, QuotientModule, SubModule, SubQuotientModule
  from sympy.polys.polyerrors import CoercionFailed
label_desc: Use image node_id 28 for calling the ModuleHomomorphism obj's underlying member method code with example usage: obj.__eq__(oth) and returns: unknown, False