ring_theory.bezout
⟷
Mathlib.RingTheory.Bezout
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.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -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 :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
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 DecompositionMonoid
s to automatically apply to UniqueFactorizationMonoid
s, 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.
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>
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
-/
The unported dependencies are