File: Mathlib/RingTheory/Unramified/Basic.lean

full_name: Algebra.formallyUnramified_iff
code: /-- An `R`-algebra `A` is formally unramified if for every `R`-algebra, every square-zero ideal
`I : Ideal B` and `f : A →ₐ[R] B ⧸ I`, there exists at most one lift `A →ₐ[R] B`.

See <https://stacks.math.columbia.edu/tag/00UM>. -/
@[mk_iff]
class FormallyUnramified : Prop where
  comp_injective :
    ∀ ⦃B : Type u⦄ [CommRing B],
      ∀ [Algebra R B] (I : Ideal B) (_ : I ^ 2 = ⊥),
        Function.Injective ((Ideal.Quotient.mkₐ R I).comp : (A →ₐ[R] B) → A →ₐ[R] B ⧸ I)
goal: Algebra.FormallyUnramified R A ↔
  ∀ ⦃B : Type u⦄ [inst : CommRing B] [inst_1 : Algebra R B] (I : Ideal B),
    I ^ 2 = ⊥ → Function.Injective (Ideal.Quotient.mkₐ R I).comp

full_name: Algebra.FormallyUnramified.comp_injective
code: /-- An `R`-algebra `A` is formally unramified if for every `R`-algebra, every square-zero ideal
`I : Ideal B` and `f : A →ₐ[R] B ⧸ I`, there exists at most one lift `A →ₐ[R] B`.

See <https://stacks.math.columbia.edu/tag/00UM>. -/
@[mk_iff]
class FormallyUnramified : Prop where
  comp_injective :
    ∀ ⦃B : Type u⦄ [CommRing B],
      ∀ [Algebra R B] (I : Ideal B) (_ : I ^ 2 = ⊥),
        Function.Injective ((Ideal.Quotient.mkₐ R I).comp : (A →ₐ[R] B) → A →ₐ[R] B ⧸ I)
goal: I ^ 2 = ⊥ → Function.Injective (Ideal.Quotient.mkₐ R I).comp

full_name: Algebra.FormallyUnramified
code: /-- An `R`-algebra `A` is formally unramified if for every `R`-algebra, every square-zero ideal
`I : Ideal B` and `f : A →ₐ[R] B ⧸ I`, there exists at most one lift `A →ₐ[R] B`.

See <https://stacks.math.columbia.edu/tag/00UM>. -/
@[mk_iff]
class FormallyUnramified : Prop where
  comp_injective :
    ∀ ⦃B : Type u⦄ [CommRing B],
      ∀ [Algebra R B] (I : Ideal B) (_ : I ^ 2 = ⊥),
        Function.Injective ((Ideal.Quotient.mkₐ R I).comp : (A →ₐ[R] B) → A →ₐ[R] B ⧸ I)
goal: Prop

full_name: Algebra.FormallyUnramified.lift_unique
code: theorem lift_unique {B : Type u} [CommRing B] [_RB : Algebra R B]
    [FormallyUnramified R A] (I : Ideal B) (hI : IsNilpotent I) (g₁ g₂ : A →ₐ[R] B)
    (h : (Ideal.Quotient.mkₐ R I).comp g₁ = (Ideal.Quotient.mkₐ R I).comp g₂) : g₁ = g₂ 
goal: g₁ = g₂

full_name: Algebra.FormallyUnramified.ext
code: theorem ext [FormallyUnramified R A] (hI : IsNilpotent I) {g₁ g₂ : A →ₐ[R] B}
    (H : ∀ x, Ideal.Quotient.mk I (g₁ x) = Ideal.Quotient.mk I (g₂ x)) : g₁ = g₂ 
goal: g₁ = g₂

full_name: Algebra.FormallyUnramified.lift_unique_of_ringHom
code: theorem lift_unique_of_ringHom [FormallyUnramified R A] {C : Type u} [CommRing C]
    (f : B →+* C) (hf : IsNilpotent <| RingHom.ker f) (g₁ g₂ : A →ₐ[R] B)
    (h : f.comp ↑g₁ = f.comp (g₂ : A →+* B)) : g₁ = g₂ 
goal: g₁ = g₂

full_name: Algebra.FormallyUnramified.ext'
code: theorem ext' [FormallyUnramified R A] {C : Type u} [CommRing C] (f : B →+* C)
    (hf : IsNilpotent <| RingHom.ker f) (g₁ g₂ : A →ₐ[R] B) (h : ∀ x, f (g₁ x) = f (g₂ x)) :
    g₁ = g₂ 
goal: g₁ = g₂

