class_docstr: Class representing (commutative) quotient rings.
  
  You should not usually instantiate this by hand, instead use the constructor
  from the base ring in the construction.
  
  >>> from sympy.abc import x
  >>> from sympy import QQ
  >>> I = QQ.old_poly_ring(x).ideal(x**3 + 1)
  >>> QQ.old_poly_ring(x).quotient_ring(I)
  QQ[x]/<x**3 + 1>
  
  Shorter versions are possible:
  
  >>> QQ.old_poly_ring(x)/I
  QQ[x]/<x**3 + 1>
  
  >>> QQ.old_poly_ring(x)/[x**3 + 1]
  QQ[x]/<x**3 + 1>
  
  Attributes:
  
  - ring - the base ring
  - base_ideal - the ideal used to form the quotient
class_docstr_tok: ["Class","representing","(","commutative",")","quotient","rings",".","You","should","not","usually","instantiate","this","by","hand",",","instead","use","the","constructor","from","the","base","ring","in","the","construction",".",">",">",">","from","sympy.abc","import","x",">",">",">","from","sympy","import","QQ",">",">",">","I","=","QQ.old_poly_ring","(","x",")",".ideal","(","x","*","*","3","+","1",")",">",">",">","QQ.old_poly_ring","(","x",")",".quotient_ring","(","I",")","QQ","[","x","]","\/","<","x","*","*","3","+","1",">","Shorter","versions","are","possible",":",">",">",">","QQ.old_poly_ring","(","x",")","\/I","QQ","[","x","]","\/","<","x","*","*","3","+","1",">",">",">",">","QQ.old_poly_ring","(","x",")","\/","[","x","*","*","3","+","1","]","QQ","[","x","]","\/","<","x","*","*","3","+","1",">","Attributes",":","-","ring","-","the","base","ring","-","base_ideal","-","the","ideal","used","to","form","the","quotient"]
docstr: Compute a**(-1), if possible.
docstr_tok: ["Compute","a","*","*","(","-1",")",",","if","possible","."]
code: def revert(self, a):
      """
      Compute a**(-1), if possible.
      """
      I = self.ring.ideal(a.data) + self.base_ideal
      try:
          return self(I.in_terms_of_generators(1)[0])
      except ValueError:  # 1 not in I
          raise NotReversible("%s not a unit in %r" % (a, self))
  
imports: from sympy.polys.agca.modules import FreeModuleQuotientRing
  from sympy.polys.domains.ring import Ring
  from sympy.polys.polyerrors import NotReversible, CoercionFailed
  from sympy.utilities import public
label_desc: Use image node_id 12 for calling the QuotientRing obj's underlying member method code with example usage: obj.revert(a) and returns: self