ring_theory.dedekind_domain.basic
⟷
Mathlib.RingTheory.DedekindDomain.Basic
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)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -119,7 +119,7 @@ TODO: Prove that these are actually equivalent definitions.
class IsDedekindDomain : Prop where
IsNoetherianRing : IsNoetherianRing A
DimensionLEOne : DimensionLEOne A
- IsIntegrallyClosed : IsIntegrallyClosed A
+ IsIntegrallyClosedₓ : IsIntegrallyClosed A
#align is_dedekind_domain IsDedekindDomain
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -47,7 +47,7 @@ variable (R A K : Type _) [CommRing R] [CommRing A] [Field K]
open scoped nonZeroDivisors Polynomial
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (p «expr ≠ » («expr⊥»() : ideal[ideal] R)) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (p «expr ≠ » («expr⊥»() : ideal[ideal] R)) -/
#print Ring.DimensionLEOne /-
/-- A ring `R` has Krull dimension at most one if all nonzero prime ideals are maximal. -/
def Ring.DimensionLEOne : Prop :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2020 Kenji Nakagawa. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenji Nakagawa, Anne Baanen, Filippo A. E. Nuccio
-/
-import Mathbin.RingTheory.Ideal.Over
-import Mathbin.RingTheory.Polynomial.RationalRoot
+import RingTheory.Ideal.Over
+import RingTheory.Polynomial.RationalRoot
#align_import ring_theory.dedekind_domain.basic from "leanprover-community/mathlib"@"5c1efce12ba86d4901463f61019832f6a4b1a0d0"
@@ -47,7 +47,7 @@ variable (R A K : Type _) [CommRing R] [CommRing A] [Field K]
open scoped nonZeroDivisors Polynomial
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (p «expr ≠ » («expr⊥»() : ideal[ideal] R)) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (p «expr ≠ » («expr⊥»() : ideal[ideal] R)) -/
#print Ring.DimensionLEOne /-
/-- A ring `R` has Krull dimension at most one if all nonzero prime ideals are maximal. -/
def Ring.DimensionLEOne : Prop :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2020 Kenji Nakagawa. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenji Nakagawa, Anne Baanen, Filippo A. E. Nuccio
-
-! This file was ported from Lean 3 source module ring_theory.dedekind_domain.basic
-! 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.Ideal.Over
import Mathbin.RingTheory.Polynomial.RationalRoot
+#align_import ring_theory.dedekind_domain.basic from "leanprover-community/mathlib"@"5c1efce12ba86d4901463f61019832f6a4b1a0d0"
+
/-!
# Dedekind domains
@@ -50,7 +47,7 @@ variable (R A K : Type _) [CommRing R] [CommRing A] [Field K]
open scoped nonZeroDivisors Polynomial
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (p «expr ≠ » («expr⊥»() : ideal[ideal] R)) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (p «expr ≠ » («expr⊥»() : ideal[ideal] R)) -/
#print Ring.DimensionLEOne /-
/-- A ring `R` has Krull dimension at most one if all nonzero prime ideals are maximal. -/
def Ring.DimensionLEOne : Prop :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -70,17 +70,21 @@ theorem DimensionLEOne.principal_ideal_ring [IsDomain A] [IsPrincipalIdealRing A
#align ring.dimension_le_one.principal_ideal_ring Ring.DimensionLEOne.principal_ideal_ring
-/
+#print Ring.DimensionLEOne.isIntegralClosure /-
theorem DimensionLEOne.isIntegralClosure (B : Type _) [CommRing B] [IsDomain B] [Nontrivial R]
[Algebra R A] [Algebra R B] [Algebra B A] [IsScalarTower R B A] [IsIntegralClosure B R A]
(h : DimensionLEOne R) : DimensionLEOne B := fun p ne_bot prime =>
is_integral_closure.is_maximal_of_is_maximal_comap A p
(h _ (is_integral_closure.comap_ne_bot A ne_bot) inferInstance)
#align ring.dimension_le_one.is_integral_closure Ring.DimensionLEOne.isIntegralClosure
+-/
+#print Ring.DimensionLEOne.integralClosure /-
theorem DimensionLEOne.integralClosure [Nontrivial R] [IsDomain A] [Algebra R A]
(h : DimensionLEOne R) : DimensionLEOne (integralClosure R A) :=
h.IsIntegralClosure R A (integralClosure R A)
#align ring.dimension_le_one.integral_closure Ring.DimensionLEOne.integralClosure
+-/
variable {R}
@@ -91,10 +95,12 @@ theorem DimensionLEOne.not_lt_lt (h : Ring.DimensionLEOne R) (p₀ p₁ p₂ : I
#align ring.dimension_le_one.not_lt_lt Ring.DimensionLEOne.not_lt_lt
-/
+#print Ring.DimensionLEOne.eq_bot_of_lt /-
theorem DimensionLEOne.eq_bot_of_lt (h : Ring.DimensionLEOne R) (p P : Ideal R) [hp : p.IsPrime]
[hP : P.IsPrime] (hpP : p < P) : p = ⊥ :=
by_contra fun hp0 => h.not_lt_lt ⊥ p P ⟨Ne.bot_lt hp0, hpP⟩
#align ring.dimension_le_one.eq_bot_of_lt Ring.DimensionLEOne.eq_bot_of_lt
+-/
end Ring
@@ -123,6 +129,7 @@ class IsDedekindDomain : Prop where
-- See library note [lower instance priority]
attribute [instance 100] IsDedekindDomain.isNoetherianRing IsDedekindDomain.isIntegrallyClosed
+#print isDedekindDomain_iff /-
/-- An integral domain is a Dedekind domain iff and only if it is
Noetherian, has dimension ≤ 1, and is integrally closed in a given fraction field.
In particular, this definition does not depend on the choice of this fraction field. -/
@@ -133,6 +140,7 @@ theorem isDedekindDomain_iff (K : Type _) [Field K] [Algebra A K] [IsFractionRin
⟨fun ⟨hr, hd, hi⟩ => ⟨hr, hd, fun x => (isIntegrallyClosed_iff K).mp hi⟩, fun ⟨hr, hd, hi⟩ =>
⟨hr, hd, (isIntegrallyClosed_iff K).mpr @hi⟩⟩
#align is_dedekind_domain_iff isDedekindDomain_iff
+-/
#print IsPrincipalIdealRing.isDedekindDomain /-
-- See library note [lower instance priority]
mathlib commit https://github.com/leanprover-community/mathlib/commit/31c24aa72e7b3e5ed97a8412470e904f82b81004
@@ -50,7 +50,7 @@ variable (R A K : Type _) [CommRing R] [CommRing A] [Field K]
open scoped nonZeroDivisors Polynomial
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (p «expr ≠ » («expr⊥»() : ideal[ideal] R)) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (p «expr ≠ » («expr⊥»() : ideal[ideal] R)) -/
#print Ring.DimensionLEOne /-
/-- A ring `R` has Krull dimension at most one if all nonzero prime ideals are maximal. -/
def Ring.DimensionLEOne : Prop :=
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: Kenji Nakagawa, Anne Baanen, Filippo A. E. Nuccio
! This file was ported from Lean 3 source module ring_theory.dedekind_domain.basic
-! leanprover-community/mathlib commit 926daa81fd8acb2a04e15572c4ff20af2753c2ae
+! leanprover-community/mathlib commit 5c1efce12ba86d4901463f61019832f6a4b1a0d0
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -14,6 +14,9 @@ import Mathbin.RingTheory.Polynomial.RationalRoot
/-!
# Dedekind domains
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file defines the notion of a Dedekind domain (or Dedekind ring),
as a Noetherian integrally closed commutative ring of Krull dimension at most one.
@@ -48,49 +51,56 @@ variable (R A K : Type _) [CommRing R] [CommRing A] [Field K]
open scoped nonZeroDivisors Polynomial
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (p «expr ≠ » («expr⊥»() : ideal[ideal] R)) -/
+#print Ring.DimensionLEOne /-
/-- A ring `R` has Krull dimension at most one if all nonzero prime ideals are maximal. -/
-def Ring.DimensionLeOne : Prop :=
+def Ring.DimensionLEOne : Prop :=
∀ (p) (_ : p ≠ (⊥ : Ideal R)), p.IsPrime → p.IsMaximal
-#align ring.dimension_le_one Ring.DimensionLeOne
+#align ring.dimension_le_one Ring.DimensionLEOne
+-/
open Ideal Ring
namespace Ring
-theorem DimensionLeOne.principal_ideal_ring [IsDomain A] [IsPrincipalIdealRing A] :
- DimensionLeOne A := fun p nonzero prime =>
+#print Ring.DimensionLEOne.principal_ideal_ring /-
+theorem DimensionLEOne.principal_ideal_ring [IsDomain A] [IsPrincipalIdealRing A] :
+ DimensionLEOne A := fun p nonzero prime =>
haveI := Prime
IsPrime.to_maximal_ideal nonzero
-#align ring.dimension_le_one.principal_ideal_ring Ring.DimensionLeOne.principal_ideal_ring
+#align ring.dimension_le_one.principal_ideal_ring Ring.DimensionLEOne.principal_ideal_ring
+-/
-theorem DimensionLeOne.isIntegralClosure (B : Type _) [CommRing B] [IsDomain B] [Nontrivial R]
+theorem DimensionLEOne.isIntegralClosure (B : Type _) [CommRing B] [IsDomain B] [Nontrivial R]
[Algebra R A] [Algebra R B] [Algebra B A] [IsScalarTower R B A] [IsIntegralClosure B R A]
- (h : DimensionLeOne R) : DimensionLeOne B := fun p ne_bot prime =>
+ (h : DimensionLEOne R) : DimensionLEOne B := fun p ne_bot prime =>
is_integral_closure.is_maximal_of_is_maximal_comap A p
(h _ (is_integral_closure.comap_ne_bot A ne_bot) inferInstance)
-#align ring.dimension_le_one.is_integral_closure Ring.DimensionLeOne.isIntegralClosure
+#align ring.dimension_le_one.is_integral_closure Ring.DimensionLEOne.isIntegralClosure
-theorem DimensionLeOne.integralClosure [Nontrivial R] [IsDomain A] [Algebra R A]
- (h : DimensionLeOne R) : DimensionLeOne (integralClosure R A) :=
+theorem DimensionLEOne.integralClosure [Nontrivial R] [IsDomain A] [Algebra R A]
+ (h : DimensionLEOne R) : DimensionLEOne (integralClosure R A) :=
h.IsIntegralClosure R A (integralClosure R A)
-#align ring.dimension_le_one.integral_closure Ring.DimensionLeOne.integralClosure
+#align ring.dimension_le_one.integral_closure Ring.DimensionLEOne.integralClosure
variable {R}
-theorem DimensionLeOne.not_lt_lt (h : Ring.DimensionLeOne R) (p₀ p₁ p₂ : Ideal R) [hp₁ : p₁.IsPrime]
+#print Ring.DimensionLEOne.not_lt_lt /-
+theorem DimensionLEOne.not_lt_lt (h : Ring.DimensionLEOne R) (p₀ p₁ p₂ : Ideal R) [hp₁ : p₁.IsPrime]
[hp₂ : p₂.IsPrime] : ¬(p₀ < p₁ ∧ p₁ < p₂)
| ⟨h01, h12⟩ => h12.Ne ((h p₁ (bot_le.trans_lt h01).ne' hp₁).eq_of_le hp₂.ne_top h12.le)
-#align ring.dimension_le_one.not_lt_lt Ring.DimensionLeOne.not_lt_lt
+#align ring.dimension_le_one.not_lt_lt Ring.DimensionLEOne.not_lt_lt
+-/
-theorem DimensionLeOne.eq_bot_of_lt (h : Ring.DimensionLeOne R) (p P : Ideal R) [hp : p.IsPrime]
+theorem DimensionLEOne.eq_bot_of_lt (h : Ring.DimensionLEOne R) (p P : Ideal R) [hp : p.IsPrime]
[hP : P.IsPrime] (hpP : p < P) : p = ⊥ :=
by_contra fun hp0 => h.not_lt_lt ⊥ p P ⟨Ne.bot_lt hp0, hpP⟩
-#align ring.dimension_le_one.eq_bot_of_lt Ring.DimensionLeOne.eq_bot_of_lt
+#align ring.dimension_le_one.eq_bot_of_lt Ring.DimensionLEOne.eq_bot_of_lt
end Ring
variable [IsDomain A]
+#print IsDedekindDomain /-
/-- A Dedekind domain is an integral domain that is Noetherian, integrally closed, and
has Krull dimension at most one.
@@ -105,9 +115,10 @@ TODO: Prove that these are actually equivalent definitions.
-/
class IsDedekindDomain : Prop where
IsNoetherianRing : IsNoetherianRing A
- DimensionLeOne : DimensionLeOne A
+ DimensionLEOne : DimensionLEOne A
IsIntegrallyClosed : IsIntegrallyClosed A
#align is_dedekind_domain IsDedekindDomain
+-/
-- See library note [lower instance priority]
attribute [instance 100] IsDedekindDomain.isNoetherianRing IsDedekindDomain.isIntegrallyClosed
@@ -118,15 +129,17 @@ In particular, this definition does not depend on the choice of this fraction fi
theorem isDedekindDomain_iff (K : Type _) [Field K] [Algebra A K] [IsFractionRing A K] :
IsDedekindDomain A ↔
IsNoetherianRing A ∧
- DimensionLeOne A ∧ ∀ {x : K}, IsIntegral A x → ∃ y, algebraMap A K y = x :=
+ DimensionLEOne A ∧ ∀ {x : K}, IsIntegral A x → ∃ y, algebraMap A K y = x :=
⟨fun ⟨hr, hd, hi⟩ => ⟨hr, hd, fun x => (isIntegrallyClosed_iff K).mp hi⟩, fun ⟨hr, hd, hi⟩ =>
⟨hr, hd, (isIntegrallyClosed_iff K).mpr @hi⟩⟩
#align is_dedekind_domain_iff isDedekindDomain_iff
+#print IsPrincipalIdealRing.isDedekindDomain /-
-- See library note [lower instance priority]
instance (priority := 100) IsPrincipalIdealRing.isDedekindDomain [IsPrincipalIdealRing A] :
IsDedekindDomain A :=
- ⟨PrincipalIdealRing.isNoetherianRing, Ring.DimensionLeOne.principal_ideal_ring A,
- UniqueFactorizationMonoid.isIntegrallyClosed⟩
+ ⟨PrincipalIdealRing.isNoetherianRing, Ring.DimensionLEOne.principal_ideal_ring A,
+ UniqueFactorizationMonoid.instIsIntegrallyClosed⟩
#align is_principal_ideal_ring.is_dedekind_domain IsPrincipalIdealRing.isDedekindDomain
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -45,7 +45,7 @@ dedekind domain, dedekind ring
variable (R A K : Type _) [CommRing R] [CommRing A] [Field K]
-open nonZeroDivisors Polynomial
+open scoped nonZeroDivisors Polynomial
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (p «expr ≠ » («expr⊥»() : ideal[ideal] R)) -/
/-- A ring `R` has Krull dimension at most one if all nonzero prime ideals are maximal. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/09079525fd01b3dda35e96adaa08d2f943e1648c
@@ -110,7 +110,7 @@ class IsDedekindDomain : Prop where
#align is_dedekind_domain IsDedekindDomain
-- See library note [lower instance priority]
-attribute [instance] IsDedekindDomain.isNoetherianRing IsDedekindDomain.isIntegrallyClosed
+attribute [instance 100] IsDedekindDomain.isNoetherianRing IsDedekindDomain.isIntegrallyClosed
/-- An integral domain is a Dedekind domain iff and only if it is
Noetherian, has dimension ≤ 1, and is integrally closed in a given fraction field.
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -47,7 +47,7 @@ variable (R A K : Type _) [CommRing R] [CommRing A] [Field K]
open nonZeroDivisors Polynomial
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (p «expr ≠ » («expr⊥»() : ideal[ideal] R)) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (p «expr ≠ » («expr⊥»() : ideal[ideal] R)) -/
/-- A ring `R` has Krull dimension at most one if all nonzero prime ideals are maximal. -/
def Ring.DimensionLeOne : Prop :=
∀ (p) (_ : p ≠ (⊥ : Ideal R)), p.IsPrime → p.IsMaximal
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
IsIntegrallyClosedIn
(#7857)
This refactor adds a new definition IsIntegrallyClosedIn R A
equal to IsIntegralClosure R A A
, and redefines IsIntegrallyClosed R
to equal IsIntegrallyClosed R (FractionRing A)
. This should make it possible and convenient to generalize away from the fraction fields.
This also more closely approximates the conventions of the Stacks project.
This is a second attempt at the refactor, after #7116 which was much more messy.
@@ -105,7 +105,7 @@ The integral closure condition is independent of the choice of field of fraction
use `isDedekindRing_iff` to prove `IsDedekindRing` for a given `fraction_map`.
-/
class IsDedekindRing
- extends IsNoetherian A A, DimensionLEOne A, IsIntegrallyClosed A : Prop
+ extends IsNoetherian A A, DimensionLEOne A, IsIntegralClosure A A (FractionRing A) : Prop
/-- An integral domain is a Dedekind domain if and only if it is
Noetherian, has dimension ≤ 1, and is integrally closed in a given fraction field.
Type _
before the colon (#7718)
We have turned to Type*
instead of Type _
, but many of them remained in mathlib because the straight replacement did not work. In general, having Type _
before the colon is a code smell, though, as it hides which types should be in the same universe and which shouldn't, and is not very robust.
This PR replaces most of the remaining Type _
before the colon (except those in category theory) by Type*
or Type u
. This has uncovered a few bugs (where declarations were not as polymorphic as they should be).
I had to increase heartbeats at two places when replacing Type _
by Type*
, but I think it's worth it as it's really more robust.
@@ -110,7 +110,7 @@ class IsDedekindRing
/-- An integral domain is a Dedekind domain if and only if it is
Noetherian, has dimension ≤ 1, and is integrally closed in a given fraction field.
In particular, this definition does not depend on the choice of this fraction field. -/
-theorem isDedekindRing_iff (K : Type _) [CommRing K] [Algebra A K] [IsFractionRing A K] :
+theorem isDedekindRing_iff (K : Type*) [CommRing K] [Algebra A K] [IsFractionRing A K] :
IsDedekindRing A ↔
IsNoetherianRing A ∧ DimensionLEOne A ∧
∀ {x : K}, IsIntegral A x → ∃ y, algebraMap A K y = x :=
@@ -9,23 +9,29 @@ import Mathlib.RingTheory.Polynomial.RationalRoot
#align_import ring_theory.dedekind_domain.basic from "leanprover-community/mathlib"@"926daa81fd8acb2a04e15572c4ff20af2753c2ae"
/-!
-# Dedekind domains
+# Dedekind rings and domains
-This file defines the notion of a Dedekind domain (or Dedekind ring),
-as a Noetherian integrally closed commutative ring of Krull dimension at most one.
+This file defines the notion of a Dedekind ring (domain),
+as a Noetherian integrally closed commutative ring (domain) of Krull dimension at most one.
## Main definitions
- - `IsDedekindDomain` defines a Dedekind domain as a commutative ring that is
+ - `IsDedekindRing` defines a Dedekind ring as a commutative ring that is
Noetherian, integrally closed in its field of fractions and has Krull dimension at most one.
- `isDedekindDomain_iff` shows that this does not depend on the choice of field of fractions.
+ `isDedekindRing_iff` shows that this does not depend on the choice of field of fractions.
+ - `IsDedekindDomain` defines a Dedekind domain as a Dedekind ring that is a domain.
## Implementation notes
The definitions that involve a field of fractions choose a canonical field of fractions,
but are independent of that choice. The `..._iff` lemmas express this independence.
-Often, definitions assume that Dedekind domains are not fields. We found it more practical
+`IsDedekindRing` and `IsDedekindDomain` form a cycle in the typeclass hierarchy:
+`IsDedekindRing R + IsDomain R` imply `IsDedekindDomain R`, which implies `IsDedekindRing R`.
+This should be safe since the start and end point is the literal same expression,
+which the tabled typeclass synthesis algorithm can deal with.
+
+Often, definitions assume that Dedekind rings are not fields. We found it more practical
to add a `(h : ¬ IsField A)` assumption whenever this is explicitly needed.
## References
@@ -90,11 +96,35 @@ theorem DimensionLEOne.eq_bot_of_lt [Ring.DimensionLEOne R] (p P : Ideal R) [p.I
end Ring
+/-- A Dedekind ring is a commutative ring that is Noetherian, integrally closed, and
+has Krull dimension at most one.
+
+This is exactly `IsDedekindDomain` minus the `IsDomain` hypothesis.
+
+The integral closure condition is independent of the choice of field of fractions:
+use `isDedekindRing_iff` to prove `IsDedekindRing` for a given `fraction_map`.
+-/
+class IsDedekindRing
+ extends IsNoetherian A A, DimensionLEOne A, IsIntegrallyClosed A : Prop
+
+/-- An integral domain is a Dedekind domain if and only if it is
+Noetherian, has dimension ≤ 1, and is integrally closed in a given fraction field.
+In particular, this definition does not depend on the choice of this fraction field. -/
+theorem isDedekindRing_iff (K : Type _) [CommRing K] [Algebra A K] [IsFractionRing A K] :
+ IsDedekindRing A ↔
+ IsNoetherianRing A ∧ DimensionLEOne A ∧
+ ∀ {x : K}, IsIntegral A x → ∃ y, algebraMap A K y = x :=
+ ⟨fun _ => ⟨inferInstance, inferInstance,
+ fun {_} => (isIntegrallyClosed_iff K).mp inferInstance⟩,
+ fun ⟨hr, hd, hi⟩ => { hr, hd, (isIntegrallyClosed_iff K).mpr @hi with }⟩
+
/-- A Dedekind domain is an integral domain that is Noetherian, integrally closed, and
has Krull dimension at most one.
This is definition 3.2 of [Neukirch1992].
+This is exactly `IsDedekindRing` plus the `IsDomain` hypothesis.
+
The integral closure condition is independent of the choice of field of fractions:
use `isDedekindDomain_iff` to prove `IsDedekindDomain` for a given `fraction_map`.
@@ -103,9 +133,18 @@ This is the default implementation, but there are equivalent definitions,
TODO: Prove that these are actually equivalent definitions.
-/
class IsDedekindDomain
- extends IsDomain A, IsNoetherian A A, DimensionLEOne A, IsIntegrallyClosed A : Prop
+ extends IsDomain A, IsDedekindRing A : Prop
#align is_dedekind_domain IsDedekindDomain
+/-- Make a Dedekind domain from a Dedekind ring given that it is a domain.
+
+`IsDedekindRing` and `IsDedekindDomain` form a cycle in the typeclass hierarchy:
+`IsDedekindRing R + IsDomain R` imply `IsDedekindDomain R`, which implies `IsDedekindRing R`.
+This should be safe since the start and end point is the literal same expression,
+which the tabled typeclass synthesis algorithm can deal with.
+-/
+instance [IsDomain A] [IsDedekindRing A] : IsDedekindDomain A where
+
/-- An integral domain is a Dedekind domain iff and only if it is
Noetherian, has dimension ≤ 1, and is integrally closed in a given fraction field.
In particular, this definition does not depend on the choice of this fraction field. -/
This redefines the IsDedekindDomain
class to be the conjunction through extends
of the classes IsDomain
, IsNoetherianRing
, DimensionLEOne
and IsIntegrallyClosed
.
@@ -90,8 +90,6 @@ theorem DimensionLEOne.eq_bot_of_lt [Ring.DimensionLEOne R] (p P : Ideal R) [p.I
end Ring
-variable [IsDomain A]
-
/-- A Dedekind domain is an integral domain that is Noetherian, integrally closed, and
has Krull dimension at most one.
@@ -104,30 +102,26 @@ This is the default implementation, but there are equivalent definitions,
`is_dedekind_domain_dvr` and `is_dedekind_domain_inv`.
TODO: Prove that these are actually equivalent definitions.
-/
-class IsDedekindDomain : Prop where
- isNoetherianRing : IsNoetherianRing A
- dimensionLEOne : DimensionLEOne A
- isIntegrallyClosed : IsIntegrallyClosed A
+class IsDedekindDomain
+ extends IsDomain A, IsNoetherian A A, DimensionLEOne A, IsIntegrallyClosed A : Prop
#align is_dedekind_domain IsDedekindDomain
--- See library note [lower instance priority]
-attribute [instance 100] IsDedekindDomain.dimensionLEOne IsDedekindDomain.isNoetherianRing
- IsDedekindDomain.isIntegrallyClosed
-
/-- An integral domain is a Dedekind domain iff and only if it is
Noetherian, has dimension ≤ 1, and is integrally closed in a given fraction field.
In particular, this definition does not depend on the choice of this fraction field. -/
theorem isDedekindDomain_iff (K : Type*) [Field K] [Algebra A K] [IsFractionRing A K] :
IsDedekindDomain A ↔
- IsNoetherianRing A ∧
- DimensionLEOne A ∧ ∀ {x : K}, IsIntegral A x → ∃ y, algebraMap A K y = x :=
- ⟨fun ⟨hr, hd, hi⟩ => ⟨hr, hd, fun {_} => (isIntegrallyClosed_iff K).mp hi⟩, fun ⟨hr, hd, hi⟩ =>
- ⟨hr, hd, (isIntegrallyClosed_iff K).mpr @hi⟩⟩
+ IsDomain A ∧ IsNoetherianRing A ∧ DimensionLEOne A ∧
+ ∀ {x : K}, IsIntegral A x → ∃ y, algebraMap A K y = x :=
+ ⟨fun _ => ⟨inferInstance, inferInstance, inferInstance,
+ fun {_} => (isIntegrallyClosed_iff K).mp inferInstance⟩,
+ fun ⟨hid, hr, hd, hi⟩ => { hid, hr, hd, (isIntegrallyClosed_iff K).mpr @hi with }⟩
#align is_dedekind_domain_iff isDedekindDomain_iff
-- See library note [lower instance priority]
-instance (priority := 100) IsPrincipalIdealRing.isDedekindDomain [IsPrincipalIdealRing A] :
+instance (priority := 100) IsPrincipalIdealRing.isDedekindDomain
+ [IsDomain A] [IsPrincipalIdealRing A] :
IsDedekindDomain A :=
- ⟨PrincipalIdealRing.isNoetherianRing, Ring.DimensionLEOne.principal_ideal_ring A,
- UniqueFactorizationMonoid.instIsIntegrallyClosed⟩
+ { PrincipalIdealRing.isNoetherianRing, Ring.DimensionLEOne.principal_ideal_ring A,
+ UniqueFactorizationMonoid.instIsIntegrallyClosed with }
#align is_principal_ideal_ring.is_dedekind_domain IsPrincipalIdealRing.isDedekindDomain
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -40,7 +40,7 @@ dedekind domain, dedekind ring
-/
-variable (R A K : Type _) [CommRing R] [CommRing A] [Field K]
+variable (R A K : Type*) [CommRing R] [CommRing A] [Field K]
open scoped nonZeroDivisors Polynomial
@@ -51,7 +51,7 @@ class Ring.DimensionLEOne : Prop :=
open Ideal Ring
-theorem Ideal.IsPrime.isMaximal {R : Type _} [CommRing R] [DimensionLEOne R]
+theorem Ideal.IsPrime.isMaximal {R : Type*} [CommRing R] [DimensionLEOne R]
{p : Ideal R} (h : p.IsPrime) (hp : p ≠ ⊥) : p.IsMaximal :=
DimensionLEOne.maximalOfPrime hp h
@@ -63,7 +63,7 @@ instance DimensionLEOne.principal_ideal_ring [IsDomain A] [IsPrincipalIdealRing
IsPrime.to_maximal_ideal nonzero
#align ring.dimension_le_one.principal_ideal_ring Ring.DimensionLEOne.principal_ideal_ring
-theorem DimensionLEOne.isIntegralClosure (B : Type _) [CommRing B] [IsDomain B] [Nontrivial R]
+theorem DimensionLEOne.isIntegralClosure (B : Type*) [CommRing B] [IsDomain B] [Nontrivial R]
[Algebra R A] [Algebra R B] [Algebra B A] [IsScalarTower R B A] [IsIntegralClosure B R A]
[DimensionLEOne R] : DimensionLEOne B where
maximalOfPrime := fun {p} ne_bot _ =>
@@ -117,7 +117,7 @@ attribute [instance 100] IsDedekindDomain.dimensionLEOne IsDedekindDomain.isNoet
/-- An integral domain is a Dedekind domain iff and only if it is
Noetherian, has dimension ≤ 1, and is integrally closed in a given fraction field.
In particular, this definition does not depend on the choice of this fraction field. -/
-theorem isDedekindDomain_iff (K : Type _) [Field K] [Algebra A K] [IsFractionRing A K] :
+theorem isDedekindDomain_iff (K : Type*) [Field K] [Algebra A K] [IsFractionRing A K] :
IsDedekindDomain A ↔
IsNoetherianRing A ∧
DimensionLEOne A ∧ ∀ {x : K}, IsIntegral A x → ∃ y, algebraMap A K y = x :=
DimensionLEOne
into a class (#5833)
The predicate that a ring has Krull dimension at most one was a regular def
. I believe we should turn it into a class because:
IsDedekindDomain
the conjunction of a number of classes, so we could switch to extends
for all its fields.The main change in API is the addition of Ideal.IsPrime.isMaximal
which is a restatement of the Krull dimension property with convenient dot notation: turn a prime ideal into a maximal ideal given the hypothesis that it's not zero.
@@ -45,41 +45,47 @@ variable (R A K : Type _) [CommRing R] [CommRing A] [Field K]
open scoped nonZeroDivisors Polynomial
/-- A ring `R` has Krull dimension at most one if all nonzero prime ideals are maximal. -/
-def Ring.DimensionLEOne : Prop :=
- ∀ (p) (_ : p ≠ (⊥ : Ideal R)), p.IsPrime → p.IsMaximal
+class Ring.DimensionLEOne : Prop :=
+ (maximalOfPrime : ∀ {p : Ideal R}, p ≠ ⊥ → p.IsPrime → p.IsMaximal)
#align ring.dimension_le_one Ring.DimensionLEOne
open Ideal Ring
+theorem Ideal.IsPrime.isMaximal {R : Type _} [CommRing R] [DimensionLEOne R]
+ {p : Ideal R} (h : p.IsPrime) (hp : p ≠ ⊥) : p.IsMaximal :=
+ DimensionLEOne.maximalOfPrime hp h
+
namespace Ring
-theorem DimensionLEOne.principal_ideal_ring [IsDomain A] [IsPrincipalIdealRing A] :
- DimensionLEOne A := fun _ nonzero _ =>
- IsPrime.to_maximal_ideal nonzero
+instance DimensionLEOne.principal_ideal_ring [IsDomain A] [IsPrincipalIdealRing A] :
+ DimensionLEOne A where
+ maximalOfPrime := fun nonzero _ =>
+ IsPrime.to_maximal_ideal nonzero
#align ring.dimension_le_one.principal_ideal_ring Ring.DimensionLEOne.principal_ideal_ring
theorem DimensionLEOne.isIntegralClosure (B : Type _) [CommRing B] [IsDomain B] [Nontrivial R]
[Algebra R A] [Algebra R B] [Algebra B A] [IsScalarTower R B A] [IsIntegralClosure B R A]
- (h : DimensionLEOne R) : DimensionLEOne B := fun p ne_bot _ =>
- IsIntegralClosure.isMaximal_of_isMaximal_comap A p
- (h _ (IsIntegralClosure.comap_ne_bot A ne_bot) inferInstance)
+ [DimensionLEOne R] : DimensionLEOne B where
+ maximalOfPrime := fun {p} ne_bot _ =>
+ IsIntegralClosure.isMaximal_of_isMaximal_comap (R := R) A p
+ (Ideal.IsPrime.isMaximal inferInstance (IsIntegralClosure.comap_ne_bot A ne_bot))
#align ring.dimension_le_one.is_integral_closure Ring.DimensionLEOne.isIntegralClosure
-nonrec theorem DimensionLEOne.integralClosure [Nontrivial R] [IsDomain A] [Algebra R A]
- (h : DimensionLEOne R) : DimensionLEOne (integralClosure R A) :=
- h.isIntegralClosure R A (integralClosure R A)
+nonrec instance DimensionLEOne.integralClosure [Nontrivial R] [IsDomain A] [Algebra R A]
+ [DimensionLEOne R] : DimensionLEOne (integralClosure R A) :=
+ DimensionLEOne.isIntegralClosure R A (integralClosure R A)
#align ring.dimension_le_one.integral_closure Ring.DimensionLEOne.integralClosure
variable {R}
-theorem DimensionLEOne.not_lt_lt (h : Ring.DimensionLEOne R) (p₀ p₁ p₂ : Ideal R) [hp₁ : p₁.IsPrime]
+theorem DimensionLEOne.not_lt_lt [Ring.DimensionLEOne R] (p₀ p₁ p₂ : Ideal R) [hp₁ : p₁.IsPrime]
[hp₂ : p₂.IsPrime] : ¬(p₀ < p₁ ∧ p₁ < p₂)
- | ⟨h01, h12⟩ => h12.ne ((h p₁ (bot_le.trans_lt h01).ne' hp₁).eq_of_le hp₂.ne_top h12.le)
+ | ⟨h01, h12⟩ => h12.ne ((hp₁.isMaximal (bot_le.trans_lt h01).ne').eq_of_le hp₂.ne_top h12.le)
#align ring.dimension_le_one.not_lt_lt Ring.DimensionLEOne.not_lt_lt
-theorem DimensionLEOne.eq_bot_of_lt (h : Ring.DimensionLEOne R) (p P : Ideal R) [p.IsPrime]
+theorem DimensionLEOne.eq_bot_of_lt [Ring.DimensionLEOne R] (p P : Ideal R) [p.IsPrime]
[P.IsPrime] (hpP : p < P) : p = ⊥ :=
- by_contra fun hp0 => h.not_lt_lt ⊥ p P ⟨Ne.bot_lt hp0, hpP⟩
+ by_contra fun hp0 => not_lt_lt ⊥ p P ⟨Ne.bot_lt hp0, hpP⟩
#align ring.dimension_le_one.eq_bot_of_lt Ring.DimensionLEOne.eq_bot_of_lt
end Ring
@@ -105,7 +111,8 @@ class IsDedekindDomain : Prop where
#align is_dedekind_domain IsDedekindDomain
-- See library note [lower instance priority]
-attribute [instance 100] IsDedekindDomain.isNoetherianRing IsDedekindDomain.isIntegrallyClosed
+attribute [instance 100] IsDedekindDomain.dimensionLEOne IsDedekindDomain.isNoetherianRing
+ IsDedekindDomain.isIntegrallyClosed
/-- An integral domain is a Dedekind domain iff and only if it is
Noetherian, has dimension ≤ 1, and is integrally closed in a given fraction field.
@@ -2,15 +2,12 @@
Copyright (c) 2020 Kenji Nakagawa. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenji Nakagawa, Anne Baanen, Filippo A. E. Nuccio
-
-! This file was ported from Lean 3 source module ring_theory.dedekind_domain.basic
-! leanprover-community/mathlib commit 926daa81fd8acb2a04e15572c4ff20af2753c2ae
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.RingTheory.Ideal.Over
import Mathlib.RingTheory.Polynomial.RationalRoot
+#align_import ring_theory.dedekind_domain.basic from "leanprover-community/mathlib"@"926daa81fd8acb2a04e15572c4ff20af2753c2ae"
+
/-!
# Dedekind domains
@@ -103,7 +103,7 @@ TODO: Prove that these are actually equivalent definitions.
-/
class IsDedekindDomain : Prop where
isNoetherianRing : IsNoetherianRing A
- dimensionLeOne : DimensionLEOne A
+ dimensionLEOne : DimensionLEOne A
isIntegrallyClosed : IsIntegrallyClosed A
#align is_dedekind_domain IsDedekindDomain
The unported dependencies are