diff --git a/src/doc/en/thematic_tutorials/coercion_and_categories.rst b/src/doc/en/thematic_tutorials/coercion_and_categories.rst index 0895efab774..63258f05700 100644 --- a/src/doc/en/thematic_tutorials/coercion_and_categories.rst +++ b/src/doc/en/thematic_tutorials/coercion_and_categories.rst @@ -134,7 +134,6 @@ This base class provides a lot more methods than a general parent:: 'is_commutative', 'is_field', 'is_integrally_closed', - 'is_prime_field', 'krull_dimension', 'localization', 'ngens', diff --git a/src/sage/categories/rings.py b/src/sage/categories/rings.py index 1a798783d09..6ea5c51afef 100644 --- a/src/sage/categories/rings.py +++ b/src/sage/categories/rings.py @@ -434,6 +434,30 @@ def is_noetherian(self): """ return False + def is_prime_field(self): + r""" + Return ``True`` if this ring is one of the prime fields `\QQ` or + `\GF{p}`. + + EXAMPLES:: + + sage: QQ.is_prime_field() + True + sage: GF(3).is_prime_field() + True + sage: GF(9, 'a').is_prime_field() # needs sage.rings.finite_rings + False + sage: ZZ.is_prime_field() + False + sage: QQ['x'].is_prime_field() + False + sage: Qp(19).is_prime_field() # needs sage.rings.padics + False + """ + # the case of QQ is handled by QQ itself + from sage.categories.finite_fields import FiniteFields + return self in FiniteFields() and self.degree() == 1 + def is_zero(self) -> bool: """ Return ``True`` if this is the zero ring. diff --git a/src/sage/rings/ring.pyx b/src/sage/rings/ring.pyx index 5a5d7ab2b0f..e57e20f98d2 100644 --- a/src/sage/rings/ring.pyx +++ b/src/sage/rings/ring.pyx @@ -652,28 +652,6 @@ cdef class Ring(ParentWithGens): """ return True - def is_prime_field(self): - r""" - Return ``True`` if this ring is one of the prime fields `\QQ` or - `\GF{p}`. - - EXAMPLES:: - - sage: QQ.is_prime_field() - True - sage: GF(3).is_prime_field() - True - sage: GF(9, 'a').is_prime_field() # needs sage.rings.finite_rings - False - sage: ZZ.is_prime_field() - False - sage: QQ['x'].is_prime_field() - False - sage: Qp(19).is_prime_field() # needs sage.rings.padics - False - """ - return False - def order(self): """ The number of elements of ``self``.