full_name: Algebra.FormallyUnramified.lift_unique'
code: theorem lift_unique' [FormallyUnramified R A] {C : Type u} [CommRing C]
    [Algebra R C] (f : B →ₐ[R] C) (hf : IsNilpotent <| RingHom.ker (f : B →+* C))
    (g₁ g₂ : A →ₐ[R] B) (h : f.comp g₁ = f.comp g₂) : g₁ = g₂ 
goal: g₁ = g₂

full_name: Algebra.FormallyUnramified.of_equiv
code: theorem of_equiv [FormallyUnramified R A] (e : A ≃ₐ[R] B) :
    FormallyUnramified R B 
goal: Algebra.FormallyUnramified R B

full_name: Algebra.FormallyUnramified.comp
code: theorem comp [FormallyUnramified R A] [FormallyUnramified A B] :
    FormallyUnramified R B 
goal: Algebra.FormallyUnramified R B

full_name: Algebra.FormallyUnramified.of_comp
code: theorem of_comp [FormallyUnramified R B] : FormallyUnramified A B 
goal: Algebra.FormallyUnramified A B

full_name: Algebra.FormallyUnramified.base_change
code: instance base_change [FormallyUnramified R A] :
    FormallyUnramified B (B ⊗[R] A) 
goal: Algebra.FormallyUnramified B (B ⊗[R] A)

full_name: Algebra.FormallyUnramified.of_isLocalization
code: /-- This holds in general for epimorphisms. -/
theorem of_isLocalization : FormallyUnramified R Rₘ 
goal: Algebra.FormallyUnramified R Rₘ

full_name: Algebra.FormallyUnramified.localization_base
code: /-- This actually does not need the localization instance, and is stated here again for
consistency. See `Algebra.FormallyUnramified.of_comp` instead.

 The intended use is for copying proofs between `Formally{Unramified, Smooth, Etale}`
 without the need to change anything (including removing redundant arguments). -/
-- @[nolint unusedArguments] -- Porting note: removed
theorem localization_base [FormallyUnramified R Sₘ] : FormallyUnramified Rₘ Sₘ 
goal: Algebra.FormallyUnramified Rₘ Sₘ

full_name: Algebra.FormallyUnramified.localization_map
code: theorem localization_map [FormallyUnramified R S] :
    FormallyUnramified Rₘ Sₘ 
goal: Algebra.FormallyUnramified Rₘ Sₘ

full_name: Algebra.Unramified.finiteType
code: /-- An `R`-algebra `A` is unramified if it is formally unramified and of finite type.

Note that the Stacks project has a different definition of unramified, and tag
<https://stacks.math.columbia.edu/tag/00UU> shows that their definition is the
same as this one.
-/
class Unramified : Prop where
  formallyUnramified : FormallyUnramified R A := by infer_instance
  finiteType : FiniteType R A := by infer_instance
goal: Algebra.FiniteType R A

full_name: Algebra.Unramified
code: /-- An `R`-algebra `A` is unramified if it is formally unramified and of finite type.

Note that the Stacks project has a different definition of unramified, and tag
<https://stacks.math.columbia.edu/tag/00UU> shows that their definition is the
same as this one.
-/
class Unramified : Prop where
  formallyUnramified : FormallyUnramified R A := by infer_instance
  finiteType : FiniteType R A := by infer_instance
goal: Prop

full_name: Algebra.Unramified.formallyUnramified
code: /-- An `R`-algebra `A` is unramified if it is formally unramified and of finite type.

Note that the Stacks project has a different definition of unramified, and tag
<https://stacks.math.columbia.edu/tag/00UU> shows that their definition is the
same as this one.
-/
class Unramified : Prop where
  formallyUnramified : FormallyUnramified R A := by infer_instance
  finiteType : FiniteType R A := by infer_instance
goal: Algebra.FormallyUnramified R A

full_name: Algebra.Unramified.of_equiv
code: /-- Being unramified is transported via algebra isomorphisms. -/
theorem of_equiv [Unramified R A] (e : A ≃ₐ[R] B) : Unramified R B 
goal: Algebra.Unramified R B

full_name: Algebra.Unramified.of_isLocalization_Away
code: /-- Localization at an element is unramified. -/
theorem of_isLocalization_Away (r : R) [IsLocalization.Away r A] : Unramified R A 
goal: Algebra.Unramified R A

full_name: Algebra.Unramified.comp
code: /-- Unramified is stable under composition. -/
theorem comp [Algebra A B] [IsScalarTower R A B] [Unramified R A] [Unramified A B] :
    Unramified R B 
goal: Algebra.Unramified R B

full_name: Algebra.Unramified.baseChange
code: /-- Unramified is stable under base change. -/
instance baseChange [Unramified R A] : Unramified B (B ⊗[R] A) 
goal: Algebra.Unramified B (B ⊗[R] A)