Theorem: RingHom.Finite.of_comp_finite
File: Mathlib/RingTheory/Finiteness.lean

Proof steps:
state_before: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
g : B →+* C
h : (g.comp f).Finite
⊢ g.Finite
state_after: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
g : B →+* C
h : (g.comp f).Finite
this : Algebra A B := f.toAlgebra
⊢ g.Finite
tactic: letI := f.toAlgebra
state_before: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
g : B →+* C
h : (g.comp f).Finite
this : Algebra A B := f.toAlgebra
⊢ g.Finite
state_after: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
g : B →+* C
h : (g.comp f).Finite
this✝ : Algebra A B := f.toAlgebra
this : Algebra B C := g.toAlgebra
⊢ g.Finite
tactic: letI := g.toAlgebra
state_before: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
g : B →+* C
h : (g.comp f).Finite
this✝ : Algebra A B := f.toAlgebra
this : Algebra B C := g.toAlgebra
⊢ g.Finite
state_after: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
g : B →+* C
h : (g.comp f).Finite
this✝¹ : Algebra A B := f.toAlgebra
this✝ : Algebra B C := g.toAlgebra
this : Algebra A C := (g.comp f).toAlgebra
⊢ g.Finite
tactic: letI := (g.comp f).toAlgebra
state_before: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
g : B →+* C
h : (g.comp f).Finite
this✝¹ : Algebra A B := f.toAlgebra
this✝ : Algebra B C := g.toAlgebra
this : Algebra A C := (g.comp f).toAlgebra
⊢ g.Finite
state_after: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
g : B →+* C
h : (g.comp f).Finite
this✝² : Algebra A B := f.toAlgebra
this✝¹ : Algebra B C := g.toAlgebra
this✝ : Algebra A C := (g.comp f).toAlgebra
this : IsScalarTower A B C := RestrictScalars.isScalarTower A B C
⊢ g.Finite
tactic: letI : IsScalarTower A B C := RestrictScalars.isScalarTower A B C
state_before: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
g : B →+* C
h : (g.comp f).Finite
this✝² : Algebra A B := f.toAlgebra
this✝¹ : Algebra B C := g.toAlgebra
this✝ : Algebra A C := (g.comp f).toAlgebra
this : IsScalarTower A B C := RestrictScalars.isScalarTower A B C
⊢ g.Finite
state_after: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
g : B →+* C
h : (g.comp f).Finite
this✝³ : Algebra A B := f.toAlgebra
this✝² : Algebra B C := g.toAlgebra
this✝¹ : Algebra A C := (g.comp f).toAlgebra
this✝ : IsScalarTower A B C := RestrictScalars.isScalarTower A B C
this : Module.Finite A C := h
⊢ g.Finite
tactic: letI : Module.Finite A C := h
state_before: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
g : B →+* C
h : (g.comp f).Finite
this✝³ : Algebra A B := f.toAlgebra
this✝² : Algebra B C := g.toAlgebra
this✝¹ : Algebra A C := (g.comp f).toAlgebra
this✝ : IsScalarTower A B C := RestrictScalars.isScalarTower A B C
this : Module.Finite A C := h
⊢ g.Finite
state_after: no goals
tactic: exact Module.Finite.of_restrictScalars_finite A B C