class_docstr: A prime ideal in a ring of algebraic integers.
docstr: Reduce an :py:class:`~.AlgebraicNumber` to a "small representative"
  modulo this prime ideal.
  
  Parameters
  ==========
  
  elt : :py:class:`~.AlgebraicNumber`
      The element to be reduced.
  
  Returns
  =======
  
  :py:class:`~.AlgebraicNumber`
      The reduced element.
  
  See Also
  ========
  
  reduce_element
  reduce_ANP
  .Submodule.reduce_element
code: def reduce_alg_num(self, a):
      """
      Reduce an :py:class:`~.AlgebraicNumber` to a "small representative"
      modulo this prime ideal.
  
      Parameters
      ==========
  
      elt : :py:class:`~.AlgebraicNumber`
          The element to be reduced.
  
      Returns
      =======
  
      :py:class:`~.AlgebraicNumber`
          The reduced element.
  
      See Also
      ========
  
      reduce_element
      reduce_ANP
      .Submodule.reduce_element
  
      """
      elt = self.ZK.parent.element_from_alg_num(a)
      red = self.reduce_element(elt)
      return a.field_element(list(reversed(red.QQ_col.flat())))
  
imports: from sympy.polys.polytools import Poly
  from sympy.polys.domains.finitefield import FF
  from sympy.polys.domains.rationalfield import QQ
  from sympy.polys.domains.integerring import ZZ
  from sympy.polys.matrices.domainmatrix import DomainMatrix
  from sympy.polys.polyerrors import CoercionFailed
  from sympy.polys.polyutils import IntegerPowerable
  from sympy.utilities.decorator import public
  from .basis import round_two, nilradical_mod_p
  from .exceptions import StructureError
  from .modules import ModuleEndomorphism, find_min_poly
  from .utilities import coeff_search, supplement_a_subspace
label_desc: Use image node_id 16 for calling the PrimeIdeal obj's underlying member method code with example usage: obj.reduce_alg_num(a) and returns: a