/-- This is not an instance for the same reasons as `Polynomial.hasSMulPi'`. -/
noncomputable def Polynomial.algebraPi : Algebra R'[X] (S' → T') :=
  { Polynomial.hasSMulPi' R' S' T' with
    toFun := fun p z => algebraMap S' T' (aeval z p)
    map_one' := by
      funext z
      simp only [Polynomial.aeval_one, Pi.one_apply, map_one]
    map_mul' := fun f g => by
      funext z
      simp only [Pi.mul_apply, map_mul]
    map_zero' := by
      funext z
      simp only [Polynomial.aeval_zero, Pi.zero_apply, map_zero]
    map_add' := fun f g => by
      

Proof state:
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : IsDomain R
inst✝⁵ : CommRing S
R' : Type u
S' : Type v
T' : Type w
inst✝⁴ : CommSemiring R'
inst✝³ : CommSemiring S'
inst✝² : CommSemiring T'
inst✝¹ : Algebra R' S'
inst✝ : Algebra S' T'
src✝ : SMul R'[X] (S' → T') := hasSMulPi' R' S' T'
f g : R'[X]
⊢ OneHom.toFun
      (↑{
          toOneHom :=
            { toFun := fun p z => (algebraMap S' T') ((aeval z) p),
              map_one' := (_ : (fun p z => (algebraMap S' T') ((aeval z) p)) 1 = 1) },
          map_mul' :=
            (_ :
              ∀ (f g : R'[X]),
                OneHom.toFun
                    { toFun := fun p z => (algebraMap S' T') ((aeval z) p),
                      map_one' := (_ : (fun p z => (algebraMap S' T') ((aeval z) p)) 1 = 1) }
                    (f * g) =
                  OneHom.toFun
                      { toFun := fun p z => (algebraMap S' T') ((aeval z) p),
                        map_one' := (_ : (fun p z => (algebraMap S' T') ((aeval z) p)) 1 = 1) }
                      f *
                    OneHom.toFun
                      { toFun := fun p z => (algebraMap S' T') ((aeval z) p),
                        map_one' := (_ : (fun p z => (algebraMap S' T') ((aeval z) p)) 1 = 1) }
                      g) })
      (f + g) =
    OneHom.toFun
        (↑{
            toOneHom :=
              { toFun := fun p z => (algebraMap S' T') ((aeval z) p),
                map_one' := (_ : (fun p z => (algebraMap S' T') ((aeval z) p)) 1 = 1) },
            map_mul' :=
              (_ :
                ∀ (f g : R'[X]),
                  OneHom.toFun
                      { toFun := fun p z => (algebraMap S' T') ((aeval z) p),
                        map_one' := (_ : (fun p z => (algebraMap S' T') ((aeval z) p)) 1 = 1) }
                      (f * g) =
                    OneHom.toFun
                        { toFun := fun p z => (algebraMap S' T') ((aeval z) p),
                          map_one' := (_ : (fun p z => (algebraMap S' T') ((aeval z) p)) 1 = 1) }
                        f *
                      OneHom.toFun
                        { toFun := fun p z => (algebraMap S' T') ((aeval z) p),
                          map_one' := (_ : (fun p z => (algebraMap S' T') ((aeval z) p)) 1 = 1) }
                        g) })
        f +
      OneHom.toFun
        (↑{
            toOneHom :=
              { toFun := fun p z => (algebraMap S' T') ((aeval z) p),
                map_one' := (_ : (fun p z => (algebraMap S' T') ((aeval z) p)) 1 = 1) },
            map_mul' :=
              (_ :
                ∀ (f g : R'[X]),
                  OneHom.toFun
                      { toFun := fun p z => (algebraMap S' T') ((aeval z) p),
                        map_one' := (_ : (fun p z => (algebraMap S' T') ((aeval z) p)) 1 = 1) }
                      (f * g) =
                    OneHom.toFun
                        { toFun := fun p z => (algebraMap S' T') ((aeval z) p),
                          map_one' := (_ : (fun p z => (algebraMap S' T') ((aeval z) p)) 1 = 1) }
                        f *
                      OneHom.toFun
                        { toFun := fun p z => (algebraMap S' T') ((aeval z) p),
                          map_one' := (_ : (fun p z => (algebraMap S' T') ((aeval z) p)) 1 = 1) }
                        g) })
        g

Next tactic:
funext z