analysis.special_functions.exponential β·
    
    Mathlib.Analysis.SpecialFunctions.Exponential
    
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Anatole Dedecker, Eric Wieser
 -/
 import Analysis.NormedSpace.Exponential
-import Analysis.Calculus.FderivAnalytic
+import Analysis.Calculus.FDeriv.Analytic
 import Topology.MetricSpace.CauSeqFilter
 
 #align_import analysis.special_functions.exponential from "leanprover-community/mathlib"@"c20927220ef87bb4962ba08bf6da2ce3cf50a6dd"
@@ -56,7 +56,7 @@ We prove most result for an arbitrary field `π`, and then specialize to `π
 -/
 
 
-open Filter IsROrC ContinuousMultilinearMap NormedField Asymptotics
+open Filter RCLike ContinuousMultilinearMap NormedField Asymptotics
 
 open scoped Nat Topology BigOperators ENNReal
 
@@ -184,7 +184,7 @@ end deriv
 
 section IsROrCAnyAlgebra
 
-variable {π πΈ : Type _} [IsROrC π] [NormedRing πΈ] [NormedAlgebra π πΈ] [CompleteSpace πΈ]
+variable {π πΈ : Type _} [RCLike π] [NormedRing πΈ] [NormedAlgebra π πΈ] [CompleteSpace πΈ]
 
 #print hasStrictFDerivAt_exp_zero /-
 /-- The exponential in a Banach-algebra `πΈ` over `π = β` or `π = β` has strict FrΓ©chet-derivative
@@ -206,7 +206,7 @@ end IsROrCAnyAlgebra
 
 section IsROrCCommAlgebra
 
-variable {π πΈ : Type _} [IsROrC π] [NormedCommRing πΈ] [NormedAlgebra π πΈ] [CompleteSpace πΈ]
+variable {π πΈ : Type _} [RCLike π] [NormedCommRing πΈ] [NormedAlgebra π πΈ] [CompleteSpace πΈ]
 
 #print hasStrictFDerivAt_exp /-
 /-- The exponential map in a commutative Banach-algebra `πΈ` over `π = β` or `π = β` has strict
@@ -231,7 +231,7 @@ end IsROrCCommAlgebra
 
 section DerivROrC
 
-variable {π : Type _} [IsROrC π]
+variable {π : Type _} [RCLike π]
 
 #print hasStrictDerivAt_exp /-
 /-- The exponential map in `π = β` or `π = β` has strict derivative `exp π x` at any point
@@ -448,9 +448,9 @@ theorem hasDerivAt_exp_smul_const_of_mem_ball' (x : πΈ) (t : π)
 
 end MemBall
 
-section IsROrC
+section RCLike
 
-variable [IsROrC π]
+variable [RCLike π]
 
 variable [NormedCommRing π] [NormedRing πΈ]
 
@@ -532,7 +532,7 @@ theorem hasDerivAt_exp_smul_const' (x : πΈ) (t : π) :
 #align has_deriv_at_exp_smul_const' hasDerivAt_exp_smul_const'
 -/
 
-end IsROrC
+end RCLike
 
 end NormedSpace.exp_smul
 
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -68,21 +68,21 @@ variable {π πΈ : Type _} [NontriviallyNormedField π] [NormedRing πΈ] [
 #print hasStrictFDerivAt_exp_zero_of_radius_pos /-
 /-- The exponential in a Banach-algebra `πΈ` over a normed field `π` has strict FrΓ©chet-derivative
 `1 : πΈ βL[π] πΈ` at zero, as long as it converges on a neighborhood of zero. -/
-theorem hasStrictFDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π πΈ).radius) :
-    HasStrictFDerivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
+theorem hasStrictFDerivAt_exp_zero_of_radius_pos (h : 0 < (NormedSpace.expSeries π πΈ).radius) :
+    HasStrictFDerivAt (NormedSpace.exp π) (1 : πΈ βL[π] πΈ) 0 :=
   by
-  convert (hasFPowerSeriesAt_exp_zero_of_radius_pos h).HasStrictFDerivAt
+  convert (NormedSpace.hasFPowerSeriesAt_exp_zero_of_radius_pos h).HasStrictFDerivAt
   ext x
-  change x = expSeries π πΈ 1 fun _ => x
-  simp [expSeries_apply_eq]
+  change x = NormedSpace.expSeries π πΈ 1 fun _ => x
+  simp [NormedSpace.expSeries_apply_eq]
 #align has_strict_fderiv_at_exp_zero_of_radius_pos hasStrictFDerivAt_exp_zero_of_radius_pos
 -/
 
 #print hasFDerivAt_exp_zero_of_radius_pos /-
 /-- The exponential in a Banach-algebra `πΈ` over a normed field `π` has FrΓ©chet-derivative
 `1 : πΈ βL[π] πΈ` at zero, as long as it converges on a neighborhood of zero. -/
-theorem hasFDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π πΈ).radius) :
-    HasFDerivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
+theorem hasFDerivAt_exp_zero_of_radius_pos (h : 0 < (NormedSpace.expSeries π πΈ).radius) :
+    HasFDerivAt (NormedSpace.exp π) (1 : πΈ βL[π] πΈ) 0 :=
   (hasStrictFDerivAt_exp_zero_of_radius_pos h).HasFDerivAt
 #align has_fderiv_at_exp_zero_of_radius_pos hasFDerivAt_exp_zero_of_radius_pos
 -/
@@ -99,22 +99,27 @@ variable {π πΈ : Type _} [NontriviallyNormedField π] [NormedCommRing 
 characteristic zero has FrΓ©chet-derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at any point `x` in the
 disk of convergence. -/
 theorem hasFDerivAt_exp_of_mem_ball [CharZero π] {x : πΈ}
-    (hx : x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
-    HasFDerivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
+    (hx : x β EMetric.ball (0 : πΈ) (NormedSpace.expSeries π πΈ).radius) :
+    HasFDerivAt (NormedSpace.exp π) (NormedSpace.exp π x β’ 1 : πΈ βL[π] πΈ) x :=
   by
-  have hpos : 0 < (expSeries π πΈ).radius := (zero_le _).trans_lt hx
+  have hpos : 0 < (NormedSpace.expSeries π πΈ).radius := (zero_le _).trans_lt hx
   rw [hasFDerivAt_iff_isLittleO_nhds_zero]
   suffices
-    (fun h => exp π x * (exp π (0 + h) - exp π 0 - ContinuousLinearMap.id π πΈ h)) =αΆ [π 0] fun h =>
-      exp π (x + h) - exp π x - exp π x β’ ContinuousLinearMap.id π πΈ h
+    (fun h =>
+        NormedSpace.exp π x *
+          (NormedSpace.exp π (0 + h) - NormedSpace.exp π 0 - ContinuousLinearMap.id π πΈ h)) =αΆ [π 0]
+      fun h =>
+      NormedSpace.exp π (x + h) - NormedSpace.exp π x -
+        NormedSpace.exp π x β’ ContinuousLinearMap.id π πΈ h
     by
     refine' (is_o.const_mul_left _ _).congr' this (eventually_eq.refl _ _)
     rw [β hasFDerivAt_iff_isLittleO_nhds_zero]
     exact hasFDerivAt_exp_zero_of_radius_pos hpos
-  have : βαΆ  h in π (0 : πΈ), h β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius :=
+  have : βαΆ  h in π (0 : πΈ), h β EMetric.ball (0 : πΈ) (NormedSpace.expSeries π πΈ).radius :=
     EMetric.ball_mem_nhds _ hpos
   filter_upwards [this] with _ hh
-  rw [exp_add_of_mem_ball hx hh, exp_zero, zero_add, ContinuousLinearMap.id_apply, smul_eq_mul]
+  rw [NormedSpace.exp_add_of_mem_ball hx hh, NormedSpace.exp_zero, zero_add,
+    ContinuousLinearMap.id_apply, smul_eq_mul]
   ring
 #align has_fderiv_at_exp_of_mem_ball hasFDerivAt_exp_of_mem_ball
 -/
@@ -124,9 +129,9 @@ theorem hasFDerivAt_exp_of_mem_ball [CharZero π] {x : πΈ}
 characteristic zero has strict FrΓ©chet-derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at any point `x` in
 the disk of convergence. -/
 theorem hasStrictFDerivAt_exp_of_mem_ball [CharZero π] {x : πΈ}
-    (hx : x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
-    HasStrictFDerivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
-  let β¨p, hpβ© := analyticAt_exp_of_mem_ball x hx
+    (hx : x β EMetric.ball (0 : πΈ) (NormedSpace.expSeries π πΈ).radius) :
+    HasStrictFDerivAt (NormedSpace.exp π) (NormedSpace.exp π x β’ 1 : πΈ βL[π] πΈ) x :=
+  let β¨p, hpβ© := NormedSpace.analyticAt_exp_of_mem_ball x hx
   hp.HasFDerivAt.unique (hasFDerivAt_exp_of_mem_ball hx) βΈ hp.HasStrictFDerivAt
 #align has_strict_fderiv_at_exp_of_mem_ball hasStrictFDerivAt_exp_of_mem_ball
 -/
@@ -141,8 +146,9 @@ variable {π : Type _} [NontriviallyNormedField π] [CompleteSpace π]
 /-- The exponential map in a complete normed field `π` of characteristic zero has strict derivative
 `exp π x` at any point `x` in the disk of convergence. -/
 theorem hasStrictDerivAt_exp_of_mem_ball [CharZero π] {x : π}
-    (hx : x β EMetric.ball (0 : π) (expSeries π π).radius) : HasStrictDerivAt (exp π) (exp π x) x :=
-  by simpa using (hasStrictFDerivAt_exp_of_mem_ball hx).HasStrictDerivAt
+    (hx : x β EMetric.ball (0 : π) (NormedSpace.expSeries π π).radius) :
+    HasStrictDerivAt (NormedSpace.exp π) (NormedSpace.exp π x) x := by
+  simpa using (hasStrictFDerivAt_exp_of_mem_ball hx).HasStrictDerivAt
 #align has_strict_deriv_at_exp_of_mem_ball hasStrictDerivAt_exp_of_mem_ball
 -/
 
@@ -150,7 +156,8 @@ theorem hasStrictDerivAt_exp_of_mem_ball [CharZero π] {x : π}
 /-- The exponential map in a complete normed field `π` of characteristic zero has derivative
 `exp π x` at any point `x` in the disk of convergence. -/
 theorem hasDerivAt_exp_of_mem_ball [CharZero π] {x : π}
-    (hx : x β EMetric.ball (0 : π) (expSeries π π).radius) : HasDerivAt (exp π) (exp π x) x :=
+    (hx : x β EMetric.ball (0 : π) (NormedSpace.expSeries π π).radius) :
+    HasDerivAt (NormedSpace.exp π) (NormedSpace.exp π x) x :=
   (hasStrictDerivAt_exp_of_mem_ball hx).HasDerivAt
 #align has_deriv_at_exp_of_mem_ball hasDerivAt_exp_of_mem_ball
 -/
@@ -158,8 +165,8 @@ theorem hasDerivAt_exp_of_mem_ball [CharZero π] {x : π}
 #print hasStrictDerivAt_exp_zero_of_radius_pos /-
 /-- The exponential map in a complete normed field `π` of characteristic zero has strict derivative
 `1` at zero, as long as it converges on a neighborhood of zero. -/
-theorem hasStrictDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π π).radius) :
-    HasStrictDerivAt (exp π) (1 : π) 0 :=
+theorem hasStrictDerivAt_exp_zero_of_radius_pos (h : 0 < (NormedSpace.expSeries π π).radius) :
+    HasStrictDerivAt (NormedSpace.exp π) (1 : π) 0 :=
   (hasStrictFDerivAt_exp_zero_of_radius_pos h).HasStrictDerivAt
 #align has_strict_deriv_at_exp_zero_of_radius_pos hasStrictDerivAt_exp_zero_of_radius_pos
 -/
@@ -167,8 +174,8 @@ theorem hasStrictDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π π).r
 #print hasDerivAt_exp_zero_of_radius_pos /-
 /-- The exponential map in a complete normed field `π` of characteristic zero has derivative
 `1` at zero, as long as it converges on a neighborhood of zero. -/
-theorem hasDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π π).radius) :
-    HasDerivAt (exp π) (1 : π) 0 :=
+theorem hasDerivAt_exp_zero_of_radius_pos (h : 0 < (NormedSpace.expSeries π π).radius) :
+    HasDerivAt (NormedSpace.exp π) (1 : π) 0 :=
   (hasStrictDerivAt_exp_zero_of_radius_pos h).HasDerivAt
 #align has_deriv_at_exp_zero_of_radius_pos hasDerivAt_exp_zero_of_radius_pos
 -/
@@ -182,15 +189,15 @@ variable {π πΈ : Type _} [IsROrC π] [NormedRing πΈ] [NormedAlgebra 
 #print hasStrictFDerivAt_exp_zero /-
 /-- The exponential in a Banach-algebra `πΈ` over `π = β` or `π = β` has strict FrΓ©chet-derivative
 `1 : πΈ βL[π] πΈ` at zero. -/
-theorem hasStrictFDerivAt_exp_zero : HasStrictFDerivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
-  hasStrictFDerivAt_exp_zero_of_radius_pos (expSeries_radius_pos π πΈ)
+theorem hasStrictFDerivAt_exp_zero : HasStrictFDerivAt (NormedSpace.exp π) (1 : πΈ βL[π] πΈ) 0 :=
+  hasStrictFDerivAt_exp_zero_of_radius_pos (NormedSpace.expSeries_radius_pos π πΈ)
 #align has_strict_fderiv_at_exp_zero hasStrictFDerivAt_exp_zero
 -/
 
 #print hasFDerivAt_exp_zero /-
 /-- The exponential in a Banach-algebra `πΈ` over `π = β` or `π = β` has FrΓ©chet-derivative
 `1 : πΈ βL[π] πΈ` at zero. -/
-theorem hasFDerivAt_exp_zero : HasFDerivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
+theorem hasFDerivAt_exp_zero : HasFDerivAt (NormedSpace.exp π) (1 : πΈ βL[π] πΈ) 0 :=
   hasStrictFDerivAt_exp_zero.HasFDerivAt
 #align has_fderiv_at_exp_zero hasFDerivAt_exp_zero
 -/
@@ -204,15 +211,18 @@ variable {π πΈ : Type _} [IsROrC π] [NormedCommRing πΈ] [NormedAlgebra
 #print hasStrictFDerivAt_exp /-
 /-- The exponential map in a commutative Banach-algebra `πΈ` over `π = β` or `π = β` has strict
 FrΓ©chet-derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at any point `x`. -/
-theorem hasStrictFDerivAt_exp {x : πΈ} : HasStrictFDerivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
-  hasStrictFDerivAt_exp_of_mem_ball ((expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _)
+theorem hasStrictFDerivAt_exp {x : πΈ} :
+    HasStrictFDerivAt (NormedSpace.exp π) (NormedSpace.exp π x β’ 1 : πΈ βL[π] πΈ) x :=
+  hasStrictFDerivAt_exp_of_mem_ball
+    ((NormedSpace.expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _)
 #align has_strict_fderiv_at_exp hasStrictFDerivAt_exp
 -/
 
 #print hasFDerivAt_exp /-
 /-- The exponential map in a commutative Banach-algebra `πΈ` over `π = β` or `π = β` has
 FrΓ©chet-derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at any point `x`. -/
-theorem hasFDerivAt_exp {x : πΈ} : HasFDerivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
+theorem hasFDerivAt_exp {x : πΈ} :
+    HasFDerivAt (NormedSpace.exp π) (NormedSpace.exp π x β’ 1 : πΈ βL[π] πΈ) x :=
   hasStrictFDerivAt_exp.HasFDerivAt
 #align has_fderiv_at_exp hasFDerivAt_exp
 -/
@@ -226,28 +236,30 @@ variable {π : Type _} [IsROrC π]
 #print hasStrictDerivAt_exp /-
 /-- The exponential map in `π = β` or `π = β` has strict derivative `exp π x` at any point
 `x`. -/
-theorem hasStrictDerivAt_exp {x : π} : HasStrictDerivAt (exp π) (exp π x) x :=
-  hasStrictDerivAt_exp_of_mem_ball ((expSeries_radius_eq_top π π).symm βΈ edist_lt_top _ _)
+theorem hasStrictDerivAt_exp {x : π} :
+    HasStrictDerivAt (NormedSpace.exp π) (NormedSpace.exp π x) x :=
+  hasStrictDerivAt_exp_of_mem_ball
+    ((NormedSpace.expSeries_radius_eq_top π π).symm βΈ edist_lt_top _ _)
 #align has_strict_deriv_at_exp hasStrictDerivAt_exp
 -/
 
 #print hasDerivAt_exp /-
 /-- The exponential map in `π = β` or `π = β` has derivative `exp π x` at any point `x`. -/
-theorem hasDerivAt_exp {x : π} : HasDerivAt (exp π) (exp π x) x :=
+theorem hasDerivAt_exp {x : π} : HasDerivAt (NormedSpace.exp π) (NormedSpace.exp π x) x :=
   hasStrictDerivAt_exp.HasDerivAt
 #align has_deriv_at_exp hasDerivAt_exp
 -/
 
 #print hasStrictDerivAt_exp_zero /-
 /-- The exponential map in `π = β` or `π = β` has strict derivative `1` at zero. -/
-theorem hasStrictDerivAt_exp_zero : HasStrictDerivAt (exp π) (1 : π) 0 :=
-  hasStrictDerivAt_exp_zero_of_radius_pos (expSeries_radius_pos π π)
+theorem hasStrictDerivAt_exp_zero : HasStrictDerivAt (NormedSpace.exp π) (1 : π) 0 :=
+  hasStrictDerivAt_exp_zero_of_radius_pos (NormedSpace.expSeries_radius_pos π π)
 #align has_strict_deriv_at_exp_zero hasStrictDerivAt_exp_zero
 -/
 
 #print hasDerivAt_exp_zero /-
 /-- The exponential map in `π = β` or `π = β` has derivative `1` at zero. -/
-theorem hasDerivAt_exp_zero : HasDerivAt (exp π) (1 : π) 0 :=
+theorem hasDerivAt_exp_zero : HasDerivAt (NormedSpace.exp π) (1 : π) 0 :=
   hasStrictDerivAt_exp_zero.HasDerivAt
 #align has_deriv_at_exp_zero hasDerivAt_exp_zero
 -/
@@ -255,16 +267,18 @@ theorem hasDerivAt_exp_zero : HasDerivAt (exp π) (1 : π) 0 :=
 end DerivROrC
 
 #print Complex.exp_eq_exp_β /-
-theorem Complex.exp_eq_exp_β : Complex.exp = exp β :=
+theorem Complex.exp_eq_exp_β : Complex.exp = NormedSpace.exp β :=
   by
   refine' funext fun x => _
-  rw [Complex.exp, exp_eq_tsum_div]
-  exact tendsto_nhds_unique x.exp'.tendsto_limit (expSeries_div_summable β x).HasSum.tendsto_sum_nat
+  rw [Complex.exp, NormedSpace.exp_eq_tsum_div]
+  exact
+    tendsto_nhds_unique x.exp'.tendsto_limit
+      (NormedSpace.expSeries_div_summable β x).HasSum.tendsto_sum_nat
 #align complex.exp_eq_exp_β Complex.exp_eq_exp_β
 -/
 
 #print Real.exp_eq_exp_β /-
-theorem Real.exp_eq_exp_β : Real.exp = exp β := by ext x;
+theorem Real.exp_eq_exp_β : Real.exp = NormedSpace.exp β := by ext x;
   exact_mod_cast congr_fun Complex.exp_eq_exp_β x
 #align real.exp_eq_exp_β Real.exp_eq_exp_β
 -/
@@ -291,7 +305,7 @@ TODO: prove this result too!
 -/
 
 
-section exp_smul
+section NormedSpace.exp_smul
 
 variable {π π πΈ : Type _}
 
@@ -315,25 +329,28 @@ variable [CompleteSpace πΈ]
 
 #print hasFDerivAt_exp_smul_const_of_mem_ball /-
 theorem hasFDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
-    (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
-    HasFDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x) t :=
+    (htx : t β’ x β EMetric.ball (0 : πΈ) (NormedSpace.expSeries π πΈ).radius) :
+    HasFDerivAt (fun u : π => NormedSpace.exp π (u β’ x))
+      (NormedSpace.exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x) t :=
   by
   -- TODO: prove this via `has_fderiv_at_exp_of_mem_ball` using the commutative ring
   -- `algebra.elemental_algebra π x`. See leanprover-community/mathlib#19062 for discussion.
-  have hpos : 0 < (expSeries π πΈ).radius := (zero_le _).trans_lt htx
+  have hpos : 0 < (NormedSpace.expSeries π πΈ).radius := (zero_le _).trans_lt htx
   rw [hasFDerivAt_iff_isLittleO_nhds_zero]
   suffices
     (fun h =>
-        exp π (t β’ x) *
-          (exp π ((0 + h) β’ x) - exp π ((0 : π) β’ x) - ((1 : π βL[π] π).smul_right x) h)) =αΆ [π 0]
+        NormedSpace.exp π (t β’ x) *
+          (NormedSpace.exp π ((0 + h) β’ x) - NormedSpace.exp π ((0 : π) β’ x) -
+            ((1 : π βL[π] π).smul_right x) h)) =αΆ [π 0]
       fun h =>
-      exp π ((t + h) β’ x) - exp π (t β’ x) - (exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x) h
+      NormedSpace.exp π ((t + h) β’ x) - NormedSpace.exp π (t β’ x) -
+        (NormedSpace.exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x) h
     by
     refine' (is_o.const_mul_left _ _).congr' this (eventually_eq.refl _ _)
     rw [β
-      @hasFDerivAt_iff_isLittleO_nhds_zero _ _ _ _ _ _ _ _ (fun u => exp π (u β’ x))
+      @hasFDerivAt_iff_isLittleO_nhds_zero _ _ _ _ _ _ _ _ (fun u => NormedSpace.exp π (u β’ x))
         ((1 : π βL[π] π).smul_right x) 0]
-    have : HasFDerivAt (exp π) (1 : πΈ βL[π] πΈ) ((1 : π βL[π] π).smul_right x 0) :=
+    have : HasFDerivAt (NormedSpace.exp π) (1 : πΈ βL[π] πΈ) ((1 : π βL[π] π).smul_right x 0) :=
       by
       rw [ContinuousLinearMap.smulRight_apply, ContinuousLinearMap.one_apply, zero_smul]
       exact hasFDerivAt_exp_zero_of_radius_pos hpos
@@ -342,13 +359,13 @@ theorem hasFDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
     by
     rw [β zero_smul π x]
     exact tendsto_id.smul_const x
-  have : βαΆ  h in π (0 : π), h β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius :=
+  have : βαΆ  h in π (0 : π), h β’ x β EMetric.ball (0 : πΈ) (NormedSpace.expSeries π πΈ).radius :=
     this.eventually (EMetric.ball_mem_nhds _ hpos)
   filter_upwards [this]
   intro h hh
   have : Commute (t β’ x) (h β’ x) := ((Commute.refl x).smul_left t).smul_right h
-  rw [add_smul t h, exp_add_of_commute_of_mem_ball this htx hh, zero_add, zero_smul, exp_zero,
-    ContinuousLinearMap.smulRight_apply, ContinuousLinearMap.one_apply,
+  rw [add_smul t h, NormedSpace.exp_add_of_commute_of_mem_ball this htx hh, zero_add, zero_smul,
+    NormedSpace.exp_zero, ContinuousLinearMap.smulRight_apply, ContinuousLinearMap.one_apply,
     ContinuousLinearMap.smul_apply, ContinuousLinearMap.smulRight_apply,
     ContinuousLinearMap.one_apply, smul_eq_mul, mul_sub_left_distrib, mul_sub_left_distrib, mul_one]
 #align has_fderiv_at_exp_smul_const_of_mem_ball hasFDerivAt_exp_smul_const_of_mem_ball
@@ -356,26 +373,26 @@ theorem hasFDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
 
 #print hasFDerivAt_exp_smul_const_of_mem_ball' /-
 theorem hasFDerivAt_exp_smul_const_of_mem_ball' (x : πΈ) (t : π)
-    (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
-    HasFDerivAt (fun u : π => exp π (u β’ x))
-      (((1 : π βL[π] π).smul_right x).smul_right (exp π (t β’ x))) t :=
+    (htx : t β’ x β EMetric.ball (0 : πΈ) (NormedSpace.expSeries π πΈ).radius) :
+    HasFDerivAt (fun u : π => NormedSpace.exp π (u β’ x))
+      (((1 : π βL[π] π).smul_right x).smul_right (NormedSpace.exp π (t β’ x))) t :=
   by
   convert hasFDerivAt_exp_smul_const_of_mem_ball π _ _ htx using 1
   ext t'
-  show Commute (t' β’ x) (exp π (t β’ x))
+  show Commute (t' β’ x) (NormedSpace.exp π (t β’ x))
   exact (((Commute.refl x).smul_left t').smul_right t).exp_right π
 #align has_fderiv_at_exp_smul_const_of_mem_ball' hasFDerivAt_exp_smul_const_of_mem_ball'
 -/
 
 #print hasStrictFDerivAt_exp_smul_const_of_mem_ball /-
 theorem hasStrictFDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
-    (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
-    HasStrictFDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x)
-      t :=
-  let β¨p, hpβ© := analyticAt_exp_of_mem_ball (t β’ x) htx
-  have derivβ : HasStrictFDerivAt (fun u : π => exp π (u β’ x)) _ t :=
+    (htx : t β’ x β EMetric.ball (0 : πΈ) (NormedSpace.expSeries π πΈ).radius) :
+    HasStrictFDerivAt (fun u : π => NormedSpace.exp π (u β’ x))
+      (NormedSpace.exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x) t :=
+  let β¨p, hpβ© := NormedSpace.analyticAt_exp_of_mem_ball (t β’ x) htx
+  have derivβ : HasStrictFDerivAt (fun u : π => NormedSpace.exp π (u β’ x)) _ t :=
     hp.HasStrictFDerivAt.comp t ((ContinuousLinearMap.id π π).smul_right x).HasStrictFDerivAt
-  have derivβ : HasFDerivAt (fun u : π => exp π (u β’ x)) _ t :=
+  have derivβ : HasFDerivAt (fun u : π => NormedSpace.exp π (u β’ x)) _ t :=
     hasFDerivAt_exp_smul_const_of_mem_ball π x t htx
   derivβ.HasFDerivAt.unique derivβ βΈ derivβ
 #align has_strict_fderiv_at_exp_smul_const_of_mem_ball hasStrictFDerivAt_exp_smul_const_of_mem_ball
@@ -383,14 +400,14 @@ theorem hasStrictFDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
 
 #print hasStrictFDerivAt_exp_smul_const_of_mem_ball' /-
 theorem hasStrictFDerivAt_exp_smul_const_of_mem_ball' (x : πΈ) (t : π)
-    (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
-    HasStrictFDerivAt (fun u : π => exp π (u β’ x))
-      (((1 : π βL[π] π).smul_right x).smul_right (exp π (t β’ x))) t :=
+    (htx : t β’ x β EMetric.ball (0 : πΈ) (NormedSpace.expSeries π πΈ).radius) :
+    HasStrictFDerivAt (fun u : π => NormedSpace.exp π (u β’ x))
+      (((1 : π βL[π] π).smul_right x).smul_right (NormedSpace.exp π (t β’ x))) t :=
   by
-  let β¨p, hpβ© := analyticAt_exp_of_mem_ball (t β’ x) htx
+  let β¨p, hpβ© := NormedSpace.analyticAt_exp_of_mem_ball (t β’ x) htx
   convert hasStrictFDerivAt_exp_smul_const_of_mem_ball π _ _ htx using 1
   ext t'
-  show Commute (t' β’ x) (exp π (t β’ x))
+  show Commute (t' β’ x) (NormedSpace.exp π (t β’ x))
   exact (((Commute.refl x).smul_left t').smul_right t).exp_right π
 #align has_strict_fderiv_at_exp_smul_const_of_mem_ball' hasStrictFDerivAt_exp_smul_const_of_mem_ball'
 -/
@@ -399,32 +416,32 @@ variable {π}
 
 #print hasStrictDerivAt_exp_smul_const_of_mem_ball /-
 theorem hasStrictDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
-    (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
-    HasStrictDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) * x) t := by
-  simpa using (hasStrictFDerivAt_exp_smul_const_of_mem_ball π x t htx).HasStrictDerivAt
+    (htx : t β’ x β EMetric.ball (0 : πΈ) (NormedSpace.expSeries π πΈ).radius) :
+    HasStrictDerivAt (fun u : π => NormedSpace.exp π (u β’ x)) (NormedSpace.exp π (t β’ x) * x) t :=
+  by simpa using (hasStrictFDerivAt_exp_smul_const_of_mem_ball π x t htx).HasStrictDerivAt
 #align has_strict_deriv_at_exp_smul_const_of_mem_ball hasStrictDerivAt_exp_smul_const_of_mem_ball
 -/
 
 #print hasStrictDerivAt_exp_smul_const_of_mem_ball' /-
 theorem hasStrictDerivAt_exp_smul_const_of_mem_ball' (x : πΈ) (t : π)
-    (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
-    HasStrictDerivAt (fun u : π => exp π (u β’ x)) (x * exp π (t β’ x)) t := by
-  simpa using (hasStrictFDerivAt_exp_smul_const_of_mem_ball' π x t htx).HasStrictDerivAt
+    (htx : t β’ x β EMetric.ball (0 : πΈ) (NormedSpace.expSeries π πΈ).radius) :
+    HasStrictDerivAt (fun u : π => NormedSpace.exp π (u β’ x)) (x * NormedSpace.exp π (t β’ x)) t :=
+  by simpa using (hasStrictFDerivAt_exp_smul_const_of_mem_ball' π x t htx).HasStrictDerivAt
 #align has_strict_deriv_at_exp_smul_const_of_mem_ball' hasStrictDerivAt_exp_smul_const_of_mem_ball'
 -/
 
 #print hasDerivAt_exp_smul_const_of_mem_ball /-
 theorem hasDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
-    (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
-    HasDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) * x) t :=
+    (htx : t β’ x β EMetric.ball (0 : πΈ) (NormedSpace.expSeries π πΈ).radius) :
+    HasDerivAt (fun u : π => NormedSpace.exp π (u β’ x)) (NormedSpace.exp π (t β’ x) * x) t :=
   (hasStrictDerivAt_exp_smul_const_of_mem_ball x t htx).HasDerivAt
 #align has_deriv_at_exp_smul_const_of_mem_ball hasDerivAt_exp_smul_const_of_mem_ball
 -/
 
 #print hasDerivAt_exp_smul_const_of_mem_ball' /-
 theorem hasDerivAt_exp_smul_const_of_mem_ball' (x : πΈ) (t : π)
-    (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
-    HasDerivAt (fun u : π => exp π (u β’ x)) (x * exp π (t β’ x)) t :=
+    (htx : t β’ x β EMetric.ball (0 : πΈ) (NormedSpace.expSeries π πΈ).radius) :
+    HasDerivAt (fun u : π => NormedSpace.exp π (u β’ x)) (x * NormedSpace.exp π (t β’ x)) t :=
   (hasStrictDerivAt_exp_smul_const_of_mem_ball' x t htx).HasDerivAt
 #align has_deriv_at_exp_smul_const_of_mem_ball' hasDerivAt_exp_smul_const_of_mem_ball'
 -/
@@ -447,36 +464,37 @@ variable (π)
 
 #print hasFDerivAt_exp_smul_const /-
 theorem hasFDerivAt_exp_smul_const (x : πΈ) (t : π) :
-    HasFDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x) t :=
+    HasFDerivAt (fun u : π => NormedSpace.exp π (u β’ x))
+      (NormedSpace.exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x) t :=
   hasFDerivAt_exp_smul_const_of_mem_ball π _ _ <|
-    (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
+    (NormedSpace.expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_fderiv_at_exp_smul_const hasFDerivAt_exp_smul_const
 -/
 
 #print hasFDerivAt_exp_smul_const' /-
 theorem hasFDerivAt_exp_smul_const' (x : πΈ) (t : π) :
-    HasFDerivAt (fun u : π => exp π (u β’ x))
-      (((1 : π βL[π] π).smul_right x).smul_right (exp π (t β’ x))) t :=
+    HasFDerivAt (fun u : π => NormedSpace.exp π (u β’ x))
+      (((1 : π βL[π] π).smul_right x).smul_right (NormedSpace.exp π (t β’ x))) t :=
   hasFDerivAt_exp_smul_const_of_mem_ball' π _ _ <|
-    (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
+    (NormedSpace.expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_fderiv_at_exp_smul_const' hasFDerivAt_exp_smul_const'
 -/
 
 #print hasStrictFDerivAt_exp_smul_const /-
 theorem hasStrictFDerivAt_exp_smul_const (x : πΈ) (t : π) :
-    HasStrictFDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x)
-      t :=
+    HasStrictFDerivAt (fun u : π => NormedSpace.exp π (u β’ x))
+      (NormedSpace.exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x) t :=
   hasStrictFDerivAt_exp_smul_const_of_mem_ball π _ _ <|
-    (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
+    (NormedSpace.expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_strict_fderiv_at_exp_smul_const hasStrictFDerivAt_exp_smul_const
 -/
 
 #print hasStrictFDerivAt_exp_smul_const' /-
 theorem hasStrictFDerivAt_exp_smul_const' (x : πΈ) (t : π) :
-    HasStrictFDerivAt (fun u : π => exp π (u β’ x))
-      (((1 : π βL[π] π).smul_right x).smul_right (exp π (t β’ x))) t :=
+    HasStrictFDerivAt (fun u : π => NormedSpace.exp π (u β’ x))
+      (((1 : π βL[π] π).smul_right x).smul_right (NormedSpace.exp π (t β’ x))) t :=
   hasStrictFDerivAt_exp_smul_const_of_mem_ball' π _ _ <|
-    (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
+    (NormedSpace.expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_strict_fderiv_at_exp_smul_const' hasStrictFDerivAt_exp_smul_const'
 -/
 
@@ -484,36 +502,37 @@ variable {π}
 
 #print hasStrictDerivAt_exp_smul_const /-
 theorem hasStrictDerivAt_exp_smul_const (x : πΈ) (t : π) :
-    HasStrictDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) * x) t :=
+    HasStrictDerivAt (fun u : π => NormedSpace.exp π (u β’ x)) (NormedSpace.exp π (t β’ x) * x) t :=
   hasStrictDerivAt_exp_smul_const_of_mem_ball _ _ <|
-    (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
+    (NormedSpace.expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_strict_deriv_at_exp_smul_const hasStrictDerivAt_exp_smul_const
 -/
 
 #print hasStrictDerivAt_exp_smul_const' /-
 theorem hasStrictDerivAt_exp_smul_const' (x : πΈ) (t : π) :
-    HasStrictDerivAt (fun u : π => exp π (u β’ x)) (x * exp π (t β’ x)) t :=
+    HasStrictDerivAt (fun u : π => NormedSpace.exp π (u β’ x)) (x * NormedSpace.exp π (t β’ x)) t :=
   hasStrictDerivAt_exp_smul_const_of_mem_ball' _ _ <|
-    (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
+    (NormedSpace.expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_strict_deriv_at_exp_smul_const' hasStrictDerivAt_exp_smul_const'
 -/
 
 #print hasDerivAt_exp_smul_const /-
 theorem hasDerivAt_exp_smul_const (x : πΈ) (t : π) :
-    HasDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) * x) t :=
-  hasDerivAt_exp_smul_const_of_mem_ball _ _ <| (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
+    HasDerivAt (fun u : π => NormedSpace.exp π (u β’ x)) (NormedSpace.exp π (t β’ x) * x) t :=
+  hasDerivAt_exp_smul_const_of_mem_ball _ _ <|
+    (NormedSpace.expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_deriv_at_exp_smul_const hasDerivAt_exp_smul_const
 -/
 
 #print hasDerivAt_exp_smul_const' /-
 theorem hasDerivAt_exp_smul_const' (x : πΈ) (t : π) :
-    HasDerivAt (fun u : π => exp π (u β’ x)) (x * exp π (t β’ x)) t :=
+    HasDerivAt (fun u : π => NormedSpace.exp π (u β’ x)) (x * NormedSpace.exp π (t β’ x)) t :=
   hasDerivAt_exp_smul_const_of_mem_ball' _ _ <|
-    (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
+    (NormedSpace.expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_deriv_at_exp_smul_const' hasDerivAt_exp_smul_const'
 -/
 
 end IsROrC
 
-end exp_smul
+end NormedSpace.exp_smul
 
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2021 Anatole Dedecker. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Anatole Dedecker, Eric Wieser
 -/
-import Mathbin.Analysis.NormedSpace.Exponential
-import Mathbin.Analysis.Calculus.FderivAnalytic
-import Mathbin.Topology.MetricSpace.CauSeqFilter
+import Analysis.NormedSpace.Exponential
+import Analysis.Calculus.FderivAnalytic
+import Topology.MetricSpace.CauSeqFilter
 
 #align_import analysis.special_functions.exponential from "leanprover-community/mathlib"@"c20927220ef87bb4962ba08bf6da2ce3cf50a6dd"
 
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
 Copyright (c) 2021 Anatole Dedecker. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Anatole Dedecker, Eric Wieser
-
-! This file was ported from Lean 3 source module analysis.special_functions.exponential
-! leanprover-community/mathlib commit c20927220ef87bb4962ba08bf6da2ce3cf50a6dd
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Analysis.NormedSpace.Exponential
 import Mathbin.Analysis.Calculus.FderivAnalytic
 import Mathbin.Topology.MetricSpace.CauSeqFilter
 
+#align_import analysis.special_functions.exponential from "leanprover-community/mathlib"@"c20927220ef87bb4962ba08bf6da2ce3cf50a6dd"
+
 /-!
 # Calculus results on exponential in a Banach algebra
 
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -68,6 +68,7 @@ section AnyFieldAnyAlgebra
 variable {π πΈ : Type _} [NontriviallyNormedField π] [NormedRing πΈ] [NormedAlgebra π πΈ]
   [CompleteSpace πΈ]
 
+#print hasStrictFDerivAt_exp_zero_of_radius_pos /-
 /-- The exponential in a Banach-algebra `πΈ` over a normed field `π` has strict FrΓ©chet-derivative
 `1 : πΈ βL[π] πΈ` at zero, as long as it converges on a neighborhood of zero. -/
 theorem hasStrictFDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π πΈ).radius) :
@@ -78,13 +79,16 @@ theorem hasStrictFDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π πΈ).
   change x = expSeries π πΈ 1 fun _ => x
   simp [expSeries_apply_eq]
 #align has_strict_fderiv_at_exp_zero_of_radius_pos hasStrictFDerivAt_exp_zero_of_radius_pos
+-/
 
+#print hasFDerivAt_exp_zero_of_radius_pos /-
 /-- The exponential in a Banach-algebra `πΈ` over a normed field `π` has FrΓ©chet-derivative
 `1 : πΈ βL[π] πΈ` at zero, as long as it converges on a neighborhood of zero. -/
 theorem hasFDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π πΈ).radius) :
     HasFDerivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
   (hasStrictFDerivAt_exp_zero_of_radius_pos h).HasFDerivAt
 #align has_fderiv_at_exp_zero_of_radius_pos hasFDerivAt_exp_zero_of_radius_pos
+-/
 
 end AnyFieldAnyAlgebra
 
@@ -93,6 +97,7 @@ section AnyFieldCommAlgebra
 variable {π πΈ : Type _} [NontriviallyNormedField π] [NormedCommRing πΈ] [NormedAlgebra π πΈ]
   [CompleteSpace πΈ]
 
+#print hasFDerivAt_exp_of_mem_ball /-
 /-- The exponential map in a commutative Banach-algebra `πΈ` over a normed field `π` of
 characteristic zero has FrΓ©chet-derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at any point `x` in the
 disk of convergence. -/
@@ -115,7 +120,9 @@ theorem hasFDerivAt_exp_of_mem_ball [CharZero π] {x : πΈ}
   rw [exp_add_of_mem_ball hx hh, exp_zero, zero_add, ContinuousLinearMap.id_apply, smul_eq_mul]
   ring
 #align has_fderiv_at_exp_of_mem_ball hasFDerivAt_exp_of_mem_ball
+-/
 
+#print hasStrictFDerivAt_exp_of_mem_ball /-
 /-- The exponential map in a commutative Banach-algebra `πΈ` over a normed field `π` of
 characteristic zero has strict FrΓ©chet-derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at any point `x` in
 the disk of convergence. -/
@@ -125,6 +132,7 @@ theorem hasStrictFDerivAt_exp_of_mem_ball [CharZero π] {x : πΈ}
   let β¨p, hpβ© := analyticAt_exp_of_mem_ball x hx
   hp.HasFDerivAt.unique (hasFDerivAt_exp_of_mem_ball hx) βΈ hp.HasStrictFDerivAt
 #align has_strict_fderiv_at_exp_of_mem_ball hasStrictFDerivAt_exp_of_mem_ball
+-/
 
 end AnyFieldCommAlgebra
 
@@ -132,33 +140,41 @@ section deriv
 
 variable {π : Type _} [NontriviallyNormedField π] [CompleteSpace π]
 
+#print hasStrictDerivAt_exp_of_mem_ball /-
 /-- The exponential map in a complete normed field `π` of characteristic zero has strict derivative
 `exp π x` at any point `x` in the disk of convergence. -/
 theorem hasStrictDerivAt_exp_of_mem_ball [CharZero π] {x : π}
     (hx : x β EMetric.ball (0 : π) (expSeries π π).radius) : HasStrictDerivAt (exp π) (exp π x) x :=
   by simpa using (hasStrictFDerivAt_exp_of_mem_ball hx).HasStrictDerivAt
 #align has_strict_deriv_at_exp_of_mem_ball hasStrictDerivAt_exp_of_mem_ball
+-/
 
+#print hasDerivAt_exp_of_mem_ball /-
 /-- The exponential map in a complete normed field `π` of characteristic zero has derivative
 `exp π x` at any point `x` in the disk of convergence. -/
 theorem hasDerivAt_exp_of_mem_ball [CharZero π] {x : π}
     (hx : x β EMetric.ball (0 : π) (expSeries π π).radius) : HasDerivAt (exp π) (exp π x) x :=
   (hasStrictDerivAt_exp_of_mem_ball hx).HasDerivAt
 #align has_deriv_at_exp_of_mem_ball hasDerivAt_exp_of_mem_ball
+-/
 
+#print hasStrictDerivAt_exp_zero_of_radius_pos /-
 /-- The exponential map in a complete normed field `π` of characteristic zero has strict derivative
 `1` at zero, as long as it converges on a neighborhood of zero. -/
 theorem hasStrictDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π π).radius) :
     HasStrictDerivAt (exp π) (1 : π) 0 :=
   (hasStrictFDerivAt_exp_zero_of_radius_pos h).HasStrictDerivAt
 #align has_strict_deriv_at_exp_zero_of_radius_pos hasStrictDerivAt_exp_zero_of_radius_pos
+-/
 
+#print hasDerivAt_exp_zero_of_radius_pos /-
 /-- The exponential map in a complete normed field `π` of characteristic zero has derivative
 `1` at zero, as long as it converges on a neighborhood of zero. -/
 theorem hasDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π π).radius) :
     HasDerivAt (exp π) (1 : π) 0 :=
   (hasStrictDerivAt_exp_zero_of_radius_pos h).HasDerivAt
 #align has_deriv_at_exp_zero_of_radius_pos hasDerivAt_exp_zero_of_radius_pos
+-/
 
 end deriv
 
@@ -166,17 +182,21 @@ section IsROrCAnyAlgebra
 
 variable {π πΈ : Type _} [IsROrC π] [NormedRing πΈ] [NormedAlgebra π πΈ] [CompleteSpace πΈ]
 
+#print hasStrictFDerivAt_exp_zero /-
 /-- The exponential in a Banach-algebra `πΈ` over `π = β` or `π = β` has strict FrΓ©chet-derivative
 `1 : πΈ βL[π] πΈ` at zero. -/
 theorem hasStrictFDerivAt_exp_zero : HasStrictFDerivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
   hasStrictFDerivAt_exp_zero_of_radius_pos (expSeries_radius_pos π πΈ)
 #align has_strict_fderiv_at_exp_zero hasStrictFDerivAt_exp_zero
+-/
 
+#print hasFDerivAt_exp_zero /-
 /-- The exponential in a Banach-algebra `πΈ` over `π = β` or `π = β` has FrΓ©chet-derivative
 `1 : πΈ βL[π] πΈ` at zero. -/
 theorem hasFDerivAt_exp_zero : HasFDerivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
   hasStrictFDerivAt_exp_zero.HasFDerivAt
 #align has_fderiv_at_exp_zero hasFDerivAt_exp_zero
+-/
 
 end IsROrCAnyAlgebra
 
@@ -184,17 +204,21 @@ section IsROrCCommAlgebra
 
 variable {π πΈ : Type _} [IsROrC π] [NormedCommRing πΈ] [NormedAlgebra π πΈ] [CompleteSpace πΈ]
 
+#print hasStrictFDerivAt_exp /-
 /-- The exponential map in a commutative Banach-algebra `πΈ` over `π = β` or `π = β` has strict
 FrΓ©chet-derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at any point `x`. -/
 theorem hasStrictFDerivAt_exp {x : πΈ} : HasStrictFDerivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
   hasStrictFDerivAt_exp_of_mem_ball ((expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _)
 #align has_strict_fderiv_at_exp hasStrictFDerivAt_exp
+-/
 
+#print hasFDerivAt_exp /-
 /-- The exponential map in a commutative Banach-algebra `πΈ` over `π = β` or `π = β` has
 FrΓ©chet-derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at any point `x`. -/
 theorem hasFDerivAt_exp {x : πΈ} : HasFDerivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
   hasStrictFDerivAt_exp.HasFDerivAt
 #align has_fderiv_at_exp hasFDerivAt_exp
+-/
 
 end IsROrCCommAlgebra
 
@@ -217,24 +241,30 @@ theorem hasDerivAt_exp {x : π} : HasDerivAt (exp π) (exp π x) x :=
 #align has_deriv_at_exp hasDerivAt_exp
 -/
 
+#print hasStrictDerivAt_exp_zero /-
 /-- The exponential map in `π = β` or `π = β` has strict derivative `1` at zero. -/
 theorem hasStrictDerivAt_exp_zero : HasStrictDerivAt (exp π) (1 : π) 0 :=
   hasStrictDerivAt_exp_zero_of_radius_pos (expSeries_radius_pos π π)
 #align has_strict_deriv_at_exp_zero hasStrictDerivAt_exp_zero
+-/
 
+#print hasDerivAt_exp_zero /-
 /-- The exponential map in `π = β` or `π = β` has derivative `1` at zero. -/
 theorem hasDerivAt_exp_zero : HasDerivAt (exp π) (1 : π) 0 :=
   hasStrictDerivAt_exp_zero.HasDerivAt
 #align has_deriv_at_exp_zero hasDerivAt_exp_zero
+-/
 
 end DerivROrC
 
+#print Complex.exp_eq_exp_β /-
 theorem Complex.exp_eq_exp_β : Complex.exp = exp β :=
   by
   refine' funext fun x => _
   rw [Complex.exp, exp_eq_tsum_div]
   exact tendsto_nhds_unique x.exp'.tendsto_limit (expSeries_div_summable β x).HasSum.tendsto_sum_nat
 #align complex.exp_eq_exp_β Complex.exp_eq_exp_β
+-/
 
 #print Real.exp_eq_exp_β /-
 theorem Real.exp_eq_exp_β : Real.exp = exp β := by ext x;
@@ -286,6 +316,7 @@ variable [IsScalarTower π π πΈ]
 
 variable [CompleteSpace πΈ]
 
+#print hasFDerivAt_exp_smul_const_of_mem_ball /-
 theorem hasFDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
     (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
     HasFDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x) t :=
@@ -324,7 +355,9 @@ theorem hasFDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
     ContinuousLinearMap.smul_apply, ContinuousLinearMap.smulRight_apply,
     ContinuousLinearMap.one_apply, smul_eq_mul, mul_sub_left_distrib, mul_sub_left_distrib, mul_one]
 #align has_fderiv_at_exp_smul_const_of_mem_ball hasFDerivAt_exp_smul_const_of_mem_ball
+-/
 
+#print hasFDerivAt_exp_smul_const_of_mem_ball' /-
 theorem hasFDerivAt_exp_smul_const_of_mem_ball' (x : πΈ) (t : π)
     (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
     HasFDerivAt (fun u : π => exp π (u β’ x))
@@ -335,7 +368,9 @@ theorem hasFDerivAt_exp_smul_const_of_mem_ball' (x : πΈ) (t : π)
   show Commute (t' β’ x) (exp π (t β’ x))
   exact (((Commute.refl x).smul_left t').smul_right t).exp_right π
 #align has_fderiv_at_exp_smul_const_of_mem_ball' hasFDerivAt_exp_smul_const_of_mem_ball'
+-/
 
+#print hasStrictFDerivAt_exp_smul_const_of_mem_ball /-
 theorem hasStrictFDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
     (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
     HasStrictFDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x)
@@ -347,7 +382,9 @@ theorem hasStrictFDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
     hasFDerivAt_exp_smul_const_of_mem_ball π x t htx
   derivβ.HasFDerivAt.unique derivβ βΈ derivβ
 #align has_strict_fderiv_at_exp_smul_const_of_mem_ball hasStrictFDerivAt_exp_smul_const_of_mem_ball
+-/
 
+#print hasStrictFDerivAt_exp_smul_const_of_mem_ball' /-
 theorem hasStrictFDerivAt_exp_smul_const_of_mem_ball' (x : πΈ) (t : π)
     (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
     HasStrictFDerivAt (fun u : π => exp π (u β’ x))
@@ -359,32 +396,41 @@ theorem hasStrictFDerivAt_exp_smul_const_of_mem_ball' (x : πΈ) (t : π)
   show Commute (t' β’ x) (exp π (t β’ x))
   exact (((Commute.refl x).smul_left t').smul_right t).exp_right π
 #align has_strict_fderiv_at_exp_smul_const_of_mem_ball' hasStrictFDerivAt_exp_smul_const_of_mem_ball'
+-/
 
 variable {π}
 
+#print hasStrictDerivAt_exp_smul_const_of_mem_ball /-
 theorem hasStrictDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
     (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
     HasStrictDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) * x) t := by
   simpa using (hasStrictFDerivAt_exp_smul_const_of_mem_ball π x t htx).HasStrictDerivAt
 #align has_strict_deriv_at_exp_smul_const_of_mem_ball hasStrictDerivAt_exp_smul_const_of_mem_ball
+-/
 
+#print hasStrictDerivAt_exp_smul_const_of_mem_ball' /-
 theorem hasStrictDerivAt_exp_smul_const_of_mem_ball' (x : πΈ) (t : π)
     (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
     HasStrictDerivAt (fun u : π => exp π (u β’ x)) (x * exp π (t β’ x)) t := by
   simpa using (hasStrictFDerivAt_exp_smul_const_of_mem_ball' π x t htx).HasStrictDerivAt
 #align has_strict_deriv_at_exp_smul_const_of_mem_ball' hasStrictDerivAt_exp_smul_const_of_mem_ball'
+-/
 
+#print hasDerivAt_exp_smul_const_of_mem_ball /-
 theorem hasDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
     (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
     HasDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) * x) t :=
   (hasStrictDerivAt_exp_smul_const_of_mem_ball x t htx).HasDerivAt
 #align has_deriv_at_exp_smul_const_of_mem_ball hasDerivAt_exp_smul_const_of_mem_ball
+-/
 
+#print hasDerivAt_exp_smul_const_of_mem_ball' /-
 theorem hasDerivAt_exp_smul_const_of_mem_ball' (x : πΈ) (t : π)
     (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
     HasDerivAt (fun u : π => exp π (u β’ x)) (x * exp π (t β’ x)) t :=
   (hasStrictDerivAt_exp_smul_const_of_mem_ball' x t htx).HasDerivAt
 #align has_deriv_at_exp_smul_const_of_mem_ball' hasDerivAt_exp_smul_const_of_mem_ball'
+-/
 
 end MemBall
 
@@ -402,57 +448,73 @@ variable [CompleteSpace πΈ]
 
 variable (π)
 
+#print hasFDerivAt_exp_smul_const /-
 theorem hasFDerivAt_exp_smul_const (x : πΈ) (t : π) :
     HasFDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x) t :=
   hasFDerivAt_exp_smul_const_of_mem_ball π _ _ <|
     (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_fderiv_at_exp_smul_const hasFDerivAt_exp_smul_const
+-/
 
+#print hasFDerivAt_exp_smul_const' /-
 theorem hasFDerivAt_exp_smul_const' (x : πΈ) (t : π) :
     HasFDerivAt (fun u : π => exp π (u β’ x))
       (((1 : π βL[π] π).smul_right x).smul_right (exp π (t β’ x))) t :=
   hasFDerivAt_exp_smul_const_of_mem_ball' π _ _ <|
     (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_fderiv_at_exp_smul_const' hasFDerivAt_exp_smul_const'
+-/
 
+#print hasStrictFDerivAt_exp_smul_const /-
 theorem hasStrictFDerivAt_exp_smul_const (x : πΈ) (t : π) :
     HasStrictFDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x)
       t :=
   hasStrictFDerivAt_exp_smul_const_of_mem_ball π _ _ <|
     (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_strict_fderiv_at_exp_smul_const hasStrictFDerivAt_exp_smul_const
+-/
 
+#print hasStrictFDerivAt_exp_smul_const' /-
 theorem hasStrictFDerivAt_exp_smul_const' (x : πΈ) (t : π) :
     HasStrictFDerivAt (fun u : π => exp π (u β’ x))
       (((1 : π βL[π] π).smul_right x).smul_right (exp π (t β’ x))) t :=
   hasStrictFDerivAt_exp_smul_const_of_mem_ball' π _ _ <|
     (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_strict_fderiv_at_exp_smul_const' hasStrictFDerivAt_exp_smul_const'
+-/
 
 variable {π}
 
+#print hasStrictDerivAt_exp_smul_const /-
 theorem hasStrictDerivAt_exp_smul_const (x : πΈ) (t : π) :
     HasStrictDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) * x) t :=
   hasStrictDerivAt_exp_smul_const_of_mem_ball _ _ <|
     (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_strict_deriv_at_exp_smul_const hasStrictDerivAt_exp_smul_const
+-/
 
+#print hasStrictDerivAt_exp_smul_const' /-
 theorem hasStrictDerivAt_exp_smul_const' (x : πΈ) (t : π) :
     HasStrictDerivAt (fun u : π => exp π (u β’ x)) (x * exp π (t β’ x)) t :=
   hasStrictDerivAt_exp_smul_const_of_mem_ball' _ _ <|
     (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_strict_deriv_at_exp_smul_const' hasStrictDerivAt_exp_smul_const'
+-/
 
+#print hasDerivAt_exp_smul_const /-
 theorem hasDerivAt_exp_smul_const (x : πΈ) (t : π) :
     HasDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) * x) t :=
   hasDerivAt_exp_smul_const_of_mem_ball _ _ <| (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_deriv_at_exp_smul_const hasDerivAt_exp_smul_const
+-/
 
+#print hasDerivAt_exp_smul_const' /-
 theorem hasDerivAt_exp_smul_const' (x : πΈ) (t : π) :
     HasDerivAt (fun u : π => exp π (u β’ x)) (x * exp π (t β’ x)) t :=
   hasDerivAt_exp_smul_const_of_mem_ball' _ _ <|
     (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_deriv_at_exp_smul_const' hasDerivAt_exp_smul_const'
+-/
 
 end IsROrC
 
mathlib commit https://github.com/leanprover-community/mathlib/commit/31c24aa72e7b3e5ed97a8412470e904f82b81004
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Anatole Dedecker, Eric Wieser
 
 ! This file was ported from Lean 3 source module analysis.special_functions.exponential
-! leanprover-community/mathlib commit e1a18cad9cd462973d760af7de36b05776b8811c
+! leanprover-community/mathlib commit c20927220ef87bb4962ba08bf6da2ce3cf50a6dd
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.Topology.MetricSpace.CauSeqFilter
 /-!
 # Calculus results on exponential in a Banach algebra
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 In this file, we prove basic properties about the derivative of the exponential map `exp π`
 in a Banach algebra `πΈ` over a field `π`. We keep them separate from the main file
 `analysis/normed_space/exponential` in order to minimize dependencies.
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3209ddf94136d36e5e5c624b10b2a347cc9d090
@@ -199,16 +199,20 @@ section DerivROrC
 
 variable {π : Type _} [IsROrC π]
 
+#print hasStrictDerivAt_exp /-
 /-- The exponential map in `π = β` or `π = β` has strict derivative `exp π x` at any point
 `x`. -/
 theorem hasStrictDerivAt_exp {x : π} : HasStrictDerivAt (exp π) (exp π x) x :=
   hasStrictDerivAt_exp_of_mem_ball ((expSeries_radius_eq_top π π).symm βΈ edist_lt_top _ _)
 #align has_strict_deriv_at_exp hasStrictDerivAt_exp
+-/
 
+#print hasDerivAt_exp /-
 /-- The exponential map in `π = β` or `π = β` has derivative `exp π x` at any point `x`. -/
 theorem hasDerivAt_exp {x : π} : HasDerivAt (exp π) (exp π x) x :=
   hasStrictDerivAt_exp.HasDerivAt
 #align has_deriv_at_exp hasDerivAt_exp
+-/
 
 /-- The exponential map in `π = β` or `π = β` has strict derivative `1` at zero. -/
 theorem hasStrictDerivAt_exp_zero : HasStrictDerivAt (exp π) (1 : π) 0 :=
@@ -229,9 +233,11 @@ theorem Complex.exp_eq_exp_β : Complex.exp = exp β :=
   exact tendsto_nhds_unique x.exp'.tendsto_limit (expSeries_div_summable β x).HasSum.tendsto_sum_nat
 #align complex.exp_eq_exp_β Complex.exp_eq_exp_β
 
+#print Real.exp_eq_exp_β /-
 theorem Real.exp_eq_exp_β : Real.exp = exp β := by ext x;
   exact_mod_cast congr_fun Complex.exp_eq_exp_β x
 #align real.exp_eq_exp_β Real.exp_eq_exp_β
+-/
 
 /-! ### Derivative of $\exp (ux)$ by $u$
 
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -70,7 +70,7 @@ variable {π πΈ : Type _} [NontriviallyNormedField π] [NormedRing πΈ] [
 theorem hasStrictFDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π πΈ).radius) :
     HasStrictFDerivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
   by
-  convert(hasFPowerSeriesAt_exp_zero_of_radius_pos h).HasStrictFDerivAt
+  convert (hasFPowerSeriesAt_exp_zero_of_radius_pos h).HasStrictFDerivAt
   ext x
   change x = expSeries π πΈ 1 fun _ => x
   simp [expSeries_apply_eq]
@@ -108,7 +108,7 @@ theorem hasFDerivAt_exp_of_mem_ball [CharZero π] {x : πΈ}
     exact hasFDerivAt_exp_zero_of_radius_pos hpos
   have : βαΆ  h in π (0 : πΈ), h β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius :=
     EMetric.ball_mem_nhds _ hpos
-  filter_upwards [this]with _ hh
+  filter_upwards [this] with _ hh
   rw [exp_add_of_mem_ball hx hh, exp_zero, zero_add, ContinuousLinearMap.id_apply, smul_eq_mul]
   ring
 #align has_fderiv_at_exp_of_mem_ball hasFDerivAt_exp_of_mem_ball
@@ -226,8 +226,7 @@ theorem Complex.exp_eq_exp_β : Complex.exp = exp β :=
   by
   refine' funext fun x => _
   rw [Complex.exp, exp_eq_tsum_div]
-  exact
-    tendsto_nhds_unique x.exp'.tendsto_limit (exp_series_div_summable β x).HasSum.tendsto_sum_nat
+  exact tendsto_nhds_unique x.exp'.tendsto_limit (expSeries_div_summable β x).HasSum.tendsto_sum_nat
 #align complex.exp_eq_exp_β Complex.exp_eq_exp_β
 
 theorem Real.exp_eq_exp_β : Real.exp = exp β := by ext x;
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -70,7 +70,7 @@ variable {π πΈ : Type _} [NontriviallyNormedField π] [NormedRing πΈ] [
 theorem hasStrictFDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π πΈ).radius) :
     HasStrictFDerivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
   by
-  convert(hasFpowerSeriesAtExpZeroOfRadiusPos h).HasStrictFDerivAt
+  convert(hasFPowerSeriesAt_exp_zero_of_radius_pos h).HasStrictFDerivAt
   ext x
   change x = expSeries π πΈ 1 fun _ => x
   simp [expSeries_apply_eq]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -58,7 +58,7 @@ We prove most result for an arbitrary field `π`, and then specialize to `π
 
 open Filter IsROrC ContinuousMultilinearMap NormedField Asymptotics
 
