File: Mathlib/RingTheory/EssentialFiniteness.lean

full_name: Algebra.EssFiniteType
code: /--
An `R`-algebra is essentially of finite type if
it is the localization of an algebra of finite type.
See `essFiniteType_iff_exists_subalgebra`.
-/
class EssFiniteType : Prop where
  cond : ∃ s : Finset S,
    IsLocalization ((IsUnit.submonoid S).comap (algebraMap (adjoin R (s : Set S)) S)) S
goal: Prop

full_name: Algebra.EssFiniteType.cond
code: /--
An `R`-algebra is essentially of finite type if
it is the localization of an algebra of finite type.
See `essFiniteType_iff_exists_subalgebra`.
-/
class EssFiniteType : Prop where
  cond : ∃ s : Finset S,
    IsLocalization ((IsUnit.submonoid S).comap (algebraMap (adjoin R (s : Set S)) S)) S
goal: ∃ s, IsLocalization (Submonoid.comap (algebraMap (↥(Algebra.adjoin R ↑s)) S) (IsUnit.submonoid S)) S

full_name: Algebra.EssFiniteType.finset
code: /-- Let `S` be an `R`-algebra essentially of finite type, this is a choice of a finset `s ⊆ S`
such that `S` is the localization of `R[s]`.  -/
noncomputable
def EssFiniteType.finset [h : EssFiniteType R S] : Finset S 
goal: Finset S

full_name: Algebra.EssFiniteType.subalgebra
code: /-- A choice of a subalgebra of finite type in an essentially of finite type algebra, such that
its localization is the whole ring. -/
noncomputable
abbrev EssFiniteType.subalgebra [EssFiniteType R S] : Subalgebra R S 
goal: Subalgebra R S

full_name: Algebra.EssFiniteType.adjoin_mem_finset
code: lemma EssFiniteType.adjoin_mem_finset [EssFiniteType R S] :
    adjoin R { x : subalgebra R S | x.1 ∈ finset R S } = ⊤ 
goal: Algebra.adjoin R {x | ↑x ∈ Algebra.EssFiniteType.finset R S} = ⊤

full_name: Algebra.instFiniteTypeSubtypeMemSubalgebraSubalgebra
code: instance [EssFiniteType R S] : Algebra.FiniteType R (EssFiniteType.subalgebra R S) 
goal: Algebra.FiniteType R ↥(Algebra.EssFiniteType.subalgebra R S)

full_name: Algebra.EssFiniteType.submonoid
code: /-- A submonoid of `EssFiniteType.subalgebra R S`, whose localization is the whole algebra `S`. -/
noncomputable
def EssFiniteType.submonoid [EssFiniteType R S] : Submonoid (EssFiniteType.subalgebra R S) 
goal: Submonoid ↥(Algebra.EssFiniteType.subalgebra R S)

full_name: Algebra.EssFiniteType.isLocalization
code: instance EssFiniteType.isLocalization [h : EssFiniteType R S] :
    IsLocalization (EssFiniteType.submonoid R S) S 
goal: IsLocalization (Algebra.EssFiniteType.submonoid R S) S

full_name: Algebra.essFiniteType_cond_iff
code: lemma essFiniteType_cond_iff (σ : Finset S) :
    IsLocalization ((IsUnit.submonoid S).comap (algebraMap (adjoin R (σ : Set S)) S)) S ↔
    (∀ s : S, ∃ t ∈ Algebra.adjoin R (σ : Set S),
      IsUnit t ∧ s * t ∈ Algebra.adjoin R (σ : Set S)) 
goal: IsLocalization (Submonoid.comap (algebraMap (↥(Algebra.adjoin R ↑σ)) S) (IsUnit.submonoid S)) S ↔
  ∀ (s : S), ∃ t ∈ Algebra.adjoin R ↑σ, IsUnit t ∧ s * t ∈ Algebra.adjoin R ↑σ

full_name: Algebra.essFiniteType_iff
code: lemma essFiniteType_iff :
    EssFiniteType R S ↔ ∃ (σ : Finset S),
      (∀ s : S, ∃ t ∈ Algebra.adjoin R (σ : Set S),
        IsUnit t ∧ s * t ∈ Algebra.adjoin R (σ : Set S)) 
goal: Algebra.EssFiniteType R S ↔ ∃ σ, ∀ (s : S), ∃ t ∈ Algebra.adjoin R ↑σ, IsUnit t ∧ s * t ∈ Algebra.adjoin R ↑σ

full_name: Algebra.EssFiniteType.of_finiteType
code: instance EssFiniteType.of_finiteType [FiniteType R S] : EssFiniteType R S 
goal: Algebra.EssFiniteType R S

full_name: Algebra.EssFiniteType.of_isLocalization
code: lemma EssFiniteType.of_isLocalization (M : Submonoid R) [IsLocalization M S] :
    EssFiniteType R S 
goal: Algebra.EssFiniteType R S

full_name: Algebra.EssFiniteType.of_id
code: lemma EssFiniteType.of_id : EssFiniteType R R 
goal: Algebra.EssFiniteType R R

full_name: Algebra.EssFiniteType.aux
code: lemma EssFiniteType.aux (σ : Subalgebra R S)
    (hσ : ∀ s : S, ∃ t ∈ σ, IsUnit t ∧ s * t ∈ σ)
    (τ : Set T) (t : T) (ht : t ∈ Algebra.adjoin S τ) :
    ∃ s ∈ σ, IsUnit s ∧ s • t ∈ σ.map (IsScalarTower.toAlgHom R S T) ⊔ Algebra.adjoin R τ 
goal: ∃ s ∈ σ, IsUnit s ∧ s • t ∈ Subalgebra.map (IsScalarTower.toAlgHom R S T) σ ⊔ Algebra.adjoin R τ

full_name: Algebra.EssFiniteType.comp
code: lemma EssFiniteType.comp [h₁ : EssFiniteType R S] [h₂ : EssFiniteType S T] :
    EssFiniteType R T 
goal: Algebra.EssFiniteType R T

full_name: Algebra.essFiniteType_iff_exists_subalgebra
code: lemma essFiniteType_iff_exists_subalgebra : EssFiniteType R S ↔
    ∃ (S₀ : Subalgebra R S) (M : Submonoid S₀), FiniteType R S₀ ∧ IsLocalization M S 
goal: Algebra.EssFiniteType R S ↔ ∃ S₀ M, Algebra.FiniteType R ↥S₀ ∧ IsLocalization M S

full_name: Algebra.EssFiniteType.baseChange
code: instance EssFiniteType.baseChange [h : EssFiniteType R S] : EssFiniteType T (T ⊗[R] S) 
goal: Algebra.EssFiniteType T (T ⊗[R] S)

full_name: Algebra.EssFiniteType.of_comp
code: lemma EssFiniteType.of_comp [h : EssFiniteType R T] : EssFiniteType S T 
goal: Algebra.EssFiniteType S T

full_name: Algebra.EssFiniteType.comp_iff
code: lemma EssFiniteType.comp_iff [EssFiniteType R S] :
    EssFiniteType R T ↔ EssFiniteType S T 
goal: Algebra.EssFiniteType R T ↔ Algebra.EssFiniteType S T

full_name: Algebra.EssFiniteType.algHom_ext
code: lemma EssFiniteType.algHom_ext [EssFiniteType R S]
    (f g : S →ₐ[R] T) (H : ∀ s ∈ finset R S, f s = g s) : f = g 
goal: f = g