Module

IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.lean

Nyll.AlgebraicCurves.Foundations.CommutativeAlgebra.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
31 declarations indexed from sourceView source ↗

Is Regular Ring unique Factorization Monoid of is Local Ring

Declarations

AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.DepthLemma.length_le_depth
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace DepthLemma
variable {R : Type*} [CommRing R] [IsLocalRing R]
lemma length_le_depth {M : Type*} [AddCommGroup M] [Module R M] {rs : List R}
    (h1 : IsWeaklyRegular M rs) (h2 : ∀ r ∈ rs, r ∈ maximalIdeal R) :
    (rs.length : ℕ∞) ≤ Module.depth R M
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.DepthLemma.exists_isSMulRegular_of_one_le_depth
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace DepthLemma
variable {R : Type*} [CommRing R] [IsLocalRing R]
lemma exists_isSMulRegular_of_one_le_depth {M : Type*} [AddCommGroup M] [Module R M]
    (h : 1 ≤ Module.depth R M) : ∃ x ∈ maximalIdeal R, IsSMulRegular M x
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.DepthLemma.not_isAssociatedPrime_of_isSMulRegular
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace DepthLemma
variable {R : Type*} [CommRing R] [IsLocalRing R]
lemma not_isAssociatedPrime_of_isSMulRegular [IsNoetherianRing R]
    {M : Type*} [AddCommGroup M] [Module R M]
    {x : R} (hx : x ∈ maximalIdeal R) (hreg : IsSMulRegular M x) :
    ¬ IsAssociatedPrime (maximalIdeal R) M
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.DepthLemma.core
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace DepthLemma
variable {R : Type*} [CommRing R] [IsLocalRing R]
theorem core [IsNoetherianRing R] (n : ℕ) :
    ∀ {K F M : Type*} [AddCommGroup K] [Module R K] [AddCommGroup F] [Module R F]
      [Module.Finite R F] [AddCommGroup M] [Module R M]
      (f : K →ₗ[R] F) (g : F →ₗ[R] M), Function.Injective f → Function.Exact f g →
      Function.Surjective g →
      (n : ℕ∞) ≤ Module.depth R F → (n : ℕ∞) ≤ Module.depth R M + 1 →
      (n : ℕ∞) ≤ Module.depth R K
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.DepthLemma.min_depth_depth_add_one_le_depth_of_exact
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace DepthLemma
variable {R : Type*} [CommRing R] [IsLocalRing R]
theorem min_depth_depth_add_one_le_depth_of_exact
    {R : Type*} [CommRing R] [IsLocalRing R] [IsNoetherianRing R]
    {K F M : Type*} [AddCommGroup K] [Module R K] [AddCommGroup F] [Module R F]
    [Module.Finite R F] [AddCommGroup M] [Module R M]
    (f : K →ₗ[R] F) (g : F →ₗ[R] M) (hf : Function.Injective f) (hfg : Function.Exact f g)
    (hg : Function.Surjective g) :
    min (Module.depth R F) (Module.depth R M + 1) ≤ Module.depth R K
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.StablyFree.HasFFR

