Theorem: RingHom.finite_stableUnderBaseChange
File: Mathlib/RingTheory/RingHom/Finite.lean

tactic: refine StableUnderBaseChange.mk _ finite_respectsIso ?_
state_before: ⊢ StableUnderBaseChange @Finite
state_after: ⊢ ∀ ⦃R S T : Type u_1⦄ [inst : CommRing R] [inst_1 : CommRing S] [inst_2 : CommRing T] [inst_3 : Algebra R S]
    [inst_4 : Algebra R T], (algebraMap R T).Finite → includeLeftRingHom.Finite

tactic: classical
introv h
replace h : Module.Finite R T := by
  rw [RingHom.Finite] at h; convert h; ext; simp_rw [Algebra.smul_def]; rfl
suffices Module.Finite S (S ⊗[R] T) by
  rw [RingHom.Finite]; convert this; congr; ext; simp_rw [Algebra.smul_def]; rfl
exact inferInstance
state_before: ⊢ ∀ ⦃R S T : Type u_1⦄ [inst : CommRing R] [inst_1 : CommRing S] [inst_2 : CommRing T] [inst_3 : Algebra R S]
    [inst_4 : Algebra R T], (algebraMap R T).Finite → includeLeftRingHom.Finite
state_after: no goals

tactic: introv h
state_before: ⊢ ∀ ⦃R S T : Type u_1⦄ [inst : CommRing R] [inst_1 : CommRing S] [inst_2 : CommRing T] [inst_3 : Algebra R S]
    [inst_4 : Algebra R T], (algebraMap R T).Finite → includeLeftRingHom.Finite
state_after: R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : (algebraMap R T).Finite
⊢ includeLeftRingHom.Finite

tactic: replace h : Module.Finite R T := by
  rw [RingHom.Finite] at h; convert h; ext; simp_rw [Algebra.smul_def]; rfl
state_before: R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : (algebraMap R T).Finite
⊢ includeLeftRingHom.Finite
state_after: R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
⊢ includeLeftRingHom.Finite

tactic: suffices Module.Finite S (S ⊗[R] T) by
  rw [RingHom.Finite]; convert this; congr; ext; simp_rw [Algebra.smul_def]; rfl
state_before: R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
⊢ includeLeftRingHom.Finite
state_after: R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
⊢ Module.Finite S (S ⊗[R] T)

tactic: exact inferInstance
state_before: R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
⊢ Module.Finite S (S ⊗[R] T)
state_after: no goals

tactic: rw [RingHom.Finite] at h
state_before: R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : (algebraMap R T).Finite
⊢ Module.Finite R T
state_after: R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
⊢ Module.Finite R T

tactic: convert h
state_before: R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
⊢ Module.Finite R T
state_after: case h.e'_5.h.e'_5
R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
⊢ inst✝ = (algebraMap R T).toAlgebra

tactic: ext
state_before: case h.e'_5.h.e'_5
R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
⊢ inst✝ = (algebraMap R T).toAlgebra
state_after: case h.e'_5.h.e'_5.h
R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
r✝ : R
x✝ : T
⊢ (let_fun I := inst✝;
    r✝ • x✝) =
    r✝ • x✝

tactic: simp_rw [Algebra.smul_def]
state_before: case h.e'_5.h.e'_5.h
R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
r✝ : R
x✝ : T
⊢ (let_fun I := inst✝;
    r✝ • x✝) =
    r✝ • x✝
state_after: case h.e'_5.h.e'_5.h
R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
r✝ : R
x✝ : T
⊢ (algebraMap R T) r✝ * x✝ = (algebraMap R T) r✝ * x✝

tactic: rfl
state_before: case h.e'_5.h.e'_5.h
R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
r✝ : R
x✝ : T
⊢ (algebraMap R T) r✝ * x✝ = (algebraMap R T) r✝ * x✝
state_after: no goals

tactic: rw [RingHom.Finite]
state_before: R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
this : Module.Finite S (S ⊗[R] T)
⊢ includeLeftRingHom.Finite
state_after: R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
this : Module.Finite S (S ⊗[R] T)
⊢ Module.Finite S (S ⊗[R] T)

tactic: convert this
state_before: R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
this : Module.Finite S (S ⊗[R] T)
⊢ Module.Finite S (S ⊗[R] T)
state_after: case h.e'_5.h
R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
this : Module.Finite S (S ⊗[R] T)
e_4✝ : NonUnitalNonAssocSemiring.toAddCommMonoid = addCommMonoid
⊢ Algebra.toModule = leftModule

tactic: congr
state_before: case h.e'_5.h
R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
this : Module.Finite S (S ⊗[R] T)
e_4✝ : NonUnitalNonAssocSemiring.toAddCommMonoid = addCommMonoid
⊢ Algebra.toModule = leftModule
state_after: case h.e'_5.h.h.e_5.h
R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
this : Module.Finite S (S ⊗[R] T)
e_4✝ : NonUnitalNonAssocSemiring.toAddCommMonoid = addCommMonoid
⊢ includeLeftRingHom.toAlgebra = leftAlgebra

tactic: ext
state_before: case h.e'_5.h.h.e_5.h
R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
this : Module.Finite S (S ⊗[R] T)
e_4✝ : NonUnitalNonAssocSemiring.toAddCommMonoid = addCommMonoid
⊢ includeLeftRingHom.toAlgebra = leftAlgebra
state_after: case h.e'_5.h.h.e_5.h.h
R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
this : Module.Finite S (S ⊗[R] T)
e_4✝ : NonUnitalNonAssocSemiring.toAddCommMonoid = addCommMonoid
r✝ : S
x✝ : S ⊗[R] T
⊢ (let_fun I := includeLeftRingHom.toAlgebra;
    r✝ • x✝) =
    r✝ • x✝

tactic: simp_rw [Algebra.smul_def]
state_before: case h.e'_5.h.h.e_5.h.h
R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
this : Module.Finite S (S ⊗[R] T)
e_4✝ : NonUnitalNonAssocSemiring.toAddCommMonoid = addCommMonoid
r✝ : S
x✝ : S ⊗[R] T
⊢ (let_fun I := includeLeftRingHom.toAlgebra;
    r✝ • x✝) =
    r✝ • x✝
state_after: case h.e'_5.h.h.e_5.h.h
R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
this : Module.Finite S (S ⊗[R] T)
e_4✝ : NonUnitalNonAssocSemiring.toAddCommMonoid = addCommMonoid
r✝ : S
x✝ : S ⊗[R] T
⊢ (algebraMap S (S ⊗[R] T)) r✝ * x✝ = (algebraMap S (S ⊗[R] T)) r✝ * x✝

tactic: rfl
state_before: case h.e'_5.h.h.e_5.h.h
R S T : Type u_1
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing T
inst✝¹ : Algebra R S
inst✝ : Algebra R T
h : Module.Finite R T
this : Module.Finite S (S ⊗[R] T)
e_4✝ : NonUnitalNonAssocSemiring.toAddCommMonoid = addCommMonoid
r✝ : S
x✝ : S ⊗[R] T
⊢ (algebraMap S (S ⊗[R] T)) r✝ * x✝ = (algebraMap S (S ⊗[R] T)) r✝ * x✝
state_after: no goals