-open Nat Topology BigOperators ENNReal
+open scoped Nat Topology BigOperators ENNReal
 
 section AnyFieldAnyAlgebra
 
@@ -262,7 +262,7 @@ variable {π π πΈ : Type _}
 
 variable (π)
 
-open Topology
+open scoped Topology
 
 open Asymptotics Filter
 
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -230,9 +230,7 @@ theorem Complex.exp_eq_exp_β : Complex.exp = exp β :=
     tendsto_nhds_unique x.exp'.tendsto_limit (exp_series_div_summable β x).HasSum.tendsto_sum_nat
 #align complex.exp_eq_exp_β Complex.exp_eq_exp_β
 
-theorem Real.exp_eq_exp_β : Real.exp = exp β :=
-  by
-  ext x
+theorem Real.exp_eq_exp_β : Real.exp = exp β := by ext x;
   exact_mod_cast congr_fun Complex.exp_eq_exp_β x
 #align real.exp_eq_exp_β Real.exp_eq_exp_β
 
mathlib commit https://github.com/leanprover-community/mathlib/commit/e1a18cad9cd462973d760af7de36b05776b8811c
@@ -1,10 +1,10 @@
 /-
 Copyright (c) 2021 Anatole Dedecker. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
-Authors: Anatole Dedecker
+Authors: Anatole Dedecker, Eric Wieser
 
 ! This file was ported from Lean 3 source module analysis.special_functions.exponential
