doc-next-gen

Mathlib.Algebra.EuclideanDomain.Field

Module docstring

{"# Instances for Euclidean domains * Field.toEuclideanDomain: shows that any field is a Euclidean domain. "}

Field.toEuclideanDomain instance
{K : Type*} [Field K] : EuclideanDomain K
Full source
instance (priority := 100) Field.toEuclideanDomain {K : Type*} [Field K] : EuclideanDomain K :=
{ toCommRing := Field.toCommRing
  quotient := (· / ·), remainder := fun a b => a - a * b / b, quotient_zero := div_zero,
  quotient_mul_add_remainder_eq := fun a b => by
    by_cases h : b = 0 <;> simp [h, mul_div_cancel₀]
  r := fun a b => a = 0 ∧ b ≠ 0,
  r_wellFounded :=
    WellFounded.intro fun _ =>
      (Acc.intro _) fun _ ⟨hb, _⟩ => (Acc.intro _) fun _ ⟨_, hnb⟩ => False.elim <| hnb hb,
  remainder_lt := fun a b hnb => by simp [hnb],
  mul_left_not_lt := fun _ _ hnb ⟨hab, hna⟩ => Or.casesOn (mul_eq_zero.1 hab) hna hnb }
Fields are Euclidean Domains
Informal description
Every field $K$ is a Euclidean domain.