Theorem: Algebra.FormallySmooth.of_isLocalization
File: Mathlib/RingTheory/Smooth/Basic.lean

tactic: constructor
state_before: R S Rₘ Sₘ : Type u
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : CommRing Rₘ
inst✝⁹ : CommRing Sₘ
M : Submonoid R
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R Sₘ
inst✝⁶ : Algebra S Sₘ
inst✝⁵ : Algebra R Rₘ
inst✝⁴ : Algebra Rₘ Sₘ
inst✝³ : IsScalarTower R Rₘ Sₘ
inst✝² : IsScalarTower R S Sₘ
inst✝¹ : IsLocalization M Rₘ
inst✝ : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
⊢ FormallySmooth R Rₘ
state_after: case comp_surjective
R S Rₘ Sₘ : Type u
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : CommRing Rₘ
inst✝⁹ : CommRing Sₘ
M : Submonoid R
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R Sₘ
inst✝⁶ : Algebra S Sₘ
inst✝⁵ : Algebra R Rₘ
inst✝⁴ : Algebra Rₘ Sₘ
inst✝³ : IsScalarTower R Rₘ Sₘ
inst✝² : IsScalarTower R S Sₘ
inst✝¹ : IsLocalization M Rₘ
inst✝ : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
⊢ ∀ ⦃B : Type u⦄ [inst : CommRing B] [inst_1 : Algebra R B] (I : Ideal B),
    I ^ 2 = ⊥ → Function.Surjective (Ideal.Quotient.mkₐ R I).comp

tactic: intro Q _ _ I e f
state_before: case comp_surjective
R S Rₘ Sₘ : Type u
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : CommRing Rₘ
inst✝⁹ : CommRing Sₘ
M : Submonoid R
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R Sₘ
inst✝⁶ : Algebra S Sₘ
inst✝⁵ : Algebra R Rₘ
inst✝⁴ : Algebra Rₘ Sₘ
inst✝³ : IsScalarTower R Rₘ Sₘ
inst✝² : IsScalarTower R S Sₘ
inst✝¹ : IsLocalization M Rₘ
inst✝ : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
⊢ ∀ ⦃B : Type u⦄ [inst : CommRing B] [inst_1 : Algebra R B] (I : Ideal B),
    I ^ 2 = ⊥ → Function.Surjective (Ideal.Quotient.mkₐ R I).comp
state_after: case comp_surjective
R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
⊢ ∃ a, (Ideal.Quotient.mkₐ R I).comp a = f

tactic: have : ∀ x : M, IsUnit (algebraMap R Q x) := by
  intro x
  apply (IsNilpotent.isUnit_quotient_mk_iff ⟨2, e⟩).mp
  convert (IsLocalization.map_units Rₘ x).map f
  simp only [Ideal.Quotient.mk_algebraMap, AlgHom.commutes]
state_before: case comp_surjective
R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
⊢ ∃ a, (Ideal.Quotient.mkₐ R I).comp a = f
state_after: case comp_surjective
R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
this : ∀ (x : ↥M), IsUnit ((algebraMap R Q) ↑x)
⊢ ∃ a, (Ideal.Quotient.mkₐ R I).comp a = f