-! leanprover-community/mathlib commit 2c1d8ca2812b64f88992a5294ea3dba144755cd1
+! leanprover-community/mathlib commit e1a18cad9cd462973d760af7de36b05776b8811c
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -29,17 +29,24 @@ We prove most result for an arbitrary field `π`, and then specialize to `π
   `1 : πΈ βL[π] πΈ` at zero, as long as it converges on a neighborhood of zero
   (see also `has_strict_deriv_at_exp_zero_of_radius_pos` for the case `πΈ = π`)
 - `has_strict_fderiv_at_exp_of_lt_radius` : if `π` has characteristic zero and `πΈ` is commutative,
-  then given a point `x` in the disk of convergence, `exp π` as strict FrΓ©chet-derivative
+  then given a point `x` in the disk of convergence, `exp π` has strict FrΓ©chet-derivative
   `exp π x β’ 1 : πΈ βL[π] πΈ` at x (see also `has_strict_deriv_at_exp_of_lt_radius` for the case
   `πΈ = π`)
+- `has_strict_fderiv_at_exp_smul_const_of_mem_ball`: even when `πΈ` is non-commutative, if we have
+  an intermediate algebra `π` which is commutative, then the function `(u : π) β¦ exp π (u β’ x)`,
+  still has strict FrΓ©chet-derivative `exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x` at `t` if
+  `t β’ x` is in the radius of convergence.
 
 ### `π = β` or `π = β`
 
 - `has_strict_fderiv_at_exp_zero` : `exp π` has strict FrΓ©chet-derivative `1 : πΈ βL[π] πΈ` at zero
   (see also `has_strict_deriv_at_exp_zero` for the case `πΈ = π`)
-- `has_strict_fderiv_at_exp` : if `πΈ` is commutative, then given any point `x`, `exp π` as strict
+- `has_strict_fderiv_at_exp` : if `πΈ` is commutative, then given any point `x`, `exp π` has strict
   FrΓ©chet-derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at x (see also `has_strict_deriv_at_exp` for the
   case `πΈ = π`)
+- `has_strict_fderiv_at_exp_smul_const`: even when `πΈ` is non-commutative, if we have
+  an intermediate algebra `π` which is commutative, then the function `(u : π) β¦ exp π (u β’ x)`
+  still has strict FrΓ©chet-derivative `exp π (t β’ x) β’ (1 : πΈ βL[π] πΈ).smul_right x` at `t`.
 
 ### Compatibilty with `real.exp` and `complex.exp`
 
@@ -229,3 +236,219 @@ theorem Real.exp_eq_exp_β : Real.exp = exp β :=
   exact_mod_cast congr_fun Complex.exp_eq_exp_β x
 #align real.exp_eq_exp_β Real.exp_eq_exp_β
 
+/-! ### Derivative of $\exp (ux)$ by $u$
+
+Note that since for `x : πΈ` we have `normed_ring πΈ` not `normed_comm_ring πΈ`, we cannot deduce
+these results from `has_fderiv_at_exp_of_mem_ball` applied to the algebra `πΈ`.
+
+One possible solution for that would be to apply `has_fderiv_at_exp_of_mem_ball` to the
+commutative algebra `algebra.elemental_algebra π x`. Unfortunately we don't have all the required
+API, so we leave that to a future refactor (see leanprover-community/mathlib#19062 for discussion).
+
+We could also go the other way around and deduce `has_fderiv_at_exp_of_mem_ball` from
+`has_fderiv_at_exp_smul_const_of_mem_ball` applied to `π := πΈ`, `x := (1 : πΈ)`, and `t := x`.
+However, doing so would make the aformentioned `elemental_algebra` refactor harder, so for now we
+just prove these two lemmas independently.
+
+A last strategy would be to deduce everything from the more general non-commutative case,
+$$\frac{d}{dt}e^{x(t)} = \int_0^1 e^{sx(t)} \left(\frac{d}{dt}e^{x(t)}\right) e^{(1-s)x(t)} ds$$
+but this is harder to prove, and typically is shown by going via these results first.
+
+TODO: prove this result too!
+-/
+
+
+section exp_smul
+
+variable {π π πΈ : Type _}
+
+variable (π)
+
+open Topology
+
+open Asymptotics Filter
+
+section MemBall
+
+variable [NontriviallyNormedField π] [CharZero π]
+
+variable [NormedCommRing π] [NormedRing πΈ]
+
+variable [NormedSpace π π] [NormedAlgebra π πΈ] [Algebra π πΈ] [ContinuousSMul π πΈ]
+
+variable [IsScalarTower π π πΈ]
+
+variable [CompleteSpace πΈ]
+
+theorem hasFDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
+    (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
+    HasFDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x) t :=
+  by
+  -- TODO: prove this via `has_fderiv_at_exp_of_mem_ball` using the commutative ring
+  -- `algebra.elemental_algebra π x`. See leanprover-community/mathlib#19062 for discussion.
+  have hpos : 0 < (expSeries π πΈ).radius := (zero_le _).trans_lt htx
+  rw [hasFDerivAt_iff_isLittleO_nhds_zero]
+  suffices
+    (fun h =>
+        exp π (t β’ x) *
+          (exp π ((0 + h) β’ x) - exp π ((0 : π) β’ x) - ((1 : π βL[π] π).smul_right x) h)) =αΆ [π 0]
+      fun h =>
+      exp π ((t + h) β’ x) - exp π (t β’ x) - (exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x) h
+    by
+    refine' (is_o.const_mul_left _ _).congr' this (eventually_eq.refl _ _)
+    rw [β
+      @hasFDerivAt_iff_isLittleO_nhds_zero _ _ _ _ _ _ _ _ (fun u => exp π (u β’ x))
+        ((1 : π βL[π] π).smul_right x) 0]
+    have : HasFDerivAt (exp π) (1 : πΈ βL[π] πΈ) ((1 : π βL[π] π).smul_right x 0) :=
+      by
+      rw [ContinuousLinearMap.smulRight_apply, ContinuousLinearMap.one_apply, zero_smul]
+      exact hasFDerivAt_exp_zero_of_radius_pos hpos
+    exact this.comp 0 ((1 : π βL[π] π).smul_right x).HasFDerivAt
+  have : tendsto (fun h : π => h β’ x) (π 0) (π 0) :=
+    by
+    rw [β zero_smul π x]
+    exact tendsto_id.smul_const x
+  have : βαΆ  h in π (0 : π), h β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius :=
+    this.eventually (EMetric.ball_mem_nhds _ hpos)
+  filter_upwards [this]
+  intro h hh
+  have : Commute (t β’ x) (h β’ x) := ((Commute.refl x).smul_left t).smul_right h
+  rw [add_smul t h, exp_add_of_commute_of_mem_ball this htx hh, zero_add, zero_smul, exp_zero,
+    ContinuousLinearMap.smulRight_apply, ContinuousLinearMap.one_apply,
+    ContinuousLinearMap.smul_apply, ContinuousLinearMap.smulRight_apply,
+    ContinuousLinearMap.one_apply, smul_eq_mul, mul_sub_left_distrib, mul_sub_left_distrib, mul_one]
+#align has_fderiv_at_exp_smul_const_of_mem_ball hasFDerivAt_exp_smul_const_of_mem_ball
+
+theorem hasFDerivAt_exp_smul_const_of_mem_ball' (x : πΈ) (t : π)
+    (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
+    HasFDerivAt (fun u : π => exp π (u β’ x))
+      (((1 : π βL[π] π).smul_right x).smul_right (exp π (t β’ x))) t :=
+  by
+  convert hasFDerivAt_exp_smul_const_of_mem_ball π _ _ htx using 1
+  ext t'
+  show Commute (t' β’ x) (exp π (t β’ x))
+  exact (((Commute.refl x).smul_left t').smul_right t).exp_right π
+#align has_fderiv_at_exp_smul_const_of_mem_ball' hasFDerivAt_exp_smul_const_of_mem_ball'
+
+theorem hasStrictFDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
+    (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
+    HasStrictFDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x)
+      t :=
+  let β¨p, hpβ© := analyticAt_exp_of_mem_ball (t β’ x) htx
+  have derivβ : HasStrictFDerivAt (fun u : π => exp π (u β’ x)) _ t :=
+    hp.HasStrictFDerivAt.comp t ((ContinuousLinearMap.id π π).smul_right x).HasStrictFDerivAt
+  have derivβ : HasFDerivAt (fun u : π => exp π (u β’ x)) _ t :=
+    hasFDerivAt_exp_smul_const_of_mem_ball π x t htx
+  derivβ.HasFDerivAt.unique derivβ βΈ derivβ
+#align has_strict_fderiv_at_exp_smul_const_of_mem_ball hasStrictFDerivAt_exp_smul_const_of_mem_ball
+
+theorem hasStrictFDerivAt_exp_smul_const_of_mem_ball' (x : πΈ) (t : π)
+    (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
+    HasStrictFDerivAt (fun u : π => exp π (u β’ x))
+      (((1 : π βL[π] π).smul_right x).smul_right (exp π (t β’ x))) t :=
+  by
+  let β¨p, hpβ© := analyticAt_exp_of_mem_ball (t β’ x) htx
+  convert hasStrictFDerivAt_exp_smul_const_of_mem_ball π _ _ htx using 1
+  ext t'
+  show Commute (t' β’ x) (exp π (t β’ x))
+  exact (((Commute.refl x).smul_left t').smul_right t).exp_right π
+#align has_strict_fderiv_at_exp_smul_const_of_mem_ball' hasStrictFDerivAt_exp_smul_const_of_mem_ball'
+
+variable {π}
+
+theorem hasStrictDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
+    (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
+    HasStrictDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) * x) t := by
+  simpa using (hasStrictFDerivAt_exp_smul_const_of_mem_ball π x t htx).HasStrictDerivAt
+#align has_strict_deriv_at_exp_smul_const_of_mem_ball hasStrictDerivAt_exp_smul_const_of_mem_ball
+
+theorem hasStrictDerivAt_exp_smul_const_of_mem_ball' (x : πΈ) (t : π)
+    (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
+    HasStrictDerivAt (fun u : π => exp π (u β’ x)) (x * exp π (t β’ x)) t := by
+  simpa using (hasStrictFDerivAt_exp_smul_const_of_mem_ball' π x t htx).HasStrictDerivAt
+#align has_strict_deriv_at_exp_smul_const_of_mem_ball' hasStrictDerivAt_exp_smul_const_of_mem_ball'
+
+theorem hasDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
+    (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
+    HasDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) * x) t :=
+  (hasStrictDerivAt_exp_smul_const_of_mem_ball x t htx).HasDerivAt
+#align has_deriv_at_exp_smul_const_of_mem_ball hasDerivAt_exp_smul_const_of_mem_ball
+
+theorem hasDerivAt_exp_smul_const_of_mem_ball' (x : πΈ) (t : π)
+    (htx : t β’ x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
+    HasDerivAt (fun u : π => exp π (u β’ x)) (x * exp π (t β’ x)) t :=
+  (hasStrictDerivAt_exp_smul_const_of_mem_ball' x t htx).HasDerivAt
+#align has_deriv_at_exp_smul_const_of_mem_ball' hasDerivAt_exp_smul_const_of_mem_ball'
+
+end MemBall
+
+section IsROrC
+
+variable [IsROrC π]
+
+variable [NormedCommRing π] [NormedRing πΈ]
+
+variable [NormedAlgebra π π] [NormedAlgebra π πΈ] [Algebra π πΈ] [ContinuousSMul π πΈ]
+
+variable [IsScalarTower π π πΈ]
+
+variable [CompleteSpace πΈ]
+
+variable (π)
+
+theorem hasFDerivAt_exp_smul_const (x : πΈ) (t : π) :
+    HasFDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x) t :=
+  hasFDerivAt_exp_smul_const_of_mem_ball π _ _ <|
+    (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
+#align has_fderiv_at_exp_smul_const hasFDerivAt_exp_smul_const
+
+theorem hasFDerivAt_exp_smul_const' (x : πΈ) (t : π) :
+    HasFDerivAt (fun u : π => exp π (u β’ x))
+      (((1 : π βL[π] π).smul_right x).smul_right (exp π (t β’ x))) t :=
+  hasFDerivAt_exp_smul_const_of_mem_ball' π _ _ <|
+    (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
+#align has_fderiv_at_exp_smul_const' hasFDerivAt_exp_smul_const'
+
+theorem hasStrictFDerivAt_exp_smul_const (x : πΈ) (t : π) :
+    HasStrictFDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) β’ (1 : π βL[π] π).smul_right x)
+      t :=
+  hasStrictFDerivAt_exp_smul_const_of_mem_ball π _ _ <|
+    (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
+#align has_strict_fderiv_at_exp_smul_const hasStrictFDerivAt_exp_smul_const
+
+theorem hasStrictFDerivAt_exp_smul_const' (x : πΈ) (t : π) :
+    HasStrictFDerivAt (fun u : π => exp π (u β’ x))
+      (((1 : π βL[π] π).smul_right x).smul_right (exp π (t β’ x))) t :=
+  hasStrictFDerivAt_exp_smul_const_of_mem_ball' π _ _ <|
+    (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
+#align has_strict_fderiv_at_exp_smul_const' hasStrictFDerivAt_exp_smul_const'
+
+variable {π}
+
+theorem hasStrictDerivAt_exp_smul_const (x : πΈ) (t : π) :
+    HasStrictDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) * x) t :=
+  hasStrictDerivAt_exp_smul_const_of_mem_ball _ _ <|
+    (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
+#align has_strict_deriv_at_exp_smul_const hasStrictDerivAt_exp_smul_const
+
+theorem hasStrictDerivAt_exp_smul_const' (x : πΈ) (t : π) :
+    HasStrictDerivAt (fun u : π => exp π (u β’ x)) (x * exp π (t β’ x)) t :=
+  hasStrictDerivAt_exp_smul_const_of_mem_ball' _ _ <|
+    (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
+#align has_strict_deriv_at_exp_smul_const' hasStrictDerivAt_exp_smul_const'
+
+theorem hasDerivAt_exp_smul_const (x : πΈ) (t : π) :
+    HasDerivAt (fun u : π => exp π (u β’ x)) (exp π (t β’ x) * x) t :=
+  hasDerivAt_exp_smul_const_of_mem_ball _ _ <| (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
+#align has_deriv_at_exp_smul_const hasDerivAt_exp_smul_const
+
+theorem hasDerivAt_exp_smul_const' (x : πΈ) (t : π) :
+    HasDerivAt (fun u : π => exp π (u β’ x)) (x * exp π (t β’ x)) t :=
+  hasDerivAt_exp_smul_const_of_mem_ball' _ _ <|
+    (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
+#align has_deriv_at_exp_smul_const' hasDerivAt_exp_smul_const'
+
+end IsROrC
+
+end exp_smul
+
mathlib commit https://github.com/leanprover-community/mathlib/commit/33c67ae661dd8988516ff7f247b0be3018cdd952
@@ -60,21 +60,21 @@ variable {π πΈ : Type _} [NontriviallyNormedField π] [NormedRing πΈ] [
 
 /-- The exponential in a Banach-algebra `πΈ` over a normed field `π` has strict FrΓ©chet-derivative
 `1 : πΈ βL[π] πΈ` at zero, as long as it converges on a neighborhood of zero. -/
-theorem hasStrictFderivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π πΈ).radius) :
-    HasStrictFderivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
+theorem hasStrictFDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π πΈ).radius) :
+    HasStrictFDerivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
   by
-  convert(hasFpowerSeriesAtExpZeroOfRadiusPos h).HasStrictFderivAt
+  convert(hasFpowerSeriesAtExpZeroOfRadiusPos h).HasStrictFDerivAt
   ext x
   change x = expSeries π πΈ 1 fun _ => x
   simp [expSeries_apply_eq]
-#align has_strict_fderiv_at_exp_zero_of_radius_pos hasStrictFderivAt_exp_zero_of_radius_pos
+#align has_strict_fderiv_at_exp_zero_of_radius_pos hasStrictFDerivAt_exp_zero_of_radius_pos
 
 /-- The exponential in a Banach-algebra `πΈ` over a normed field `π` has FrΓ©chet-derivative
 `1 : πΈ βL[π] πΈ` at zero, as long as it converges on a neighborhood of zero. -/
-theorem hasFderivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π πΈ).radius) :
-    HasFderivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
-  (hasStrictFderivAt_exp_zero_of_radius_pos h).HasFderivAt
-#align has_fderiv_at_exp_zero_of_radius_pos hasFderivAt_exp_zero_of_radius_pos
+theorem hasFDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π πΈ).radius) :
+    HasFDerivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
+  (hasStrictFDerivAt_exp_zero_of_radius_pos h).HasFDerivAt
+#align has_fderiv_at_exp_zero_of_radius_pos hasFDerivAt_exp_zero_of_radius_pos
 
 end AnyFieldAnyAlgebra
 
@@ -86,35 +86,35 @@ variable {π πΈ : Type _} [NontriviallyNormedField π] [NormedCommRing 
 /-- The exponential map in a commutative Banach-algebra `πΈ` over a normed field `π` of
 characteristic zero has FrΓ©chet-derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at any point `x` in the
 disk of convergence. -/
-theorem hasFderivAt_exp_of_mem_ball [CharZero π] {x : πΈ}
+theorem hasFDerivAt_exp_of_mem_ball [CharZero π] {x : πΈ}
     (hx : x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
-    HasFderivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
+    HasFDerivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
   by
   have hpos : 0 < (expSeries π πΈ).radius := (zero_le _).trans_lt hx
-  rw [hasFderivAt_iff_isLittleO_nhds_zero]
+  rw [hasFDerivAt_iff_isLittleO_nhds_zero]
   suffices
     (fun h => exp π x * (exp π (0 + h) - exp π 0 - ContinuousLinearMap.id π πΈ h)) =αΆ [π 0] fun h =>
       exp π (x + h) - exp π x - exp π x β’ ContinuousLinearMap.id π πΈ h
     by
     refine' (is_o.const_mul_left _ _).congr' this (eventually_eq.refl _ _)
-    rw [β hasFderivAt_iff_isLittleO_nhds_zero]
-    exact hasFderivAt_exp_zero_of_radius_pos hpos
+    rw [β hasFDerivAt_iff_isLittleO_nhds_zero]
+    exact hasFDerivAt_exp_zero_of_radius_pos hpos
   have : βαΆ  h in π (0 : πΈ), h β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius :=
     EMetric.ball_mem_nhds _ hpos
   filter_upwards [this]with _ hh
   rw [exp_add_of_mem_ball hx hh, exp_zero, zero_add, ContinuousLinearMap.id_apply, smul_eq_mul]
   ring
-#align has_fderiv_at_exp_of_mem_ball hasFderivAt_exp_of_mem_ball
+#align has_fderiv_at_exp_of_mem_ball hasFDerivAt_exp_of_mem_ball
 
 /-- The exponential map in a commutative Banach-algebra `πΈ` over a normed field `π` of
 characteristic zero has strict FrΓ©chet-derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at any point `x` in
 the disk of convergence. -/
-theorem hasStrictFderivAt_exp_of_mem_ball [CharZero π] {x : πΈ}
+theorem hasStrictFDerivAt_exp_of_mem_ball [CharZero π] {x : πΈ}
     (hx : x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
-    HasStrictFderivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
+    HasStrictFDerivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
   let β¨p, hpβ© := analyticAt_exp_of_mem_ball x hx
-  hp.HasFderivAt.unique (hasFderivAt_exp_of_mem_ball hx) βΈ hp.HasStrictFderivAt
-#align has_strict_fderiv_at_exp_of_mem_ball hasStrictFderivAt_exp_of_mem_ball
+  hp.HasFDerivAt.unique (hasFDerivAt_exp_of_mem_ball hx) βΈ hp.HasStrictFDerivAt
+#align has_strict_fderiv_at_exp_of_mem_ball hasStrictFDerivAt_exp_of_mem_ball
 
 end AnyFieldCommAlgebra
 
@@ -126,7 +126,7 @@ variable {π : Type _} [NontriviallyNormedField π] [CompleteSpace π]
 `exp π x` at any point `x` in the disk of convergence. -/
 theorem hasStrictDerivAt_exp_of_mem_ball [CharZero π] {x : π}
     (hx : x β EMetric.ball (0 : π) (expSeries π π).radius) : HasStrictDerivAt (exp π) (exp π x) x :=
-  by simpa using (hasStrictFderivAt_exp_of_mem_ball hx).HasStrictDerivAt
+  by simpa using (hasStrictFDerivAt_exp_of_mem_ball hx).HasStrictDerivAt
 #align has_strict_deriv_at_exp_of_mem_ball hasStrictDerivAt_exp_of_mem_ball
 
 /-- The exponential map in a complete normed field `π` of characteristic zero has derivative
@@ -140,7 +140,7 @@ theorem hasDerivAt_exp_of_mem_ball [CharZero π] {x : π}
 `1` at zero, as long as it converges on a neighborhood of zero. -/
 theorem hasStrictDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π π).radius) :
     HasStrictDerivAt (exp π) (1 : π) 0 :=
-  (hasStrictFderivAt_exp_zero_of_radius_pos h).HasStrictDerivAt
+  (hasStrictFDerivAt_exp_zero_of_radius_pos h).HasStrictDerivAt
 #align has_strict_deriv_at_exp_zero_of_radius_pos hasStrictDerivAt_exp_zero_of_radius_pos
 
 /-- The exponential map in a complete normed field `π` of characteristic zero has derivative
@@ -158,15 +158,15 @@ variable {π πΈ : Type _} [IsROrC π] [NormedRing πΈ] [NormedAlgebra 
 
 /-- The exponential in a Banach-algebra `πΈ` over `π = β` or `π = β` has strict FrΓ©chet-derivative
 `1 : πΈ βL[π] πΈ` at zero. -/
-theorem hasStrictFderivAt_exp_zero : HasStrictFderivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
-  hasStrictFderivAt_exp_zero_of_radius_pos (expSeries_radius_pos π πΈ)
-#align has_strict_fderiv_at_exp_zero hasStrictFderivAt_exp_zero
+theorem hasStrictFDerivAt_exp_zero : HasStrictFDerivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
+  hasStrictFDerivAt_exp_zero_of_radius_pos (expSeries_radius_pos π πΈ)
+#align has_strict_fderiv_at_exp_zero hasStrictFDerivAt_exp_zero
 
 /-- The exponential in a Banach-algebra `πΈ` over `π = β` or `π = β` has FrΓ©chet-derivative
 `1 : πΈ βL[π] πΈ` at zero. -/
-theorem hasFderivAt_exp_zero : HasFderivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
-  hasStrictFderivAt_exp_zero.HasFderivAt
-#align has_fderiv_at_exp_zero hasFderivAt_exp_zero
+theorem hasFDerivAt_exp_zero : HasFDerivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
+  hasStrictFDerivAt_exp_zero.HasFDerivAt
+#align has_fderiv_at_exp_zero hasFDerivAt_exp_zero
 
 end IsROrCAnyAlgebra
 
@@ -176,15 +176,15 @@ variable {π πΈ : Type _} [IsROrC π] [NormedCommRing πΈ] [NormedAlgebra
 
 /-- The exponential map in a commutative Banach-algebra `πΈ` over `π = β` or `π = β` has strict
 FrΓ©chet-derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at any point `x`. -/
-theorem hasStrictFderivAt_exp {x : πΈ} : HasStrictFderivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
-  hasStrictFderivAt_exp_of_mem_ball ((expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _)
-#align has_strict_fderiv_at_exp hasStrictFderivAt_exp
+theorem hasStrictFDerivAt_exp {x : πΈ} : HasStrictFDerivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
+  hasStrictFDerivAt_exp_of_mem_ball ((expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _)
+#align has_strict_fderiv_at_exp hasStrictFDerivAt_exp
 
 /-- The exponential map in a commutative Banach-algebra `πΈ` over `π = β` or `π = β` has
 FrΓ©chet-derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at any point `x`. -/
-theorem hasFderivAt_exp {x : πΈ} : HasFderivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
-  hasStrictFderivAt_exp.HasFderivAt
-#align has_fderiv_at_exp hasFderivAt_exp
+theorem hasFDerivAt_exp {x : πΈ} : HasFDerivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
+  hasStrictFDerivAt_exp.HasFDerivAt
+#align has_fderiv_at_exp hasFDerivAt_exp
 
 end IsROrCCommAlgebra
 
mathlib commit https://github.com/leanprover-community/mathlib/commit/36b8aa61ea7c05727161f96a0532897bd72aedab
@@ -4,13 +4,12 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Anatole Dedecker
 
 ! This file was ported from Lean 3 source module analysis.special_functions.exponential
-! leanprover-community/mathlib commit ccf84e0d918668460a34aa19d02fe2e0e2286da0
+! leanprover-community/mathlib commit 2c1d8ca2812b64f88992a5294ea3dba144755cd1
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
 import Mathbin.Analysis.NormedSpace.Exponential
 import Mathbin.Analysis.Calculus.FderivAnalytic
-import Mathbin.Data.Complex.Exponential
 import Mathbin.Topology.MetricSpace.CauSeqFilter
 
 /-!
mathlib commit https://github.com/leanprover-community/mathlib/commit/039ef89bef6e58b32b62898dd48e9d1a4312bb65
@@ -92,13 +92,13 @@ theorem hasFderivAt_exp_of_mem_ball [CharZero π] {x : πΈ}
     HasFderivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
   by
   have hpos : 0 < (expSeries π πΈ).radius := (zero_le _).trans_lt hx
-  rw [hasFderivAt_iff_isOCat_nhds_zero]
+  rw [hasFderivAt_iff_isLittleO_nhds_zero]
   suffices
     (fun h => exp π x * (exp π (0 + h) - exp π 0 - ContinuousLinearMap.id π πΈ h)) =αΆ [π 0] fun h =>
       exp π (x + h) - exp π x - exp π x β’ ContinuousLinearMap.id π πΈ h
     by
     refine' (is_o.const_mul_left _ _).congr' this (eventually_eq.refl _ _)
-    rw [β hasFderivAt_iff_isOCat_nhds_zero]
+    rw [β hasFderivAt_iff_isLittleO_nhds_zero]
     exact hasFderivAt_exp_zero_of_radius_pos hpos
   have : βαΆ  h in π (0 : πΈ), h β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius :=
     EMetric.ball_mem_nhds _ hpos
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -64,7 +64,7 @@ variable {π πΈ : Type _} [NontriviallyNormedField π] [NormedRing πΈ] [
 theorem hasStrictFderivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π πΈ).radius) :
     HasStrictFderivAt (exp π) (1 : πΈ βL[π] πΈ) 0 :=
   by
-  convert (hasFpowerSeriesAtExpZeroOfRadiusPos h).HasStrictFderivAt
+  convert(hasFpowerSeriesAtExpZeroOfRadiusPos h).HasStrictFderivAt
   ext x
   change x = expSeries π πΈ 1 fun _ => x
   simp [expSeries_apply_eq]
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -88,7 +88,7 @@ variable {π πΈ : Type _} [NontriviallyNormedField π] [NormedCommRing 
 characteristic zero has FrΓ©chet-derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at any point `x` in the
 disk of convergence. -/
 theorem hasFderivAt_exp_of_mem_ball [CharZero π] {x : πΈ}
-    (hx : x β Emetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
+    (hx : x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
     HasFderivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
   by
   have hpos : 0 < (expSeries π πΈ).radius := (zero_le _).trans_lt hx
@@ -100,8 +100,8 @@ theorem hasFderivAt_exp_of_mem_ball [CharZero π] {x : πΈ}
     refine' (is_o.const_mul_left _ _).congr' this (eventually_eq.refl _ _)
     rw [β hasFderivAt_iff_isOCat_nhds_zero]
     exact hasFderivAt_exp_zero_of_radius_pos hpos
-  have : βαΆ  h in π (0 : πΈ), h β Emetric.ball (0 : πΈ) (expSeries π πΈ).radius :=
-    Emetric.ball_mem_nhds _ hpos
+  have : βαΆ  h in π (0 : πΈ), h β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius :=
+    EMetric.ball_mem_nhds _ hpos
   filter_upwards [this]with _ hh
   rw [exp_add_of_mem_ball hx hh, exp_zero, zero_add, ContinuousLinearMap.id_apply, smul_eq_mul]
   ring
@@ -111,7 +111,7 @@ theorem hasFderivAt_exp_of_mem_ball [CharZero π] {x : πΈ}
 characteristic zero has strict FrΓ©chet-derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at any point `x` in
 the disk of convergence. -/
 theorem hasStrictFderivAt_exp_of_mem_ball [CharZero π] {x : πΈ}
-    (hx : x β Emetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
+    (hx : x β EMetric.ball (0 : πΈ) (expSeries π πΈ).radius) :
     HasStrictFderivAt (exp π) (exp π x β’ 1 : πΈ βL[π] πΈ) x :=
   let β¨p, hpβ© := analyticAt_exp_of_mem_ball x hx
   hp.HasFderivAt.unique (hasFderivAt_exp_of_mem_ball hx) βΈ hp.HasStrictFderivAt
@@ -126,14 +126,14 @@ variable {π : Type _} [NontriviallyNormedField π] [CompleteSpace π]
 /-- The exponential map in a complete normed field `π` of characteristic zero has strict derivative
 `exp π x` at any point `x` in the disk of convergence. -/
 theorem hasStrictDerivAt_exp_of_mem_ball [CharZero π] {x : π}
-    (hx : x β Emetric.ball (0 : π) (expSeries π π).radius) : HasStrictDerivAt (exp π) (exp π x) x :=
+    (hx : x β EMetric.ball (0 : π) (expSeries π π).radius) : HasStrictDerivAt (exp π) (exp π x) x :=
   by simpa using (hasStrictFderivAt_exp_of_mem_ball hx).HasStrictDerivAt
 #align has_strict_deriv_at_exp_of_mem_ball hasStrictDerivAt_exp_of_mem_ball
 
 /-- The exponential map in a complete normed field `π` of characteristic zero has derivative
 `exp π x` at any point `x` in the disk of convergence. -/
 theorem hasDerivAt_exp_of_mem_ball [CharZero π] {x : π}
-    (hx : x β Emetric.ball (0 : π) (expSeries π π).radius) : HasDerivAt (exp π) (exp π x) x :=
+    (hx : x β EMetric.ball (0 : π) (expSeries π π).radius) : HasDerivAt (exp π) (exp π x) x :=
   (hasStrictDerivAt_exp_of_mem_ball hx).HasDerivAt
 #align has_deriv_at_exp_of_mem_ball hasDerivAt_exp_of_mem_ball
 
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -52,7 +52,7 @@ We prove most result for an arbitrary field `π`, and then specialize to `π
 
 open Filter IsROrC ContinuousMultilinearMap NormedField Asymptotics
 
