Theorem: RingHom.Finite.comp
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
g : B →+* C
f : A →+* B
hg : g.Finite
hf : f.Finite
⊢ (g.comp f).Finite
state_after: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
g : B →+* C
f : A →+* B
hg : g.Finite
hf : f.Finite
this : Algebra A B := f.toAlgebra
⊢ (g.comp f).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
g : B →+* C
f : A →+* B
hg : g.Finite
hf : f.Finite
this : Algebra A B := f.toAlgebra
⊢ (g.comp f).Finite
state_after: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
g : B →+* C
f : A →+* B
hg : g.Finite
hf : f.Finite
this✝ : Algebra A B := f.toAlgebra
this : Algebra B C := g.toAlgebra
⊢ (g.comp f).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
g : B →+* C
f : A →+* B
hg : g.Finite
hf : f.Finite
this✝ : Algebra A B := f.toAlgebra
this : Algebra B C := g.toAlgebra
⊢ (g.comp f).Finite
state_after: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
g : B →+* C
f : A →+* B
hg : g.Finite
hf : f.Finite
this✝¹ : Algebra A B := f.toAlgebra
this✝ : Algebra B C := g.toAlgebra
this : Algebra A C := (g.comp f).toAlgebra
⊢ (g.comp f).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
g : B →+* C
f : A →+* B
hg : g.Finite
hf : f.Finite
this✝¹ : Algebra A B := f.toAlgebra
this✝ : Algebra B C := g.toAlgebra
this : Algebra A C := (g.comp f).toAlgebra
⊢ (g.comp f).Finite
state_after: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
g : B →+* C
f : A →+* B
hg : g.Finite
hf : 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.comp f).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
g : B →+* C
f : A →+* B
hg : g.Finite
hf : 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.comp f).Finite
state_after: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
g : B →+* C
f : A →+* B
hg : g.Finite
hf : 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 B := hf
⊢ (g.comp f).Finite
tactic: letI : Module.Finite A B := hf
state_before: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
g : B →+* C
f : A →+* B
hg : g.Finite
hf : 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 B := hf
⊢ (g.comp f).Finite
state_after: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
g : B →+* C
f : A →+* B
hg : g.Finite
hf : 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 B := hf
this : Module.Finite B C := hg
⊢ (g.comp f).Finite
tactic: letI : Module.Finite B C := hg
state_before: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
g : B →+* C
f : A →+* B
hg : g.Finite
hf : 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 B := hf
this : Module.Finite B C := hg
⊢ (g.comp f).Finite
state_after: no goals
tactic: exact Module.Finite.trans B C