ring_theory.bezoutMathlib.RingTheory.Bezout

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
 -/
 import RingTheory.PrincipalIdealDomain
-import Algebra.GcdMonoid.IntegrallyClosed
+import Algebra.GCDMonoid.IntegrallyClosed
 
 #align_import ring_theory.bezout from "leanprover-community/mathlib"@"5c1efce12ba86d4901463f61019832f6a4b1a0d0"
 
Diff
@@ -43,13 +43,21 @@ variable {R}
 
 #print IsBezout.span_pair_isPrincipal /-
 instance span_pair_isPrincipal [IsBezout R] (x y : R) : (Ideal.span {x, y} : Ideal R).IsPrincipal :=
-  by classical
+  by classical exact is_principal_of_fg (Ideal.span {x, y}) ⟨{x, y}, by simp⟩
 #align is_bezout.span_pair_is_principal IsBezout.span_pair_isPrincipal
 -/
 
 #print IsBezout.iff_span_pair_isPrincipal /-
 theorem iff_span_pair_isPrincipal :
-    IsBezout R ↔ ∀ x y : R, (Ideal.span {x, y} : Ideal R).IsPrincipal := by classical
+    IsBezout R ↔ ∀ x y : R, (Ideal.span {x, y} : Ideal R).IsPrincipal := by
+  classical
+  constructor
+  · intro H x y; infer_instance
+  · intro H
+    constructor
+    apply Submodule.fg_induction
+    · exact fun _ => ⟨⟨_, rfl⟩⟩
+    · rintro _ _ ⟨⟨x, rfl⟩⟩ ⟨⟨y, rfl⟩⟩; rw [← Submodule.span_insert]; exact H _ _
 #align is_bezout.iff_span_pair_is_principal IsBezout.iff_span_pair_isPrincipal
 -/
 
@@ -113,7 +121,8 @@ attribute [local instance] to_gcd_domain
 
 -- Note that the proof, despite being `infer_instance`, depends on the `local attribute [instance]`
 -- lemma above, and is thus necessary to be restated.
-instance (priority := 100) [IsDomain R] [IsBezout R] : IsIntegrallyClosed R := by classical
+instance (priority := 100) [IsDomain R] [IsBezout R] : IsIntegrallyClosed R := by
+  classical exact GCDMonoid.toIsIntegrallyClosed
 
 #print Function.Surjective.isBezout /-
 theorem Function.Surjective.isBezout {S : Type v} [CommRing S] (f : R →+* S)
@@ -138,7 +147,27 @@ instance (priority := 100) of_isPrincipalIdealRing [IsPrincipalIdealRing R] : Is
 #print IsBezout.TFAE /-
 theorem TFAE [IsBezout R] [IsDomain R] :
     TFAE [IsNoetherianRing R, IsPrincipalIdealRing R, UniqueFactorizationMonoid R, WfDvdMonoid R] :=
