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.module
init.core
linear_algebra.free_module.finite.rank
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
linear_algebra.free_module.rank
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file