Theorem: IsIntegralClosure.isFractionRing_of_algebraic
File: Mathlib/RingTheory/Localization/Integral.lean

tactic: rw [IsScalarTower.algebraMap_apply A C L, h, RingHom.map_zero]
state_before: R : Type ?u.445070
inst✝¹⁶ : CommRing R
M : Submonoid R
S : Type ?u.445277
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
P : Type ?u.445533
inst✝¹³ : CommRing P
A : Type u_1
K : Type ?u.445542
inst✝¹² : CommRing A
inst✝¹¹ : IsDomain A
L : Type u_2
inst✝¹⁰ : Field K
inst✝⁹ : Field L
inst✝⁸ : Algebra A K
inst✝⁷ : Algebra A L
inst✝⁶ : IsFractionRing A K
C : Type u_3
inst✝⁵ : CommRing C
inst✝⁴ : IsDomain C
inst✝³ : Algebra C L
inst✝² : IsIntegralClosure C A L
inst✝¹ : Algebra A C
inst✝ : IsScalarTower A C L
alg : Algebra.IsAlgebraic A L
inj : ∀ (x : A), ↑(algebraMap A L) x = 0 → x = 0
z : L
x : { x // x ∈ integralClosure A L }
y : A
hy : y ≠ 0
hxy : z * ↑(algebraMap A L) y = ↑x
h : ↑(algebraMap A C) y = 0
⊢ ↑(algebraMap A L) y = 0

tactic: simp only
state_before: R : Type ?u.445070
inst✝¹⁶ : CommRing R
M : Submonoid R
S : Type ?u.445277
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
P : Type ?u.445533
inst✝¹³ : CommRing P
A : Type u_1
K : Type ?u.445542
inst✝¹² : CommRing A
inst✝¹¹ : IsDomain A
L : Type u_2
inst✝¹⁰ : Field K
inst✝⁹ : Field L
inst✝⁸ : Algebra A K
inst✝⁷ : Algebra A L
inst✝⁶ : IsFractionRing A K
C : Type u_3
inst✝⁵ : CommRing C
inst✝⁴ : IsDomain C
inst✝³ : Algebra C L
inst✝² : IsIntegralClosure C A L
inst✝¹ : Algebra A C
inst✝ : IsScalarTower A C L
alg : Algebra.IsAlgebraic A L
inj : ∀ (x : A), ↑(algebraMap A L) x = 0 → x = 0
z : L
x : { x // x ∈ integralClosure A L }
y : A
hy : y ≠ 0
hxy : z * ↑(algebraMap A L) y = ↑x
⊢ z *
      ↑(algebraMap C L)
        ↑(mk' C ↑x (_ : ↑x ∈ integralClosure A L),
              { val := ↑(algebraMap A C) y, property := (_ : ↑(algebraMap A C) y ∈ nonZeroDivisors C) }).snd =
    ↑(algebraMap C L)
      (mk' C ↑x (_ : ↑x ∈ integralClosure A L),
          { val := ↑(algebraMap A C) y, property := (_ : ↑(algebraMap A C) y ∈ nonZeroDivisors C) }).fst

tactic: rw [algebraMap_mk', ← IsScalarTower.algebraMap_apply A C L, hxy]
state_before: R : Type ?u.445070
inst✝¹⁶ : CommRing R
M : Submonoid R
S : Type ?u.445277
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
P : Type ?u.445533
inst✝¹³ : CommRing P
A : Type u_1
K : Type ?u.445542
inst✝¹² : CommRing A
inst✝¹¹ : IsDomain A
L : Type u_2
inst✝¹⁰ : Field K
inst✝⁹ : Field L
inst✝⁸ : Algebra A K
inst✝⁷ : Algebra A L
inst✝⁶ : IsFractionRing A K
C : Type u_3
inst✝⁵ : CommRing C
inst✝⁴ : IsDomain C
inst✝³ : Algebra C L
inst✝² : IsIntegralClosure C A L
inst✝¹ : Algebra A C
inst✝ : IsScalarTower A C L
alg : Algebra.IsAlgebraic A L
inj : ∀ (x : A), ↑(algebraMap A L) x = 0 → x = 0
z : L
x : { x // x ∈ integralClosure A L }
y : A
hy : y ≠ 0
hxy : z * ↑(algebraMap A L) y = ↑x
⊢ z * ↑(algebraMap C L) (↑(algebraMap A C) y) = ↑(algebraMap C L) (mk' C ↑x (_ : ↑x ∈ integralClosure A L))

tactic: simpa using algebraMap_injective C A L h
state_before: R : Type ?u.445070
inst✝¹⁶ : CommRing R
M : Submonoid R
S : Type ?u.445277
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
P : Type ?u.445533
inst✝¹³ : CommRing P
A : Type u_1
K : Type ?u.445542
inst✝¹² : CommRing A
inst✝¹¹ : IsDomain A
L : Type u_2
inst✝¹⁰ : Field K
inst✝⁹ : Field L
inst✝⁸ : Algebra A K
inst✝⁷ : Algebra A L
inst✝⁶ : IsFractionRing A K
C : Type u_3
inst✝⁵ : CommRing C
inst✝⁴ : IsDomain C
inst✝³ : Algebra C L
inst✝² : IsIntegralClosure C A L
inst✝¹ : Algebra A C
inst✝ : IsScalarTower A C L
alg : Algebra.IsAlgebraic A L
inj : ∀ (x : A), ↑(algebraMap A L) x = 0 → x = 0
x y : C
h : ↑(algebraMap C L) x = ↑(algebraMap C L) y
⊢ ↑1 * x = ↑1 * y