Existence of a finite free resolution of the specified length, defined recursively through kernels.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace StablyFree
def HasFFR (R : Type u) [CommRing R] : ℕ → (K : Type u) → [AddCommGroup K] → [Module R K] → Prop
  | 0, K, _, _ => Module.Finite R K ∧ Module.Free R K
  | n + 1, K, _, _ => ∃ (k : ℕ) (f : (Fin k → R) →ₗ[R] K),
      Function.Surjective f ∧ HasFFR R n (LinearMap.ker f)
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.StablyFree.hasFFR_zero_iff
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace StablyFree
variable {R : Type u} [CommRing R]
lemma hasFFR_zero_iff (K : Type u) [AddCommGroup K] [Module R K] :
    HasFFR R 0 K ↔ Module.Finite R K ∧ Module.Free R K
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.StablyFree.hasFFR_succ_iff
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace StablyFree
variable {R : Type u} [CommRing R]
lemma hasFFR_succ_iff (n : ℕ) (K : Type u) [AddCommGroup K] [Module R K] :
    HasFFR R (n + 1) K ↔ ∃ (k : ℕ) (f : (Fin k → R) →ₗ[R] K),
      Function.Surjective f ∧ HasFFR R n (LinearMap.ker f)
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.StablyFree.HasFFR.congr
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace StablyFree
variable {R : Type u} [CommRing R]
lemma HasFFR.congr : ∀ (n : ℕ) {K K' : Type u} [AddCommGroup K] [Module R K]
    [AddCommGroup K'] [Module R K'] (_e : K ≃ₗ[R] K'), HasFFR R n K → HasFFR R n K'
  | 0, K, K', _, _, _, _, e, h => by
    rw [hasFFR_zero_iff] at h ⊢
    obtain ⟨h1, h2⟩ := h
    exact ⟨Module.Finite.equiv e, Module.Free.of_equiv e⟩
  | n + 1, K, K', _, _, _, _, e, h => by
    rw [hasFFR_succ_iff] at h ⊢
    obtain ⟨k, f, hf, hK⟩ := h
    refine ⟨k, e.toLinearMap ∘ₗ f, e.surjective.comp hf, ?_⟩
    have hker : LinearMap.ker (e.toLinearMap ∘ₗ f) = LinearMap.ker f := LinearEquiv.ker_comp e f
    exact HasFFR.congr n (LinearEquiv.ofEq _ _ hker.symm) hK
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.StablyFree.length_le_depth
Source context 11 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace StablyFree
variable {R : Type u} [CommRing R]
section depth
variable [IsLocalRing R]
lemma length_le_depth {M : Type*} [AddCommGroup M] [Module R M] {rs : List R}
    (h1 : IsWeaklyRegular M rs) (h2 : ∀ r ∈ rs, r ∈ maximalIdeal R) :
    (rs.length : ℕ∞) ≤ Module.depth R M
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.StablyFree.exists_isWeaklyRegular_of_le_depth
Source context 11 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace StablyFree
variable {R : Type u} [CommRing R]
section depth
variable [IsLocalRing R]
lemma exists_isWeaklyRegular_of_le_depth {M : Type*} [AddCommGroup M] [Module R M] (n : ℕ)
    (h : (n : ℕ∞) ≤ Module.depth R M) :
    ∃ rs : List R, IsWeaklyRegular M rs ∧ (∀ r ∈ rs, r ∈ maximalIdeal R) ∧ n ≤ rs.length
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.StablyFree.depth_eq_top_of_subsingleton
Source context 11 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace StablyFree
variable {R : Type u} [CommRing R]
section depth
variable [IsLocalRing R]
lemma depth_eq_top_of_subsingleton (M : Type*) [AddCommGroup M] [Module R M] [Subsingleton M] :
    Module.depth R M = ⊤
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.StablyFree.le_depth_pi
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace StablyFree
variable {R : Type u} [CommRing R]
lemma le_depth_pi [IsRegularLocalRing R] (d : ℕ) (hd : ringKrullDim R = d) (k : ℕ) :
    (d : ℕ∞) ≤ Module.depth R (Fin k → R)
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.StablyFree.hasFFR_of_le_depth
Source context 11 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace StablyFree
variable {R : Type u} [CommRing R]
section syzygy
variable [IsRegularLocalRing R]
theorem hasFFR_of_le_depth (d : ℕ) (hd : ringKrullDim R = d) :
    ∀ n : ℕ, n ≤ d → ∀ (K : Type u) [AddCommGroup K] [Module R K] [Module.Finite R K],
      ((d - n : ℕ) : ℕ∞) ≤ Module.depth R K → HasFFR R n K
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.StablyFree.hasFFR
Source context 11 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace StablyFree
variable {R : Type u} [CommRing R]
section syzygy
variable [IsRegularLocalRing R]
theorem hasFFR (d : ℕ) (hd : ringKrullDim R = d) (K : Type u) [AddCommGroup K] [Module R K]
    [Module.Finite R K] : HasFFR R d K
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.StablyFree.kerBaseChangeEquiv

The equivalence between a kernel after flat base change and the base change of the original kernel.

Source context 11 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace StablyFree
variable {R : Type u} [CommRing R]
section stablyFree
variable (S : Type v) [CommRing S] [Algebra R S]
def kerBaseChangeEquiv [Module.Flat R S] {K : Type w} [AddCommGroup K] [Module R K]
    {k : ℕ} (f : (Fin k → R) →ₗ[R] K) :
    S ⊗[R] (LinearMap.ker f) ≃ₗ[S] LinearMap.ker (f.baseChange S)
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.StablyFree.step
Source context 12 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace StablyFree
variable {R : Type u} [CommRing R]
section stablyFree
variable (S : Type v) [CommRing S] [Algebra R S]
variable {S} in
lemma step [Module.Flat R S] {K : Type w} [AddCommGroup K] [Module R K] {k : ℕ}
    (f : (Fin k → R) →ₗ[R] K) (hf : Function.Surjective f)
    [Module.Projective S (S ⊗[R] K)] :
    Module.Projective S (S ⊗[R] (LinearMap.ker f)) ∧
      (Module.IsStablyFree S (S ⊗[R] (LinearMap.ker f)) → Module.IsStablyFree S (S ⊗[R] K))
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.StablyFree.isStablyFree_of_hasFFR
Source context 12 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace StablyFree
variable {R : Type u} [CommRing R]
section stablyFree
variable (S : Type v) [CommRing S] [Algebra R S]
variable {S} in
theorem isStablyFree_of_hasFFR [Module.Flat R S] :
    ∀ (n : ℕ) (K : Type u) [AddCommGroup K] [Module R K] [Module.Projective S (S ⊗[R] K)],
      HasFFR R n K → Module.IsStablyFree S (S ⊗[R] K)
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.StablyFree.isStablyFree_baseChange
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
namespace StablyFree
variable {R : Type u} [CommRing R]
theorem isStablyFree_baseChange (R : Type u) [CommRing R] [IsRegularLocalRing R]
    (S : Type v) [CommRing S] [Algebra R S] [Module.Flat R S]
    (M : Type w) [AddCommGroup M] [Module R M] [Module.Finite R M]
    [Module.Projective S (S ⊗[R] M)] :
    Module.IsStablyFree S (S ⊗[R] M)
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.tensorIdealEquivMap

The equivalence between tensoring an ideal to a localization and extending the ideal there.

Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
section idealLoc
variable {A : Type*} [CommRing A] (M : Submonoid A) (B : Type*) [CommRing B] [Algebra A B]
  [IsLocalization M B]
def tensorIdealEquivMap (I : Ideal A) :
    B ⊗[A] I ≃ₗ[B] (I.map (algebraMap A B) : Ideal B)
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.linearEquivOfSpanSingleton

The linear equivalence from a nonzero principal ideal in a domain to the coefficient ring.

Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
section principal
variable {S : Type*} [CommRing S]
def linearEquivOfSpanSingleton [IsDomain S] {π : S} (hπ : π ≠ 0) :
    (Ideal.span {π} : Ideal S) ≃ₗ[S] S
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.isPrincipal_of_linearEquiv
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
section principal
variable {S : Type*} [CommRing S]
lemma isPrincipal_of_linearEquiv (P : Ideal S) (e : P ≃ₗ[S] S) : P.IsPrincipal
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.ufd_of_heightOne_principal
Source context 7 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
theorem ufd_of_heightOne_principal (S : Type*) [CommRing S] [IsDomain S] [IsNoetherianRing S]
    (h : ∀ P : Ideal S, P.IsPrime → P ≠ ⊥ → P.height ≤ 1 → P.IsPrincipal) :
    UniqueFactorizationMonoid S
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.nonempty_linearEquiv_localization
Source context 10 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
section locallyPrincipal
variable {S : Type u} [CommRing S] [IsDomain S] (P : Ideal S) (hP0 : P ≠ ⊥)
  (hloc : ∀ (Q : Ideal S) [Q.IsPrime], (P.map (algebraMap S (Localization.AtPrime Q))).IsPrincipal)
include hP0 hloc
lemma nonempty_linearEquiv_localization (Q : Ideal S) [Q.IsPrime] :
    Nonempty ((P.map (algebraMap S (Localization.AtPrime Q)) : Ideal (Localization.AtPrime Q))
      ≃ₗ[Localization.AtPrime Q] Localization.AtPrime Q)
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.projective
Source context 10 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
section locallyPrincipal
variable {S : Type u} [CommRing S] [IsDomain S] (P : Ideal S) (hP0 : P ≠ ⊥)
  (hloc : ∀ (Q : Ideal S) [Q.IsPrime], (P.map (algebraMap S (Localization.AtPrime Q))).IsPrincipal)
include hP0 hloc
lemma projective [IsNoetherianRing S] : Module.Projective S P
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.invertible
Source context 10 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
section locallyPrincipal
variable {S : Type u} [CommRing S] [IsDomain S] (P : Ideal S) (hP0 : P ≠ ⊥)
  (hloc : ∀ (Q : Ideal S) [Q.IsPrime], (P.map (algebraMap S (Localization.AtPrime Q))).IsPrincipal)
include hP0 hloc
lemma invertible [IsNoetherianRing S] : Module.Invertible S P
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.isPrincipal_of_isStablyFree
Source context 10 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
section locallyPrincipal
variable {S : Type u} [CommRing S] [IsDomain S] (P : Ideal S) (hP0 : P ≠ ⊥)
  (hloc : ∀ (Q : Ideal S) [Q.IsPrime], (P.map (algebraMap S (Localization.AtPrime Q))).IsPrincipal)
include hP0 hloc
lemma isPrincipal_of_isStablyFree [IsNoetherianRing S] [Module.IsStablyFree S P] : P.IsPrincipal
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.isRegularRing_localization
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
section regular
variable {R : Type u} [CommRing R]
lemma isRegularRing_localization [IsRegularRing R] (M : Submonoid R) :
    IsRegularRing (Localization M)
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.exists_prime_mem_maximalIdeal
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
section induction
lemma exists_prime_mem_maximalIdeal (R : Type u) [CommRing R] [IsDomain R] [IsRegularLocalRing R]
    (h : maximalIdeal R ≠ ⊥) : ∃ x ∈ maximalIdeal R, x ∉ maximalIdeal R ^ 2 ∧ Prime x
AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs.IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing.P2mAB.ufd_of_ringKrullDim_le
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
namespace P2mAB
section induction
theorem ufd_of_ringKrullDim_le (d : ℕ) :
    ∀ (R : Type u) [CommRing R] [IsLocalRing R] [IsRegularRing R],
      ringKrullDim R ≤ d → UniqueFactorizationMonoid R
IsRegularRing.uniqueFactorizationMonoid_of_isLocalRing
Source context 7 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.CommutativeAlgebra.Proofs
namespace IsRegularRing_uniqueFactorizationMonoid_of_isLocalRing
open IsLocalRing RingTheory.Sequence
open scoped TensorProduct
universe u v w
open P2mAB IsLocalRing in
theorem _root_.IsRegularRing.uniqueFactorizationMonoid_of_isLocalRing
    (R : Type*) [CommRing R] [IsDomain R] [IsLocalRing R] [IsRegularRing R] :
    UniqueFactorizationMonoid R