tactic: let this : Rₘ →ₐ[R] Q :=
  { IsLocalization.lift this with commutes' := IsLocalization.lift_eq this }
state_before: case comp_surjective
R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
this : ∀ (x : ↥M), IsUnit ((algebraMap R Q) ↑x)
⊢ ∃ a, (Ideal.Quotient.mkₐ R I).comp a = f
state_after: case comp_surjective
R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
this✝ : ∀ (x : ↥M), IsUnit ((algebraMap R Q) ↑x)
this : Rₘ →ₐ[R] Q :=
  let __src := IsLocalization.lift this✝;
  { toRingHom := __src, commutes' := ⋯ }
⊢ ∃ a, (Ideal.Quotient.mkₐ R I).comp a = f

tactic: use this
state_before: case comp_surjective
R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
this✝ : ∀ (x : ↥M), IsUnit ((algebraMap R Q) ↑x)
this : Rₘ →ₐ[R] Q :=
  let __src := IsLocalization.lift this✝;
  { toRingHom := __src, commutes' := ⋯ }
⊢ ∃ a, (Ideal.Quotient.mkₐ R I).comp a = f
state_after: case h
R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
this✝ : ∀ (x : ↥M), IsUnit ((algebraMap R Q) ↑x)
this : Rₘ →ₐ[R] Q :=
  let __src := IsLocalization.lift this✝;
  { toRingHom := __src, commutes' := ⋯ }
⊢ (Ideal.Quotient.mkₐ R I).comp this = f

tactic: apply AlgHom.coe_ringHom_injective
state_before: case h
R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
this✝ : ∀ (x : ↥M), IsUnit ((algebraMap R Q) ↑x)
this : Rₘ →ₐ[R] Q :=
  let __src := IsLocalization.lift this✝;
  { toRingHom := __src, commutes' := ⋯ }
⊢ (Ideal.Quotient.mkₐ R I).comp this = f
state_after: case h.a
R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
this✝ : ∀ (x : ↥M), IsUnit ((algebraMap R Q) ↑x)
this : Rₘ →ₐ[R] Q :=
  let __src := IsLocalization.lift this✝;
  { toRingHom := __src, commutes' := ⋯ }
⊢ ↑((Ideal.Quotient.mkₐ R I).comp this) = ↑f

tactic: refine IsLocalization.ringHom_ext M ?_
state_before: case h.a
R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
this✝ : ∀ (x : ↥M), IsUnit ((algebraMap R Q) ↑x)
this : Rₘ →ₐ[R] Q :=
  let __src := IsLocalization.lift this✝;
  { toRingHom := __src, commutes' := ⋯ }
⊢ ↑((Ideal.Quotient.mkₐ R I).comp this) = ↑f
state_after: case h.a
R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
this✝ : ∀ (x : ↥M), IsUnit ((algebraMap R Q) ↑x)
this : Rₘ →ₐ[R] Q :=
  let __src := IsLocalization.lift this✝;
  { toRingHom := __src, commutes' := ⋯ }
⊢ (↑((Ideal.Quotient.mkₐ R I).comp this)).comp (algebraMap R Rₘ) = (↑f).comp (algebraMap R Rₘ)

tactic: ext
state_before: case h.a
R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
this✝ : ∀ (x : ↥M), IsUnit ((algebraMap R Q) ↑x)
this : Rₘ →ₐ[R] Q :=
  let __src := IsLocalization.lift this✝;
  { toRingHom := __src, commutes' := ⋯ }
⊢ (↑((Ideal.Quotient.mkₐ R I).comp this)).comp (algebraMap R Rₘ) = (↑f).comp (algebraMap R Rₘ)
state_after: case h.a.a
R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
this✝ : ∀ (x : ↥M), IsUnit ((algebraMap R Q) ↑x)
this : Rₘ →ₐ[R] Q :=
  let __src := IsLocalization.lift this✝;
  { toRingHom := __src, commutes' := ⋯ }
x✝ : R
⊢ ((↑((Ideal.Quotient.mkₐ R I).comp this)).comp (algebraMap R Rₘ)) x✝ = ((↑f).comp (algebraMap R Rₘ)) x✝

tactic: simp
state_before: case h.a.a
R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
this✝ : ∀ (x : ↥M), IsUnit ((algebraMap R Q) ↑x)
this : Rₘ →ₐ[R] Q :=
  let __src := IsLocalization.lift this✝;
  { toRingHom := __src, commutes' := ⋯ }
x✝ : R
⊢ ((↑((Ideal.Quotient.mkₐ R I).comp this)).comp (algebraMap R Rₘ)) x✝ = ((↑f).comp (algebraMap R Rₘ)) x✝
state_after: no goals

tactic: intro x
state_before: R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
⊢ ∀ (x : ↥M), IsUnit ((algebraMap R Q) ↑x)
state_after: R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
x : ↥M
⊢ IsUnit ((algebraMap R Q) ↑x)

tactic: apply (IsNilpotent.isUnit_quotient_mk_iff ⟨2, e⟩).mp
state_before: R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
x : ↥M
⊢ IsUnit ((algebraMap R Q) ↑x)
state_after: R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
x : ↥M
⊢ IsUnit ((Ideal.Quotient.mk I) ((algebraMap R Q) ↑x))

tactic: convert (IsLocalization.map_units Rₘ x).map f
state_before: R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
x : ↥M
⊢ IsUnit ((Ideal.Quotient.mk I) ((algebraMap R Q) ↑x))
state_after: case h.e'_3
R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
x : ↥M
⊢ (Ideal.Quotient.mk I) ((algebraMap R Q) ↑x) = f ((algebraMap R Rₘ) ↑x)

tactic: simp only [Ideal.Quotient.mk_algebraMap, AlgHom.commutes]
state_before: case h.e'_3
R S Rₘ Sₘ : Type u
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing Rₘ
inst✝¹¹ : CommRing Sₘ
M : Submonoid R
inst✝¹⁰ : Algebra R S
inst✝⁹ : Algebra R Sₘ
inst✝⁸ : Algebra S Sₘ
inst✝⁷ : Algebra R Rₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : IsScalarTower R Rₘ Sₘ
inst✝⁴ : IsScalarTower R S Sₘ
inst✝³ : IsLocalization M Rₘ
inst✝² : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
Q : Type u
inst✝¹ : CommRing Q
inst✝ : Algebra R Q
I : Ideal Q
e : I ^ 2 = ⊥
f : Rₘ →ₐ[R] Q ⧸ I
x : ↥M
⊢ (Ideal.Quotient.mk I) ((algebraMap R Q) ↑x) = f ((algebraMap R Rₘ) ↑x)
state_after: no goals