-  by classical
+  by
+  classical
+  tfae_have 1 → 2
+  · intro H; exact ⟨fun I => is_principal_of_fg _ (IsNoetherian.noetherian _)⟩
+  tfae_have 2 → 3
+  · intro; infer_instance
+  tfae_have 3 → 4
+  · intro; infer_instance
+  tfae_have 4 → 1
+  · rintro ⟨h⟩
+    rw [isNoetherianRing_iff, isNoetherian_iff_fg_wellFounded]
+    apply RelEmbedding.wellFounded _ h
+    have : ∀ I : { J : Ideal R // J.FG }, ∃ x : R, (I : Ideal R) = Ideal.span {x} := fun ⟨I, hI⟩ =>
+      (IsBezout.isPrincipal_of_fG I hI).1
+    choose f hf
+    exact
+      { toFun := f
+        inj' := fun x y e => by ext1; rw [hf, hf, e]
+        map_rel_iff' := fun x y => by dsimp;
+          rw [← Ideal.span_singleton_lt_span_singleton, ← hf, ← hf]; rfl }
+  tfae_finish
 #align is_bezout.tfae IsBezout.TFAE
 -/
 
Diff
@@ -43,21 +43,13 @@ variable {R}
 
 #print IsBezout.span_pair_isPrincipal /-
 instance span_pair_isPrincipal [IsBezout R] (x y : R) : (Ideal.span {x, y} : Ideal R).IsPrincipal :=
-  by classical exact is_principal_of_fg (Ideal.span {x, y}) ⟨{x, y}, by simp⟩
+  by classical
 #align is_bezout.span_pair_is_principal IsBezout.span_pair_isPrincipal
 -/
 
 #print IsBezout.iff_span_pair_isPrincipal /-
 theorem iff_span_pair_isPrincipal :
-    IsBezout R ↔ ∀ x y : R, (Ideal.span {x, y} : Ideal R).IsPrincipal := by
-  classical
-  constructor
-  · intro H x y; infer_instance
-  · intro H
-    constructor
-    apply Submodule.fg_induction
-    · exact fun _ => ⟨⟨_, rfl⟩⟩
-    · rintro _ _ ⟨⟨x, rfl⟩⟩ ⟨⟨y, rfl⟩⟩; rw [← Submodule.span_insert]; exact H _ _
+    IsBezout R ↔ ∀ x y : R, (Ideal.span {x, y} : Ideal R).IsPrincipal := by classical
 #align is_bezout.iff_span_pair_is_principal IsBezout.iff_span_pair_isPrincipal
 -/
 
@@ -121,8 +113,7 @@ attribute [local instance] to_gcd_domain
 
 -- Note that the proof, despite being `infer_instance`, depends on the `local attribute [instance]`
 -- lemma above, and is thus necessary to be restated.
-instance (priority := 100) [IsDomain R] [IsBezout R] : IsIntegrallyClosed R := by
-  classical exact GCDMonoid.toIsIntegrallyClosed
+instance (priority := 100) [IsDomain R] [IsBezout R] : IsIntegrallyClosed R := by classical
 
 #print Function.Surjective.isBezout /-
 theorem Function.Surjective.isBezout {S : Type v} [CommRing S] (f : R →+* S)
@@ -147,27 +138,7 @@ instance (priority := 100) of_isPrincipalIdealRing [IsPrincipalIdealRing R] : Is
 #print IsBezout.TFAE /-
 theorem TFAE [IsBezout R] [IsDomain R] :
     TFAE [IsNoetherianRing R, IsPrincipalIdealRing R, UniqueFactorizationMonoid R, WfDvdMonoid R] :=
-  by
-  classical
-  tfae_have 1 → 2
-  · intro H; exact ⟨fun I => is_principal_of_fg _ (IsNoetherian.noetherian _)⟩
-  tfae_have 2 → 3
-  · intro; infer_instance
-  tfae_have 3 → 4
-  · intro; infer_instance
-  tfae_have 4 → 1
-  · rintro ⟨h⟩
-    rw [isNoetherianRing_iff, isNoetherian_iff_fg_wellFounded]
-    apply RelEmbedding.wellFounded _ h
-    have : ∀ I : { J : Ideal R // J.FG }, ∃ x : R, (I : Ideal R) = Ideal.span {x} := fun ⟨I, hI⟩ =>
-      (IsBezout.isPrincipal_of_fG I hI).1
-    choose f hf
-    exact
-      { toFun := f
-        inj' := fun x y e => by ext1; rw [hf, hf, e]
-        map_rel_iff' := fun x y => by dsimp;
-          rw [← Ideal.span_singleton_lt_span_singleton, ← hf, ← hf]; rfl }
-  tfae_finish
+  by classical
 #align is_bezout.tfae IsBezout.TFAE
 -/
 
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2022 Andrew Yang. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
 -/
-import Mathbin.RingTheory.PrincipalIdealDomain
-import Mathbin.Algebra.GcdMonoid.IntegrallyClosed
+import RingTheory.PrincipalIdealDomain
+import Algebra.GcdMonoid.IntegrallyClosed
 
 #align_import ring_theory.bezout from "leanprover-community/mathlib"@"5c1efce12ba86d4901463f61019832f6a4b1a0d0"
 
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2022 Andrew Yang. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
-
-! This file was ported from Lean 3 source module ring_theory.bezout
-! leanprover-community/mathlib commit 5c1efce12ba86d4901463f61019832f6a4b1a0d0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.RingTheory.PrincipalIdealDomain
 import Mathbin.Algebra.GcdMonoid.IntegrallyClosed
 
+#align_import ring_theory.bezout from "leanprover-community/mathlib"@"5c1efce12ba86d4901463f61019832f6a4b1a0d0"
+
 /-!
 
 # Bézout rings
Diff
@@ -102,9 +102,11 @@ theorem dvd_gcd {x y z : R} (hx : z ∣ x) (hy : z ∣ y) : z ∣ gcd x y :=
 #align is_bezout.dvd_gcd IsBezout.dvd_gcd
 -/
 
+#print IsBezout.gcd_eq_sum /-
 theorem gcd_eq_sum (x y : R) : ∃ a b : R, a * x + b * y = gcd x y :=
   Ideal.mem_span_pair.mp (by rw [← span_gcd]; apply Ideal.subset_span; simp)
 #align is_bezout.gcd_eq_sum IsBezout.gcd_eq_sum
+-/
 
 variable (R)
 
@@ -125,6 +127,7 @@ attribute [local instance] to_gcd_domain
 instance (priority := 100) [IsDomain R] [IsBezout R] : IsIntegrallyClosed R := by
   classical exact GCDMonoid.toIsIntegrallyClosed
 
+#print Function.Surjective.isBezout /-
 theorem Function.Surjective.isBezout {S : Type v} [CommRing S] (f : R →+* S)
     (hf : Function.Surjective f) [IsBezout R] : IsBezout S :=
   by
@@ -136,6 +139,7 @@ theorem Function.Surjective.isBezout {S : Type v} [CommRing S] (f : R →+* S)
   · rw [span_gcd, Ideal.map_span, Set.image_insert_eq, Set.image_singleton]
   · rw [Ideal.map_span, Set.image_singleton]; rfl
 #align function.surjective.is_bezout Function.Surjective.isBezout
+-/
 
 #print IsBezout.of_isPrincipalIdealRing /-
 instance (priority := 100) of_isPrincipalIdealRing [IsPrincipalIdealRing R] : IsBezout R :=
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
 
 ! This file was ported from Lean 3 source module ring_theory.bezout
-! leanprover-community/mathlib commit 6623e6af705e97002a9054c1c05a980180276fc1
+! leanprover-community/mathlib commit 5c1efce12ba86d4901463f61019832f6a4b1a0d0
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.Algebra.GcdMonoid.IntegrallyClosed
 
 # Bézout rings
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 A Bézout ring (Bezout ring) is a ring whose finitely generated ideals are principal.
 Notible examples include principal ideal rings, valuation rings, and the ring of algebraic integers.
 
@@ -30,58 +33,74 @@ universe u v
 
 variable (R : Type u) [CommRing R]
 
+#print IsBezout /-
 /-- A Bézout ring is a ring whose finitely generated ideals are principal. -/
 class IsBezout : Prop where
   isPrincipal_of_fG : ∀ I : Ideal R, I.FG → I.IsPrincipal
 #align is_bezout IsBezout
+-/
 
 namespace IsBezout
 
 variable {R}
 
+#print IsBezout.span_pair_isPrincipal /-
 instance span_pair_isPrincipal [IsBezout R] (x y : R) : (Ideal.span {x, y} : Ideal R).IsPrincipal :=
   by classical exact is_principal_of_fg (Ideal.span {x, y}) ⟨{x, y}, by simp⟩
 #align is_bezout.span_pair_is_principal IsBezout.span_pair_isPrincipal
+-/
 
+#print IsBezout.iff_span_pair_isPrincipal /-
 theorem iff_span_pair_isPrincipal :
     IsBezout R ↔ ∀ x y : R, (Ideal.span {x, y} : Ideal R).IsPrincipal := by
   classical
+  constructor
+  · intro H x y; infer_instance
+  · intro H
     constructor
-    · intro H x y; infer_instance
-    · intro H
-      constructor
-      apply Submodule.fg_induction
-      · exact fun _ => ⟨⟨_, rfl⟩⟩
-      · rintro _ _ ⟨⟨x, rfl⟩⟩ ⟨⟨y, rfl⟩⟩; rw [← Submodule.span_insert]; exact H _ _
+    apply Submodule.fg_induction
+    · exact fun _ => ⟨⟨_, rfl⟩⟩
+    · rintro _ _ ⟨⟨x, rfl⟩⟩ ⟨⟨y, rfl⟩⟩; rw [← Submodule.span_insert]; exact H _ _
 #align is_bezout.iff_span_pair_is_principal IsBezout.iff_span_pair_isPrincipal
+-/
 
 section Gcd
 
 variable [IsBezout R]
 
+#print IsBezout.gcd /-
 /-- The gcd of two elements in a bezout domain. -/
 noncomputable def gcd (x y : R) : R :=
   Submodule.IsPrincipal.generator (Ideal.span {x, y})
 #align is_bezout.gcd IsBezout.gcd
+-/
 
+#print IsBezout.span_gcd /-
 theorem span_gcd (x y : R) : (Ideal.span {gcd x y} : Ideal R) = Ideal.span {x, y} :=
   Ideal.span_singleton_generator _
 #align is_bezout.span_gcd IsBezout.span_gcd
+-/
 
+#print IsBezout.gcd_dvd_left /-
 theorem gcd_dvd_left (x y : R) : gcd x y ∣ x :=
   (Submodule.IsPrincipal.mem_iff_generator_dvd _).mp (Ideal.subset_span (by simp))
 #align is_bezout.gcd_dvd_left IsBezout.gcd_dvd_left
+-/
 
+#print IsBezout.gcd_dvd_right /-
 theorem gcd_dvd_right (x y : R) : gcd x y ∣ y :=
   (Submodule.IsPrincipal.mem_iff_generator_dvd _).mp (Ideal.subset_span (by simp))
 #align is_bezout.gcd_dvd_right IsBezout.gcd_dvd_right
+-/
 
+#print IsBezout.dvd_gcd /-
 theorem dvd_gcd {x y z : R} (hx : z ∣ x) (hy : z ∣ y) : z ∣ gcd x y :=
   by
   rw [← Ideal.span_singleton_le_span_singleton] at hx hy ⊢
   rw [span_gcd, Ideal.span_insert, sup_le_iff]
   exact ⟨hx, hy⟩
 #align is_bezout.dvd_gcd IsBezout.dvd_gcd
+-/
 
 theorem gcd_eq_sum (x y : R) : ∃ a b : R, a * x + b * y = gcd x y :=
   Ideal.mem_span_pair.mp (by rw [← span_gcd]; apply Ideal.subset_span; simp)
@@ -89,11 +108,13 @@ theorem gcd_eq_sum (x y : R) : ∃ a b : R, a * x + b * y = gcd x y :=
 
 variable (R)
 
+#print IsBezout.toGCDDomain /-
 /-- Any bezout domain is a GCD domain. This is not an instance since `gcd_monoid` contains data,
 and this might not be how we would like to construct it. -/
-noncomputable def toGcdDomain [IsDomain R] [DecidableEq R] : GCDMonoid R :=
+noncomputable def toGCDDomain [IsDomain R] [DecidableEq R] : GCDMonoid R :=
   gcdMonoidOfGCD gcd gcd_dvd_left gcd_dvd_right fun _ _ _ => dvd_gcd
-#align is_bezout.to_gcd_domain IsBezout.toGcdDomain
+#align is_bezout.to_gcd_domain IsBezout.toGCDDomain
+-/
 
 end Gcd
 
@@ -116,34 +137,38 @@ theorem Function.Surjective.isBezout {S : Type v} [CommRing S] (f : R →+* S)
   · rw [Ideal.map_span, Set.image_singleton]; rfl
 #align function.surjective.is_bezout Function.Surjective.isBezout
 
+#print IsBezout.of_isPrincipalIdealRing /-
 instance (priority := 100) of_isPrincipalIdealRing [IsPrincipalIdealRing R] : IsBezout R :=
   ⟨fun I _ => IsPrincipalIdealRing.principal I⟩
 #align is_bezout.of_is_principal_ideal_ring IsBezout.of_isPrincipalIdealRing
+-/
 
-theorem tFAE [IsBezout R] [IsDomain R] :
+#print IsBezout.TFAE /-
+theorem TFAE [IsBezout R] [IsDomain R] :
     TFAE [IsNoetherianRing R, IsPrincipalIdealRing R, UniqueFactorizationMonoid R, WfDvdMonoid R] :=
   by
   classical
-    tfae_have 1 → 2
-    · intro H; exact ⟨fun I => is_principal_of_fg _ (IsNoetherian.noetherian _)⟩
-    tfae_have 2 → 3
-    · intro; infer_instance
-    tfae_have 3 → 4
-    · intro; infer_instance
-    tfae_have 4 → 1
-    · rintro ⟨h⟩
-      rw [isNoetherianRing_iff, isNoetherian_iff_fg_wellFounded]
-      apply RelEmbedding.wellFounded _ h
-      have : ∀ I : { J : Ideal R // J.FG }, ∃ x : R, (I : Ideal R) = Ideal.span {x} :=
-        fun ⟨I, hI⟩ => (IsBezout.isPrincipal_of_fG I hI).1
-      choose f hf
-      exact
-        { toFun := f
-          inj' := fun x y e => by ext1; rw [hf, hf, e]
-          map_rel_iff' := fun x y => by dsimp;
-            rw [← Ideal.span_singleton_lt_span_singleton, ← hf, ← hf]; rfl }
-    tfae_finish
-#align is_bezout.tfae IsBezout.tFAE
+  tfae_have 1 → 2
+  · intro H; exact ⟨fun I => is_principal_of_fg _ (IsNoetherian.noetherian _)⟩
+  tfae_have 2 → 3
+  · intro; infer_instance
+  tfae_have 3 → 4
+  · intro; infer_instance
+  tfae_have 4 → 1
+  · rintro ⟨h⟩
+    rw [isNoetherianRing_iff, isNoetherian_iff_fg_wellFounded]
+    apply RelEmbedding.wellFounded _ h
+    have : ∀ I : { J : Ideal R // J.FG }, ∃ x : R, (I : Ideal R) = Ideal.span {x} := fun ⟨I, hI⟩ =>
+      (IsBezout.isPrincipal_of_fG I hI).1
+    choose f hf
+    exact
+      { toFun := f
+        inj' := fun x y e => by ext1; rw [hf, hf, e]
+        map_rel_iff' := fun x y => by dsimp;
+          rw [← Ideal.span_singleton_lt_span_singleton, ← hf, ← hf]; rfl }
+  tfae_finish
+#align is_bezout.tfae IsBezout.TFAE
+-/
 
 end IsBezout
 
Diff
@@ -78,7 +78,7 @@ theorem gcd_dvd_right (x y : R) : gcd x y ∣ y :=
 
 theorem dvd_gcd {x y z : R} (hx : z ∣ x) (hy : z ∣ y) : z ∣ gcd x y :=
   by
-  rw [← Ideal.span_singleton_le_span_singleton] at hx hy⊢
+  rw [← Ideal.span_singleton_le_span_singleton] at hx hy ⊢
   rw [span_gcd, Ideal.span_insert, sup_le_iff]
   exact ⟨hx, hy⟩
 #align is_bezout.dvd_gcd IsBezout.dvd_gcd
@@ -127,9 +127,9 @@ theorem tFAE [IsBezout R] [IsDomain R] :
     tfae_have 1 → 2
     · intro H; exact ⟨fun I => is_principal_of_fg _ (IsNoetherian.noetherian _)⟩
     tfae_have 2 → 3
-    · intro ; infer_instance
+    · intro; infer_instance
     tfae_have 3 → 4
-    · intro ; infer_instance
+    · intro; infer_instance
     tfae_have 4 → 1
     · rintro ⟨h⟩
       rw [isNoetherianRing_iff, isNoetherian_iff_fg_wellFounded]
Diff
@@ -47,15 +47,12 @@ theorem iff_span_pair_isPrincipal :
     IsBezout R ↔ ∀ x y : R, (Ideal.span {x, y} : Ideal R).IsPrincipal := by
   classical
     constructor
-    · intro H x y
-      infer_instance
+    · intro H x y; infer_instance
     · intro H
       constructor
       apply Submodule.fg_induction
       · exact fun _ => ⟨⟨_, rfl⟩⟩
-      · rintro _ _ ⟨⟨x, rfl⟩⟩ ⟨⟨y, rfl⟩⟩
-        rw [← Submodule.span_insert]
-        exact H _ _
+      · rintro _ _ ⟨⟨x, rfl⟩⟩ ⟨⟨y, rfl⟩⟩; rw [← Submodule.span_insert]; exact H _ _
 #align is_bezout.iff_span_pair_is_principal IsBezout.iff_span_pair_isPrincipal
 
 section Gcd
@@ -87,11 +84,7 @@ theorem dvd_gcd {x y z : R} (hx : z ∣ x) (hy : z ∣ y) : z ∣ gcd x y :=
 #align is_bezout.dvd_gcd IsBezout.dvd_gcd
 
 theorem gcd_eq_sum (x y : R) : ∃ a b : R, a * x + b * y = gcd x y :=
-  Ideal.mem_span_pair.mp
-    (by
-      rw [← span_gcd]
-      apply Ideal.subset_span
-      simp)
+  Ideal.mem_span_pair.mp (by rw [← span_gcd]; apply Ideal.subset_span; simp)
 #align is_bezout.gcd_eq_sum IsBezout.gcd_eq_sum
 
 variable (R)
@@ -120,8 +113,7 @@ theorem Function.Surjective.isBezout {S : Type v} [CommRing S] (f : R →+* S)
   use f (gcd x y)
   trans Ideal.map f (Ideal.span {gcd x y})
   · rw [span_gcd, Ideal.map_span, Set.image_insert_eq, Set.image_singleton]
-  · rw [Ideal.map_span, Set.image_singleton]
-    rfl
+  · rw [Ideal.map_span, Set.image_singleton]; rfl
 #align function.surjective.is_bezout Function.Surjective.isBezout
 
 instance (priority := 100) of_isPrincipalIdealRing [IsPrincipalIdealRing R] : IsBezout R :=
@@ -133,14 +125,11 @@ theorem tFAE [IsBezout R] [IsDomain R] :
   by
   classical
     tfae_have 1 → 2
-    · intro H
-      exact ⟨fun I => is_principal_of_fg _ (IsNoetherian.noetherian _)⟩
+    · intro H; exact ⟨fun I => is_principal_of_fg _ (IsNoetherian.noetherian _)⟩
     tfae_have 2 → 3
-    · intro
-      infer_instance
+    · intro ; infer_instance
     tfae_have 3 → 4
-    · intro
-      infer_instance
+    · intro ; infer_instance
     tfae_have 4 → 1
     · rintro ⟨h⟩
       rw [isNoetherianRing_iff, isNoetherian_iff_fg_wellFounded]
@@ -150,13 +139,9 @@ theorem tFAE [IsBezout R] [IsDomain R] :
       choose f hf
       exact
         { toFun := f
-          inj' := fun x y e => by
-            ext1
-            rw [hf, hf, e]
-          map_rel_iff' := fun x y => by
-            dsimp
-            rw [← Ideal.span_singleton_lt_span_singleton, ← hf, ← hf]
-            rfl }
+          inj' := fun x y e => by ext1; rw [hf, hf, e]
+          map_rel_iff' := fun x y => by dsimp;
+            rw [← Ideal.span_singleton_lt_span_singleton, ← hf, ← hf]; rfl }
     tfae_finish
 #align is_bezout.tfae IsBezout.tFAE
 
Diff
@@ -32,7 +32,7 @@ variable (R : Type u) [CommRing R]
 
 /-- A Bézout ring is a ring whose finitely generated ideals are principal. -/
 class IsBezout : Prop where
-  isPrincipal_of_fg : ∀ I : Ideal R, I.Fg → I.IsPrincipal
+  isPrincipal_of_fG : ∀ I : Ideal R, I.FG → I.IsPrincipal
 #align is_bezout IsBezout
 
 namespace IsBezout
@@ -145,8 +145,8 @@ theorem tFAE [IsBezout R] [IsDomain R] :
     · rintro ⟨h⟩
       rw [isNoetherianRing_iff, isNoetherian_iff_fg_wellFounded]
       apply RelEmbedding.wellFounded _ h
-      have : ∀ I : { J : Ideal R // J.Fg }, ∃ x : R, (I : Ideal R) = Ideal.span {x} :=
-        fun ⟨I, hI⟩ => (IsBezout.isPrincipal_of_fg I hI).1
+      have : ∀ I : { J : Ideal R // J.FG }, ∃ x : R, (I : Ideal R) = Ideal.span {x} :=
+        fun ⟨I, hI⟩ => (IsBezout.isPrincipal_of_fG I hI).1
       choose f hf
       exact
         { toFun := f

Changes in mathlib4

mathlib3
mathlib4
feat: introduce IsRelPrime and DecompositionMonoid and refactor (#10327)
  • Introduce typeclass DecompositionMonoid, which says every element in the monoid is primal, i.e., whenever an element divides a product b * c, it can be factored into a product such that the factors divides b and c respectively. A domain is called pre-Schreier if its multiplicative monoid is a decomposition monoid, and these are more general than GCD domains.

  • Show that any GCDMonoid is a DecompositionMonoid. In order for lemmas about DecompositionMonoids to automatically apply to UniqueFactorizationMonoids, we add instances from UniqueFactorizationMonoid α to Nonempty (NormalizedGCDMonoid α) to Nonempty (GCDMonoid α) to DecompositionMonoid α. (Zulip) See the bottom of message for an updated diagram of classes and instances.

  • Introduce binary predicate IsRelPrime which says that the only common divisors of the two elements are units. Replace previous occurrences in mathlib by this predicate.

  • Duplicate all lemmas about IsCoprime in Coprime/Basic (except three lemmas about smul) to IsRelPrime. Due to import constraints, they are spread into three files Algebra/Divisibility/Units (including key lemmas assuming DecompositionMonoid), GroupWithZero/Divisibility, and Coprime/Basic.

  • Show IsCoprime always imply IsRelPrime and is equivalent to it in Bezout rings. To reduce duplication, the definition of Bezout rings and the GCDMonoid instance are moved from RingTheory/Bezout to RingTheory/PrincipalIdealDomain, and some results in PrincipalIdealDomain are generalized to Bezout rings.

  • Remove the recently added file Squarefree/UniqueFactorizationMonoid and place the results appropriately within Squarefree/Basic. All results are generalized to DecompositionMonoid or weaker except the last one.

Zulip

With this PR, all the following instances (indicated by arrows) now work; this PR fills the central part.

                                                                          EuclideanDomain (bundled)
                                                                              ↙          ↖
                                                                 IsPrincipalIdealRing ← Field (bundled)
                                                                            ↓             ↓
         NormalizationMonoid ←          NormalizedGCDMonoid → GCDMonoid  IsBezout ← ValuationRing ← DiscreteValuationRing
                   ↓                             ↓                 ↘       ↙
Nonempty NormalizationMonoid ← Nonempty NormalizedGCDMonoid →  Nonempty GCDMonoid → IsIntegrallyClosed
                                                 ↑                    ↓
                    WfDvdMonoid ← UniqueFactorizationMonoid → DecompositionMonoid
                                                 ↑
                                       IsPrincipalIdealRing

Co-authored-by: Junyan Xu <junyanxu.math@gmail.com> Co-authored-by: Oliver Nash <github@olivernash.org>

Diff
@@ -4,7 +4,6 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
 -/
 import Mathlib.RingTheory.PrincipalIdealDomain
-import Mathlib.Algebra.GCDMonoid.IntegrallyClosed
 
 #align_import ring_theory.bezout from "leanprover-community/mathlib"@"6623e6af705e97002a9054c1c05a980180276fc1"
 
@@ -17,7 +16,6 @@ Notable examples include principal ideal rings, valuation rings, and the ring of
 
 ## Main results
 - `IsBezout.iff_span_pair_isPrincipal`: It suffices to verify every `span {x, y}` is principal.
-- `IsBezout.toGCDDomain`: Every Bézout domain is a GCD domain. This is not an instance.
 - `IsBezout.TFAE`: For a Bézout domain, noetherian ↔ PID ↔ UFD ↔ ACCP
 
 -/
@@ -25,22 +23,10 @@ Notable examples include principal ideal rings, valuation rings, and the ring of
 
 universe u v
 
-variable (R : Type u) [CommRing R]
-
-/-- A Bézout ring is a ring whose finitely generated ideals are principal. -/
-class IsBezout : Prop where
-  /-- Any finitely generated ideal is principal. -/
-  isPrincipal_of_FG : ∀ I : Ideal R, I.FG → I.IsPrincipal
-#align is_bezout IsBezout
+variable {R : Type u} [CommRing R]
 
 namespace IsBezout
 
-variable {R}
-
-instance span_pair_isPrincipal [IsBezout R] (x y : R) : (Ideal.span {x, y} : Ideal R).IsPrincipal :=
-  by classical exact isPrincipal_of_FG (Ideal.span {x, y}) ⟨{x, y}, by simp⟩
-#align is_bezout.span_pair_is_principal IsBezout.span_pair_isPrincipal
-
 theorem iff_span_pair_isPrincipal :
     IsBezout R ↔ ∀ x y : R, (Ideal.span {x, y} : Ideal R).IsPrincipal := by
   classical
@@ -53,53 +39,6 @@ theorem iff_span_pair_isPrincipal :
       · rintro _ _ ⟨⟨x, rfl⟩⟩ ⟨⟨y, rfl⟩⟩; rw [← Submodule.span_insert]; exact H _ _
 #align is_bezout.iff_span_pair_is_principal IsBezout.iff_span_pair_isPrincipal
 
-section Gcd
-
-variable [IsBezout R]
-
-/-- The gcd of two elements in a bezout domain. -/
-noncomputable def gcd (x y : R) : R := Submodule.IsPrincipal.generator (Ideal.span {x, y})
-#align is_bezout.gcd IsBezout.gcd
-
-theorem span_gcd (x y : R) : (Ideal.span {gcd x y} : Ideal R) = Ideal.span {x, y} :=
-  Ideal.span_singleton_generator _
-#align is_bezout.span_gcd IsBezout.span_gcd
-
-theorem gcd_dvd_left (x y : R) : gcd x y ∣ x :=
-  (Submodule.IsPrincipal.mem_iff_generator_dvd _).mp (Ideal.subset_span (by simp))
-#align is_bezout.gcd_dvd_left IsBezout.gcd_dvd_left
-
-theorem gcd_dvd_right (x y : R) : gcd x y ∣ y :=
-  (Submodule.IsPrincipal.mem_iff_generator_dvd _).mp (Ideal.subset_span (by simp))
-#align is_bezout.gcd_dvd_right IsBezout.gcd_dvd_right
-
-theorem dvd_gcd {x y z : R} (hx : z ∣ x) (hy : z ∣ y) : z ∣ gcd x y := by
-  rw [← Ideal.span_singleton_le_span_singleton] at hx hy ⊢
-  rw [span_gcd, Ideal.span_insert, sup_le_iff]
-  exact ⟨hx, hy⟩
-#align is_bezout.dvd_gcd IsBezout.dvd_gcd
-
-theorem gcd_eq_sum (x y : R) : ∃ a b : R, a * x + b * y = gcd x y :=
-  Ideal.mem_span_pair.mp (by rw [← span_gcd]; apply Ideal.subset_span; simp)
-#align is_bezout.gcd_eq_sum IsBezout.gcd_eq_sum
-
-variable (R)
-
-/-- Any bezout domain is a GCD domain. This is not an instance since `GCDMonoid` contains data,
-and this might not be how we would like to construct it. -/
-noncomputable def toGCDDomain [IsDomain R] [DecidableEq R] : GCDMonoid R :=
-  gcdMonoidOfGCD gcd gcd_dvd_left gcd_dvd_right fun hac hab => dvd_gcd hac hab
-#align is_bezout.to_gcd_domain IsBezout.toGCDDomain
-
-end Gcd
-
-attribute [local instance] toGCDDomain
-
--- Note that the proof depends on the `attribute [local instance]` above, and is thus necessary to
--- be stated.
-instance (priority := 100) [IsDomain R] [IsBezout R] : IsIntegrallyClosed R := by
-  classical exact GCDMonoid.toIsIntegrallyClosed
-
 theorem _root_.Function.Surjective.isBezout {S : Type v} [CommRing S] (f : R →+* S)
     (hf : Function.Surjective f) [IsBezout R] : IsBezout S := by
   rw [iff_span_pair_isPrincipal]
@@ -111,10 +50,6 @@ theorem _root_.Function.Surjective.isBezout {S : Type v} [CommRing S] (f : R →
   · rw [Ideal.map_span, Set.image_singleton]; rfl
 #align function.surjective.is_bezout Function.Surjective.isBezout
 
-instance (priority := 100) of_isPrincipalIdealRing [IsPrincipalIdealRing R] : IsBezout R :=
-  ⟨fun I _ => IsPrincipalIdealRing.principal I⟩
-#align is_bezout.of_is_principal_ideal_ring IsBezout.of_isPrincipalIdealRing
-
 theorem TFAE [IsBezout R] [IsDomain R] :
     List.TFAE
     [IsNoetherianRing R, IsPrincipalIdealRing R, UniqueFactorizationMonoid R, WfDvdMonoid R] := by
chore: fix some Lean-3-isms in comments (#10240)
Diff
@@ -95,7 +95,7 @@ end Gcd
 
 attribute [local instance] toGCDDomain
 
--- Note that the proof depends on the `local attribute [instance]` above, and is thus necessary to
+-- Note that the proof depends on the `attribute [local instance]` above, and is thus necessary to
 -- be stated.
 instance (priority := 100) [IsDomain R] [IsBezout R] : IsIntegrallyClosed R := by
   classical exact GCDMonoid.toIsIntegrallyClosed
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2022 Andrew Yang. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
-
-! This file was ported from Lean 3 source module ring_theory.bezout
-! leanprover-community/mathlib commit 6623e6af705e97002a9054c1c05a980180276fc1
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.RingTheory.PrincipalIdealDomain
 import Mathlib.Algebra.GCDMonoid.IntegrallyClosed
 
+#align_import ring_theory.bezout from "leanprover-community/mathlib"@"6623e6af705e97002a9054c1c05a980180276fc1"
+
 /-!
 
 # Bézout rings
chore: tidy various files (#5104)
Diff
@@ -98,8 +98,8 @@ end Gcd
 
 attribute [local instance] toGCDDomain
 
--- Note that the proof, despite being `inferInstance`, depends on the `local attribute [instance]`
--- lemma above, and is thus necessary to be restated.
+-- Note that the proof depends on the `local attribute [instance]` above, and is thus necessary to
+-- be stated.
 instance (priority := 100) [IsDomain R] [IsBezout R] : IsIntegrallyClosed R := by
   classical exact GCDMonoid.toIsIntegrallyClosed
 
chore: fix many typos (#4967)

These are all doc fixes

Diff
@@ -16,11 +16,11 @@ import Mathlib.Algebra.GCDMonoid.IntegrallyClosed
 # Bézout rings
 
 A Bézout ring (Bezout ring) is a ring whose finitely generated ideals are principal.
-Notible examples include principal ideal rings, valuation rings, and the ring of algebraic integers.
+Notable examples include principal ideal rings, valuation rings, and the ring of algebraic integers.
 
 ## Main results
 - `IsBezout.iff_span_pair_isPrincipal`: It suffices to verify every `span {x, y}` is principal.
-- `Is_bezout.toGCDDomain`: Every Bézout domain is a GCD domain. This is not an instance.
+- `IsBezout.toGCDDomain`: Every Bézout domain is a GCD domain. This is not an instance.
 - `IsBezout.TFAE`: For a Bézout domain, noetherian ↔ PID ↔ UFD ↔ ACCP
 
 -/
feat: port RingTheory.Bezout (#4607)

Dependencies 10 + 637

638 files ported (98.5%)
265882 lines ported (98.7%)
Show graph

The unported dependencies are