Zulip Chat Archive

Stream: maths

Topic: When the fraction ring is a field


Snir Broshi (Sep 09 2025 at 00:06):

What can we say about a ring R whose fraction ring is a field?
The other direction is known: If R is an integral domain, then its fraction ring is a field:

import Mathlib

variable {R : Type*} [CommRing R] [IsDomain R]
variable {K : Type*} [CommRing K]
variable [Algebra R K] [IsFractionRing R K]

noncomputable def field_k : Field K := IsFractionRing.toField R

But if we know that the fraction ring is a field, is it true that R must be an integral domain?

import Mathlib

variable {R : Type*} [CommRing R]
variable {K : Type*} [Field K]
variable [Algebra R K] [IsFractionRing R K]

instance : IsDomain R := sorry

If not, what if I add [IsIntegrallyClosed R] as a hypothesis?
Or can we say something weaker on R maybe?
Basically, what does the property "the ring of fractions is a field" imply?

Yakov Pechersky (Sep 09 2025 at 01:44):

import Mathlib

variable (R : Type*) [CommRing R]

lemma IsFractionRing.subsingleton_of (S : Type*) [Subsingleton R] [CommRing S] [Algebra R S]
    [hf : IsFractionRing R S] :
    Subsingleton S := by
  apply IsLocalization.subsingleton (M := nonZeroDivisors R)
  simp only [mem_nonZeroDivisors_iff, zero_mul, forall_const, mul_zero, and_self]
  intro
  exact Subsingleton.elim _ _

-- can't be an instance because `K` can't be inferred
lemma IsFractionRing.isDomain_left (K : Type*) [Field K] [Algebra R K] [IsFractionRing R K] :
    IsDomain R := by
  rw [isDomain_iff_noZeroDivisors_and_nontrivial R, noZeroDivisors_iff_left_eq_zero_of_mul]
  constructor
  · intro x hx y hy
    rw [ (IsFractionRing.injective R K).eq_iff] at hy
    simpa [hx] using hy
  · have : Nontrivial K := inferInstance
    rw [ not_subsingleton_iff_nontrivial] at this 
    contrapose! this
    exact IsFractionRing.subsingleton_of R K

Kenny Lau (Sep 10 2025 at 19:56):

import Mathlib

-- can't be an instance because `R` can't be inferred
lemma Subsingleton.of_algebra (R : Type*) [CommSemiring R] [Subsingleton R]
    (S : Type*) [Semiring S] [Algebra R S] :
    Subsingleton S :=
  (algebraMap R S).codomain_trivial

-- can't be an instance because `K` can't be inferred
lemma IsFractionRing.isDomain_left (R : Type*) [CommRing R]
    (K : Type*) [Field K] [Algebra R K] [IsFractionRing R K] :
    IsDomain R :=
  (FaithfulSMul.algebraMap_injective _ K).isDomain _

Yakov Pechersky (Sep 10 2025 at 23:33):

Even better.


Last updated: Dec 20 2025 at 21:32 UTC