Theorem: PowerSeries.exp_pow_sum
File: Mathlib/RingTheory/PowerSeries/WellKnown.lean

tactic: simp only [exp_pow_eq_rescale_exp, rescale]
state_before: A : Type u_1
inst✝¹ : CommRing A
inst✝ : Algebra ℚ A
n : ℕ
⊢ (Finset.sum (Finset.range n) fun k => exp A ^ k) =
    mk fun p => Finset.sum (Finset.range n) fun k => ↑(k ^ p) * ↑(algebraMap ℚ A) (↑p !)⁻¹

tactic: ext
state_before: A : Type u_1
inst✝¹ : CommRing A
inst✝ : Algebra ℚ A
n : ℕ
⊢ (Finset.sum (Finset.range n) fun x =>
      ↑{
            toMonoidHom :=
              {
                toOneHom :=
                  { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                    map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) },
                map_mul' :=
                  (_ :
                    ∀ (f g : PowerSeries A),
                      OneHom.toFun
                          { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                            map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                          (f * g) =
                        OneHom.toFun
                            { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                              map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                            f *
                          OneHom.toFun
                            { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                              map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                            g) },
            map_zero' :=
              (_ :
                OneHom.toFun
                    (↑{
                        toOneHom :=
                          { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                            map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) },
                        map_mul' :=
                          (_ :
                            ∀ (f g : PowerSeries A),
                              OneHom.toFun
                                  { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                    map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                  (f * g) =
                                OneHom.toFun
                                    { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                      map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                    f *
                                  OneHom.toFun
                                    { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                      map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                    g) })
                    0 =
                  0),
            map_add' :=
              (_ :
                ∀ (x_1 y : PowerSeries A),
                  OneHom.toFun
                      (↑{
                          toOneHom :=
                            { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                              map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) },
                          map_mul' :=
                            (_ :
                              ∀ (f g : PowerSeries A),
                                OneHom.toFun
                                    { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                      map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                    (f * g) =
                                  OneHom.toFun
                                      { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                        map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                      f *
                                    OneHom.toFun
                                      { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                        map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                      g) })
                      (x_1 + y) =
                    OneHom.toFun
                        (↑{
                            toOneHom :=
                              { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) },
                            map_mul' :=
                              (_ :
                                ∀ (f g : PowerSeries A),
                                  OneHom.toFun
                                      { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                        map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                      (f * g) =
                                    OneHom.toFun
                                        { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                          map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                        f *
                                      OneHom.toFun
                                        { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                          map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                        g) })
                        x_1 +
                      OneHom.toFun
                        (↑{
                            toOneHom :=
                              { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) },
                            map_mul' :=
                              (_ :
                                ∀ (f g : PowerSeries A),
                                  OneHom.toFun
                                      { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                        map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                      (f * g) =
                                    OneHom.toFun
                                        { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                          map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                        f *
                                      OneHom.toFun
                                        { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                          map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                        g) })
                        y) }
        (exp A)) =
    mk fun p => Finset.sum (Finset.range n) fun x => ↑(x ^ p) * ↑(algebraMap ℚ A) (↑p !)⁻¹

tactic: simp only [one_div, coeff_mk, cast_pow, coe_mk, MonoidHom.coe_mk, OneHom.coe_mk,
  coeff_exp, factorial, LinearMap.map_sum]
state_before: case h
A : Type u_1
inst✝¹ : CommRing A
inst✝ : Algebra ℚ A
n n✝ : ℕ
⊢ ↑(coeff A n✝)
      (Finset.sum (Finset.range n) fun x =>
        ↑{
              toMonoidHom :=
                {
                  toOneHom :=
                    { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                      map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) },
                  map_mul' :=
                    (_ :
                      ∀ (f g : PowerSeries A),
                        OneHom.toFun
                            { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                              map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                            (f * g) =
                          OneHom.toFun
                              { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                              f *
                            OneHom.toFun
                              { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                              g) },
              map_zero' :=
                (_ :
                  OneHom.toFun
                      (↑{
                          toOneHom :=
                            { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                              map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) },
                          map_mul' :=
                            (_ :
                              ∀ (f g : PowerSeries A),
                                OneHom.toFun
                                    { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                      map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                    (f * g) =
                                  OneHom.toFun
                                      { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                        map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                      f *
                                    OneHom.toFun
                                      { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                        map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                      g) })
                      0 =
                    0),
              map_add' :=
                (_ :
                  ∀ (x_1 y : PowerSeries A),
                    OneHom.toFun
                        (↑{
                            toOneHom :=
                              { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) },
                            map_mul' :=
                              (_ :
                                ∀ (f g : PowerSeries A),
                                  OneHom.toFun
                                      { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                        map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                      (f * g) =
                                    OneHom.toFun
                                        { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                          map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                        f *
                                      OneHom.toFun
                                        { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                          map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                        g) })
                        (x_1 + y) =
                      OneHom.toFun
                          (↑{
                              toOneHom :=
                                { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                  map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) },
                              map_mul' :=
                                (_ :
                                  ∀ (f g : PowerSeries A),
                                    OneHom.toFun
                                        { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                          map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                        (f * g) =
                                      OneHom.toFun
                                          { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                            map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                          f *
                                        OneHom.toFun
                                          { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                            map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                          g) })
                          x_1 +
                        OneHom.toFun
                          (↑{
                              toOneHom :=
                                { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                  map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) },
                              map_mul' :=
                                (_ :
                                  ∀ (f g : PowerSeries A),
                                    OneHom.toFun
                                        { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                          map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                        (f * g) =
                                      OneHom.toFun
                                          { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                            map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                          f *
                                        OneHom.toFun
                                          { toFun := fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f,
                                            map_one' := (_ : (fun f => mk fun n => ↑x ^ n * ↑(coeff A n) f) 1 = 1) }
                                          g) })
                          y) }
          (exp A)) =
    ↑(coeff A n✝) (mk fun p => Finset.sum (Finset.range n) fun x => ↑(x ^ p) * ↑(algebraMap ℚ A) (↑p !)⁻¹)