class_docstr: A prime ideal in a ring of algebraic integers.
docstr: Print a representation of this prime ideal.
  
  Examples
  ========
  
  >>> from sympy import cyclotomic_poly, QQ
  >>> from sympy.abc import x, zeta
  >>> T = cyclotomic_poly(7, x)
  >>> K = QQ.algebraic_field((T, zeta))
  >>> P = K.primes_above(11)
  >>> print(P[0].repr())
  [ (11, x**3 + 5*x**2 + 4*x - 1) e=1, f=3 ]
  >>> print(P[0].repr(field_gen=zeta))
  [ (11, zeta**3 + 5*zeta**2 + 4*zeta - 1) e=1, f=3 ]
  >>> print(P[0].repr(field_gen=zeta, just_gens=True))
  (11, zeta**3 + 5*zeta**2 + 4*zeta - 1)
  
  Parameters
  ==========
  
  field_gen : :py:class:`~.Symbol`, ``None``, optional (default=None)
      The symbol to use for the generator of the field. This will appear
      in our representation of ``self.alpha``. If ``None``, we use the
      variable of the defining polynomial of ``self.ZK``.
  just_gens : bool, optional (default=False)
      If ``True``, just print the "(p, alpha)" part, showing "just the
      generators" of the prime ideal. Otherwise, print a string of the
      form "[ (p, alpha) e=..., f=... ]", giving the ramification index
      and inertia degree, along with the generators.
code: def repr(self, field_gen=None, just_gens=False):
      """
      Print a representation of this prime ideal.
  
      Examples
      ========
  
      >>> from sympy import cyclotomic_poly, QQ
      >>> from sympy.abc import x, zeta
      >>> T = cyclotomic_poly(7, x)
      >>> K = QQ.algebraic_field((T, zeta))
      >>> P = K.primes_above(11)
      >>> print(P[0].repr())
      [ (11, x**3 + 5*x**2 + 4*x - 1) e=1, f=3 ]
      >>> print(P[0].repr(field_gen=zeta))
      [ (11, zeta**3 + 5*zeta**2 + 4*zeta - 1) e=1, f=3 ]
      >>> print(P[0].repr(field_gen=zeta, just_gens=True))
      (11, zeta**3 + 5*zeta**2 + 4*zeta - 1)
  
      Parameters
      ==========
  
      field_gen : :py:class:`~.Symbol`, ``None``, optional (default=None)
          The symbol to use for the generator of the field. This will appear
          in our representation of ``self.alpha``. If ``None``, we use the
          variable of the defining polynomial of ``self.ZK``.
      just_gens : bool, optional (default=False)
          If ``True``, just print the "(p, alpha)" part, showing "just the
          generators" of the prime ideal. Otherwise, print a string of the
          form "[ (p, alpha) e=..., f=... ]", giving the ramification index
          and inertia degree, along with the generators.
  
      """
      field_gen = field_gen or self.ZK.parent.T.gen
      p, alpha, e, f = self.p, self.alpha, self.e, self.f
      alpha_rep = str(alpha.numerator(x=field_gen).as_expr())
      if alpha.denom > 1:
          alpha_rep = f"({alpha_rep})/{alpha.denom}"
      gens = f"({p}, {alpha_rep})"
      if just_gens:
          return gens
      return f"[ {gens} e={e}, f={f} ]"
  
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 4 for calling the PrimeIdeal obj's underlying member method code with example usage: obj.repr(field_gen, just_gens) and returns: str, gens, str, e, str, f, str, gens