-- Mathlib/RingTheory/Generators.lean
@[simp]
lemma Hom.algebraMap_toAlgHom (f : Hom P P') (x) : MvPolynomial.aeval P'.val (f.toAlgHom x) =
    algebraMap S S' (MvPolynomial.aeval P.val x)

Proof state:
R : Type u
S : Type v
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
P : Generators R S
R' : Type u_1
S' : Type u_2
inst✝⁷ : CommRing R'
inst✝⁶ : CommRing S'
inst✝⁵ : Algebra R' S'
P' : Generators R' S'
inst✝⁴ : Algebra R R'
inst✝³ : Algebra S S'
inst✝² : Algebra R S'
inst✝¹ : IsScalarTower R R' S'
inst✝ : IsScalarTower R S S'
f : P.Hom P'
x : P.Ring
⊢ (aeval P'.val) (f.toAlgHom x) = (algebraMap S S') ((aeval P.val) x)

Tactic:
suffices ((MvPolynomial.aeval P'.val).restrictScalars R).comp f.toAlgHom =
    (IsScalarTower.toAlgHom R S S').comp (MvPolynomial.aeval P.val) from
  DFunLike.congr_fun this x

Result:
R : Type u
S : Type v
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
P : Generators R S
R' : Type u_1
S' : Type u_2
inst✝⁷ : CommRing R'
inst✝⁶ : CommRing S'
inst✝⁵ : Algebra R' S'
P' : Generators R' S'
inst✝⁴ : Algebra R R'
inst✝³ : Algebra S S'
inst✝² : Algebra R S'
inst✝¹ : IsScalarTower R R' S'
inst✝ : IsScalarTower R S S'
f : P.Hom P'
x : P.Ring
⊢ (AlgHom.restrictScalars R (aeval P'.val)).comp f.toAlgHom = (IsScalarTower.toAlgHom R S S').comp (aeval P.val)

Proof state:
case hf
R : Type u
S : Type v
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
P : Generators R S
R' : Type u_1
S' : Type u_2
inst✝⁷ : CommRing R'
inst✝⁶ : CommRing S'
inst✝⁵ : Algebra R' S'
P' : Generators R' S'
inst✝⁴ : Algebra R R'
inst✝³ : Algebra S S'
inst✝² : Algebra R S'
inst✝¹ : IsScalarTower R R' S'
inst✝ : IsScalarTower R S S'
f : P.Hom P'
x : P.Ring
i : P.vars
⊢ ((AlgHom.restrictScalars R (aeval P'.val)).comp f.toAlgHom) (X i) =
    ((IsScalarTower.toAlgHom R S S').comp (aeval P.val)) (X i)

Tactic:
simp [Hom.toAlgHom]

Result:
no goals

Proof state:
case hf
R : Type u
S : Type v
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
P : Generators R S
R' : Type u_1
S' : Type u_2
inst✝⁷ : CommRing R'
inst✝⁶ : CommRing S'
inst✝⁵ : Algebra R' S'
P' : Generators R' S'
inst✝⁴ : Algebra R R'
inst✝³ : Algebra S S'
inst✝² : Algebra R S'
inst✝¹ : IsScalarTower R R' S'
inst✝ : IsScalarTower R S S'
f : P.Hom P'
x : P.Ring
⊢ ∀ (i : P.vars),
    ((AlgHom.restrictScalars R (aeval P'.val)).comp f.toAlgHom) (X i) =
      ((IsScalarTower.toAlgHom R S S').comp (aeval P.val)) (X i)

Tactic:
intro i

Result:
case hf
R : Type u
S : Type v
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
P : Generators R S
R' : Type u_1
S' : Type u_2
inst✝⁷ : CommRing R'
inst✝⁶ : CommRing S'
inst✝⁵ : Algebra R' S'
P' : Generators R' S'
inst✝⁴ : Algebra R R'
inst✝³ : Algebra S S'
inst✝² : Algebra R S'
inst✝¹ : IsScalarTower R R' S'
inst✝ : IsScalarTower R S S'
f : P.Hom P'
x : P.Ring
i : P.vars
⊢ ((AlgHom.restrictScalars R (aeval P'.val)).comp f.toAlgHom) (X i) =
    ((IsScalarTower.toAlgHom R S S').comp (aeval P.val)) (X i)

Proof state:
R : Type u
S : Type v
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
P : Generators R S
R' : Type u_1
S' : Type u_2
inst✝⁷ : CommRing R'
inst✝⁶ : CommRing S'
inst✝⁵ : Algebra R' S'
P' : Generators R' S'
inst✝⁴ : Algebra R R'
inst✝³ : Algebra S S'
inst✝² : Algebra R S'
inst✝¹ : IsScalarTower R R' S'
inst✝ : IsScalarTower R S S'
f : P.Hom P'
x : P.Ring
⊢ (AlgHom.restrictScalars R (aeval P'.val)).comp f.toAlgHom = (IsScalarTower.toAlgHom R S S').comp (aeval P.val)

Tactic:
apply MvPolynomial.algHom_ext

Result:
case hf
R : Type u
S : Type v
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
P : Generators R S
R' : Type u_1
S' : Type u_2
inst✝⁷ : CommRing R'
inst✝⁶ : CommRing S'
inst✝⁵ : Algebra R' S'
P' : Generators R' S'
inst✝⁴ : Algebra R R'
inst✝³ : Algebra S S'
inst✝² : Algebra R S'
inst✝¹ : IsScalarTower R R' S'
inst✝ : IsScalarTower R S S'
f : P.Hom P'
x : P.Ring
⊢ ∀ (i : P.vars),
    ((AlgHom.restrictScalars R (aeval P'.val)).comp f.toAlgHom) (X i) =
      ((IsScalarTower.toAlgHom R S S').comp (aeval P.val)) (X i)