Theorem: Algebra.IsIntegral.finite
File: Mathlib/RingTheory/IntegralClosure.lean

tactic: have :=
  h.to_finite
    (by
      rw [RingHom.FiniteType]
      convert h'
      refine IsScalarTower.Algebra.ext (algebraMap R A).toAlgebra _ fun r x => ?_
      exact (Algebra.smul_def _ _).symm)
state_before: R : Type u_1
A : Type u_2
B : Type ?u.621954
S : Type ?u.621957
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
h : Algebra.IsIntegral R A
h' : FiniteType R A
⊢ Module.Finite R A

tactic: rw [RingHom.Finite] at this
state_before: R : Type u_1
A : Type u_2
B : Type ?u.621954
S : Type ?u.621957
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
h : Algebra.IsIntegral R A
h' : FiniteType R A
this : RingHom.Finite (algebraMap R A)
⊢ Module.Finite R A

tactic: convert this
state_before: R : Type u_1
A : Type u_2
B : Type ?u.621954
S : Type ?u.621957
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
h : Algebra.IsIntegral R A
h' : FiniteType R A
this : Module.Finite R A
⊢ Module.Finite R A

tactic: ext
state_before: case h.e'_5.h.e'_5
R : Type u_1
A : Type u_2
B : Type ?u.621954
S : Type ?u.621957
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
h : Algebra.IsIntegral R A
h' : FiniteType R A
this : Module.Finite R A
⊢ inst✝¹ = RingHom.toAlgebra (algebraMap R A)

tactic: exact Algebra.smul_def _ _
state_before: case h.e'_5.h.e'_5.h
R : Type u_1
A : Type u_2
B : Type ?u.621954
S : Type ?u.621957
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
h : Algebra.IsIntegral R A
h' : FiniteType R A
this : Module.Finite R A
r✝ : R
x✝ : A
⊢ (let_fun I := inst✝¹;
    r✝ • x✝) =
    r✝ • x✝

tactic: rw [RingHom.FiniteType]
state_before: R : Type u_1
A : Type u_2
B : Type ?u.621954
S : Type ?u.621957
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
h : Algebra.IsIntegral R A
h' : FiniteType R A
⊢ RingHom.FiniteType (algebraMap R A)

tactic: convert h'
state_before: R : Type u_1
A : Type u_2
B : Type ?u.621954
S : Type ?u.621957
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
h : Algebra.IsIntegral R A
h' : FiniteType R A
⊢ FiniteType R A

tactic: refine IsScalarTower.Algebra.ext (algebraMap R A).toAlgebra _ fun r x => ?_
state_before: case h.e'_5
R : Type u_1
A : Type u_2
B : Type ?u.621954
S : Type ?u.621957
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
h : Algebra.IsIntegral R A
h' : FiniteType R A
⊢ RingHom.toAlgebra (algebraMap R A) = inst✝¹

tactic: exact (Algebra.smul_def _ _).symm
state_before: case h.e'_5
R : Type u_1
A : Type u_2
B : Type ?u.621954
S : Type ?u.621957
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
h : Algebra.IsIntegral R A
h' : FiniteType R A
r : R
x : A
⊢ (let_fun I := RingHom.toAlgebra (algebraMap R A);
    r • x) =
    r • x