-open Nat Topology BigOperators Ennreal
+open Nat Topology BigOperators ENNReal
 
 section AnyFieldAnyAlgebra
 
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
IsROrC to RCLike (#10819)
IsROrC contains data, which goes against the expectation that classes prefixed with Is are prop-valued. People have been complaining about this on and off, so this PR renames IsROrC to RCLike.
@@ -53,7 +53,7 @@ We prove most results for an arbitrary field `π`, and then specialize to `
 -/
 
 
-open Filter IsROrC ContinuousMultilinearMap NormedField NormedSpace Asymptotics
+open Filter RCLike ContinuousMultilinearMap NormedField NormedSpace Asymptotics
 
 open scoped Nat Topology BigOperators ENNReal
 
@@ -153,9 +153,9 @@ theorem hasDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π π).radius)
 
 end deriv
 
-section IsROrCAnyAlgebra
+section RCLikeAnyAlgebra
 
-variable {π πΈ : Type*} [IsROrC π] [NormedRing πΈ] [NormedAlgebra π πΈ] [CompleteSpace πΈ]
+variable {π πΈ : Type*} [RCLike π] [NormedRing πΈ] [NormedAlgebra π πΈ] [CompleteSpace πΈ]
 
 /-- The exponential in a Banach algebra `πΈ` over `π = β` or `π = β` has strict FrΓ©chet derivative
 `1 : πΈ βL[π] πΈ` at zero. -/
@@ -169,11 +169,11 @@ theorem hasFDerivAt_exp_zero : HasFDerivAt (exp π) (1 : πΈ βL[π] πΈ)
   hasStrictFDerivAt_exp_zero.hasFDerivAt
 #align has_fderiv_at_exp_zero hasFDerivAt_exp_zero
 
-end IsROrCAnyAlgebra
+end RCLikeAnyAlgebra
 
-section IsROrCCommAlgebra
+section RCLikeCommAlgebra
 
-variable {π πΈ : Type*} [IsROrC π] [NormedCommRing πΈ] [NormedAlgebra π πΈ] [CompleteSpace πΈ]
+variable {π πΈ : Type*} [RCLike π] [NormedCommRing πΈ] [NormedAlgebra π πΈ] [CompleteSpace πΈ]
 
 /-- The exponential map in a commutative Banach algebra `πΈ` over `π = β` or `π = β` has strict
 FrΓ©chet derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at any point `x`. -/
@@ -187,11 +187,11 @@ theorem hasFDerivAt_exp {x : πΈ} : HasFDerivAt (exp π) (exp π x β’ (1 :
   hasStrictFDerivAt_exp.hasFDerivAt
 #align has_fderiv_at_exp hasFDerivAt_exp
 
-end IsROrCCommAlgebra
+end RCLikeCommAlgebra
 
-section DerivROrC
+section DerivRCLike
 
-variable {π : Type*} [IsROrC π]
+variable {π : Type*} [RCLike π]
 
 /-- The exponential map in `π = β` or `π = β` has strict derivative `exp π x` at any point
 `x`. -/
@@ -214,7 +214,7 @@ theorem hasDerivAt_exp_zero : HasDerivAt (exp π) (1 : π) 0 :=
   hasStrictDerivAt_exp_zero.hasDerivAt
 #align has_deriv_at_exp_zero hasDerivAt_exp_zero
 
-end DerivROrC
+end DerivRCLike
 
 theorem Complex.exp_eq_exp_β : Complex.exp = NormedSpace.exp β := by
   refine' funext fun x => _
@@ -358,9 +358,9 @@ theorem hasDerivAt_exp_smul_const_of_mem_ball' (x : πΈ) (t : π)
 
 end MemBall
 
-section IsROrC
+section RCLike
 
-variable [IsROrC π]
+variable [RCLike π]
 variable [NormedCommRing π] [NormedRing πΈ]
 variable [NormedAlgebra π π] [NormedAlgebra π πΈ] [Algebra π πΈ] [ContinuousSMul π πΈ]
 variable [IsScalarTower π π πΈ]
@@ -418,6 +418,6 @@ theorem hasDerivAt_exp_smul_const' (x : πΈ) (t : π) :
     (expSeries_radius_eq_top π πΈ).symm βΈ edist_lt_top _ _
 #align has_deriv_at_exp_smul_const' hasDerivAt_exp_smul_const'
 
-end IsROrC
+end RCLike
 
 end exp_smul
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
  for filename in files:
    if filename.endswith('.lean'):
      file_path = os.path.join(dir_path, filename)
      # Open the file and read its contents
      with open(file_path, 'r') as file:
        content = file.read()
      # Use a regular expression to replace sequences of "variable" lines separated by empty lines
      # with sequences without empty lines
      modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
@@ -252,7 +252,6 @@ TODO: prove this result too!
 section exp_smul
 
 variable {π π πΈ : Type*}
-
 variable (π)
 
 open scoped Topology
@@ -262,13 +261,9 @@ open Asymptotics Filter
 section MemBall
 
 variable [NontriviallyNormedField π] [CharZero π]
-
 variable [NormedCommRing π] [NormedRing πΈ]
-
 variable [NormedSpace π π] [NormedAlgebra π πΈ] [Algebra π πΈ] [ContinuousSMul π πΈ]
-
 variable [IsScalarTower π π πΈ]
-
 variable [CompleteSpace πΈ]
 
 theorem hasFDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
@@ -366,13 +361,9 @@ end MemBall
 section IsROrC
 
 variable [IsROrC π]
-
 variable [NormedCommRing π] [NormedRing πΈ]
-
 variable [NormedAlgebra π π] [NormedAlgebra π πΈ] [Algebra π πΈ] [ContinuousSMul π πΈ]
-
 variable [IsScalarTower π π πΈ]
-
 variable [CompleteSpace πΈ]
 
 theorem hasFDerivAt_exp_smul_const (x : πΈ) (t : π) :
[@foo](https://github.com/foo) _ _ _ _ _ ... by named arguments (#8702)
Using Lean4's named arguments, we manage to remove a few hard-to-read explicit function calls [@foo](https://github.com/foo) _ _ _ _ _ ... which used to be necessary in Lean3.
Occasionally, this results in slightly longer code. The benefit of named arguments is readability, as well as to reduce the brittleness of the code when the argument order is changed.
Co-authored-by: Michael Rothgang <rothgami@math.hu-berlin.de>
@@ -283,8 +283,8 @@ theorem hasFDerivAt_exp_smul_const_of_mem_ball (x : πΈ) (t : π)
         fun h =>
           exp π ((t + h) β’ x) - exp π (t β’ x) - (exp π (t β’ x) β’ (1 : π βL[π] π).smulRight x) h by
     apply (IsLittleO.const_mul_left _ _).congr' this (EventuallyEq.refl _ _)
-    rw [β @hasFDerivAt_iff_isLittleO_nhds_zero _ _ _ _ _ _ _ _ (fun u => exp π (u β’ x))
-      ((1 : π βL[π] π).smulRight x) 0]
+    rw [β hasFDerivAt_iff_isLittleO_nhds_zero (f := fun u => exp π (u β’ x))
+      (f' := (1 : π βL[π] π).smulRight x) (x := 0)]
     have : HasFDerivAt (exp π) (1 : πΈ βL[π] πΈ) ((1 : π βL[π] π).smulRight x 0) := by
       rw [ContinuousLinearMap.smulRight_apply, ContinuousLinearMap.one_apply, zero_smul]
       exact hasFDerivAt_exp_zero_of_radius_pos hpos
exact_mod_cast tactic with mod_cast elaborator where possible (#8404)
We still have the exact_mod_cast tactic, used in a few places, which somehow (?) works a little bit harder to prevent the expected type influencing the elaboration of the term. I would like to get to the bottom of this, and it will be easier once the only usages of exact_mod_cast are the ones that don't work using the term elaborator by itself.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -224,7 +224,7 @@ theorem Complex.exp_eq_exp_β : Complex.exp = NormedSpace.exp β := by
 #align complex.exp_eq_exp_β Complex.exp_eq_exp_β
 
 theorem Real.exp_eq_exp_β : Real.exp = NormedSpace.exp β := by
-  ext x; exact_mod_cast congr_fun Complex.exp_eq_exp_β x
+  ext x; exact mod_cast congr_fun Complex.exp_eq_exp_β x
 #align real.exp_eq_exp_β Real.exp_eq_exp_β
 
 /-! ### Derivative of $\exp (ux)$ by $u$
@@ -53,7 +53,7 @@ We prove most results for an arbitrary field `π`, and then specialize to `
 -/
 
 
-open Filter IsROrC ContinuousMultilinearMap NormedField Asymptotics
+open Filter IsROrC ContinuousMultilinearMap NormedField NormedSpace Asymptotics
 
 open scoped Nat Topology BigOperators ENNReal
 
@@ -216,14 +216,14 @@ theorem hasDerivAt_exp_zero : HasDerivAt (exp π) (1 : π) 0 :=
 
 end DerivROrC
 
-theorem Complex.exp_eq_exp_β : Complex.exp = _root_.exp β := by
+theorem Complex.exp_eq_exp_β : Complex.exp = NormedSpace.exp β := by
   refine' funext fun x => _
   rw [Complex.exp, exp_eq_tsum_div]
   have : CauSeq.IsComplete β norm := Complex.instIsComplete
   exact tendsto_nhds_unique x.exp'.tendsto_limit (expSeries_div_summable β x).hasSum.tendsto_sum_nat
 #align complex.exp_eq_exp_β Complex.exp_eq_exp_β
 
-theorem Real.exp_eq_exp_β : Real.exp = _root_.exp β := by
+theorem Real.exp_eq_exp_β : Real.exp = NormedSpace.exp β := by
   ext x; exact_mod_cast congr_fun Complex.exp_eq_exp_β x
 #align real.exp_eq_exp_β Real.exp_eq_exp_β
 
@@ -69,7 +69,7 @@ theorem hasStrictFDerivAt_exp_zero_of_radius_pos (h : 0 < (expSeries π πΈ).
   convert (hasFPowerSeriesAt_exp_zero_of_radius_pos h).hasStrictFDerivAt
   ext x
   change x = expSeries π πΈ 1 fun _ => x
-  simp [expSeries_apply_eq]
+  simp [expSeries_apply_eq, Nat.factorial]
 #align has_strict_fderiv_at_exp_zero_of_radius_pos hasStrictFDerivAt_exp_zero_of_radius_pos
 
 /-- The exponential in a Banach algebra `πΈ` over a normed field `π` has FrΓ©chet derivative
Type _ and Sort _ (#6499)
We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.
This has nice performance benefits.
@@ -59,7 +59,7 @@ open scoped Nat Topology BigOperators ENNReal
 
 section AnyFieldAnyAlgebra
 
-variable {π πΈ : Type _} [NontriviallyNormedField π] [NormedRing πΈ] [NormedAlgebra π πΈ]
+variable {π πΈ : Type*} [NontriviallyNormedField π] [NormedRing πΈ] [NormedAlgebra π πΈ]
   [CompleteSpace πΈ]
 
 /-- The exponential in a Banach algebra `πΈ` over a normed field `π` has strict FrΓ©chet derivative
@@ -83,7 +83,7 @@ end AnyFieldAnyAlgebra
 
 section AnyFieldCommAlgebra
 
-variable {π πΈ : Type _} [NontriviallyNormedField π] [NormedCommRing πΈ] [NormedAlgebra π πΈ]
+variable {π πΈ : Type*} [NontriviallyNormedField π] [NormedCommRing πΈ] [NormedAlgebra π πΈ]
   [CompleteSpace πΈ]
 
 /-- The exponential map in a commutative Banach algebra `πΈ` over a normed field `π` of
@@ -121,7 +121,7 @@ end AnyFieldCommAlgebra
 
 section deriv
 
-variable {π : Type _} [NontriviallyNormedField π] [CompleteSpace π]
+variable {π : Type*} [NontriviallyNormedField π] [CompleteSpace π]
 
 /-- The exponential map in a complete normed field `π` of characteristic zero has strict derivative
 `exp π x` at any point `x` in the disk of convergence. -/
@@ -155,7 +155,7 @@ end deriv
 
 section IsROrCAnyAlgebra
 
-variable {π πΈ : Type _} [IsROrC π] [NormedRing πΈ] [NormedAlgebra π πΈ] [CompleteSpace πΈ]
+variable {π πΈ : Type*} [IsROrC π] [NormedRing πΈ] [NormedAlgebra π πΈ] [CompleteSpace πΈ]
 
 /-- The exponential in a Banach algebra `πΈ` over `π = β` or `π = β` has strict FrΓ©chet derivative
 `1 : πΈ βL[π] πΈ` at zero. -/
@@ -173,7 +173,7 @@ end IsROrCAnyAlgebra
 
 section IsROrCCommAlgebra
 
-variable {π πΈ : Type _} [IsROrC π] [NormedCommRing πΈ] [NormedAlgebra π πΈ] [CompleteSpace πΈ]
+variable {π πΈ : Type*} [IsROrC π] [NormedCommRing πΈ] [NormedAlgebra π πΈ] [CompleteSpace πΈ]
 
 /-- The exponential map in a commutative Banach algebra `πΈ` over `π = β` or `π = β` has strict
 FrΓ©chet derivative `exp π x β’ 1 : πΈ βL[π] πΈ` at any point `x`. -/
@@ -191,7 +191,7 @@ end IsROrCCommAlgebra
 
 section DerivROrC
 
-variable {π : Type _} [IsROrC π]
+variable {π : Type*} [IsROrC π]
 
 /-- The exponential map in `π = β` or `π = β` has strict derivative `exp π x` at any point
 `x`. -/
@@ -251,7 +251,7 @@ TODO: prove this result too!
 
 section exp_smul
 
-variable {π π πΈ : Type _}
+variable {π π πΈ : Type*}
 
 variable (π)
 
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Anatole Dedecker, Eric Wieser
 -/
 import Mathlib.Analysis.NormedSpace.Exponential
-import Mathlib.Analysis.Calculus.FDerivAnalytic
+import Mathlib.Analysis.Calculus.FDeriv.Analytic
 import Mathlib.Topology.MetricSpace.CauSeqFilter
 
 #align_import analysis.special_functions.exponential from "leanprover-community/mathlib"@"e1a18cad9cd462973d760af7de36b05776b8811c"
@@ -2,16 +2,13 @@
 Copyright (c) 2021 Anatole Dedecker. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Anatole Dedecker, Eric Wieser
-
-! This file was ported from Lean 3 source module analysis.special_functions.exponential
-! leanprover-community/mathlib commit e1a18cad9cd462973d760af7de36b05776b8811c
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Analysis.NormedSpace.Exponential
 import Mathlib.Analysis.Calculus.FDerivAnalytic
 import Mathlib.Topology.MetricSpace.CauSeqFilter
 
+#align_import analysis.special_functions.exponential from "leanprover-community/mathlib"@"e1a18cad9cd462973d760af7de36b05776b8811c"
+
 /-!
 # Calculus results on exponential in a Banach algebra
 
@@ -48,7 +48,7 @@ We prove most results for an arbitrary field `π`, and then specialize to `
   an intermediate algebra `π` which is commutative, then the function `(u : π) β¦ exp π (u β’ x)`
   still has strict FrΓ©chet derivative `exp π (t β’ x) β’ (1 : πΈ βL[π] πΈ).smulRight x` at `t`.
 
-### Compatibilty with `Real.exp` and `Complex.exp`
+### Compatibility with `Real.exp` and `Complex.exp`
 
 - `Complex.exp_eq_exp_β` : `Complex.exp = exp β β`
 - `Real.exp_eq_exp_β` : `Real.exp = exp β β`
@@ -241,7 +241,7 @@ API, so we leave that to a future refactor (see leanprover-community/mathlib#190
 
 We could also go the other way around and deduce `hasFDerivAt_exp_of_mem_ball` from
 `hasFDerivAt_exp_smul_const_of_mem_ball` applied to `π := πΈ`, `x := (1 : πΈ)`, and `t := x`.
-However, doing so would make the aformentioned `elementalAlgebra` refactor harder, so for now we
+However, doing so would make the aforementioned `elementalAlgebra` refactor harder, so for now we
 just prove these two lemmas independently.
 
 A last strategy would be to deduce everything from the more general non-commutative case,
The unported dependencies are
algebra.order.moduleinit.corelinear_algebra.free_module.finite.rankalgebra.order.monoid.cancel.defsalgebra.absalgebra.group_power.lemmasinit.data.list.basiclinear_algebra.free_module.rankalgebra.order.monoid.cancel.basicinit.data.list.defaulttopology.subset_propertiesinit.logicThe following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file