Skip to content

Commit

Permalink
bump to nightly-2023-06-01-18
Browse files Browse the repository at this point in the history
  • Loading branch information
leanprover-community-bot committed Jun 1, 2023
1 parent b9c87c7 commit cb717cb
Show file tree
Hide file tree
Showing 17 changed files with 347 additions and 297 deletions.
370 changes: 196 additions & 174 deletions Mathbin/Analysis/Analytic/Basic.lean

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions Mathbin/Analysis/Analytic/Composition.lean
Expand Up @@ -770,9 +770,9 @@ open FormalMultilinearSeries

/-- If two functions `g` and `f` have power series `q` and `p` respectively at `f x` and `x`, then
`g ∘ f` admits the power series `q.comp p` at `x`. -/
theorem HasFpowerSeriesAt.comp {g : F β†’ G} {f : E β†’ F} {q : FormalMultilinearSeries π•œ F G}
{p : FormalMultilinearSeries π•œ E F} {x : E} (hg : HasFpowerSeriesAt g q (f x))
(hf : HasFpowerSeriesAt f p x) : HasFpowerSeriesAt (g ∘ f) (q.comp p) x :=
theorem HasFPowerSeriesAt.comp {g : F β†’ G} {f : E β†’ F} {q : FormalMultilinearSeries π•œ F G}
{p : FormalMultilinearSeries π•œ E F} {x : E} (hg : HasFPowerSeriesAt g q (f x))
(hf : HasFPowerSeriesAt f p x) : HasFPowerSeriesAt (g ∘ f) (q.comp p) x :=
by
/- Consider `rf` and `rg` such that `f` and `g` have power series expansion on the disks
of radius `rf` and `rg`. -/
Expand Down Expand Up @@ -899,7 +899,7 @@ theorem HasFpowerSeriesAt.comp {g : F β†’ G} {f : E β†’ F} {q : FormalMultilinea
simp only [ContinuousMultilinearMap.sum_apply]
rfl
exact E
#align has_fpower_series_at.comp HasFpowerSeriesAt.comp
#align has_fpower_series_at.comp HasFPowerSeriesAt.comp

/-- If two functions `g` and `f` are analytic respectively at `f x` and `x`, then `g ∘ f` is
analytic at `x`. -/
Expand Down
36 changes: 18 additions & 18 deletions Mathbin/Analysis/Analytic/IsolatedZeros.lean
Expand Up @@ -73,39 +73,39 @@ theorem exists_hasSum_smul_of_apply_eq_zero (hs : HasSum (fun m => z ^ m β€’ a m

end HasSum

namespace HasFpowerSeriesAt
namespace HasFPowerSeriesAt

theorem hasFpowerSeriesDslopeFslope (hp : HasFpowerSeriesAt f p zβ‚€) :
HasFpowerSeriesAt (dslope f zβ‚€) p.fslope zβ‚€ :=
theorem has_fpower_series_dslope_fslope (hp : HasFPowerSeriesAt f p zβ‚€) :
HasFPowerSeriesAt (dslope f zβ‚€) p.fslope zβ‚€ :=
by
have hpd : deriv f zβ‚€ = p.coeff 1 := hp.deriv
have hp0 : p.coeff 0 = f zβ‚€ := hp.coeff_zero 1
simp only [hasFpowerSeriesAt_iff, apply_eq_pow_smul_coeff, coeff_fslope] at hp ⊒
simp only [hasFPowerSeriesAt_iff, apply_eq_pow_smul_coeff, coeff_fslope] at hp ⊒
refine' hp.mono fun x hx => _
by_cases h : x = 0
Β· convert hasSum_single 0 _ <;> intros <;> simp [*]
Β· have hxx : βˆ€ n : β„•, x⁻¹ * x ^ (n + 1) = x ^ n := fun n => by field_simp [h, pow_succ']
suffices HasSum (fun n => x⁻¹ β€’ x ^ (n + 1) β€’ p.coeff (n + 1)) (x⁻¹ β€’ (f (zβ‚€ + x) - f zβ‚€)) by
simpa [dslope, slope, h, smul_smul, hxx] using this
· simpa [hp0] using ((hasSum_nat_add_iff' 1).mpr hx).const_smul x⁻¹
#align has_fpower_series_at.has_fpower_series_dslope_fslope HasFpowerSeriesAt.hasFpowerSeriesDslopeFslope
#align has_fpower_series_at.has_fpower_series_dslope_fslope HasFPowerSeriesAt.has_fpower_series_dslope_fslope

theorem hasFpowerSeriesIterateDslopeFslope (n : β„•) (hp : HasFpowerSeriesAt f p zβ‚€) :
HasFpowerSeriesAt ((swap dslope zβ‚€^[n]) f) ((fslope^[n]) p) zβ‚€ :=
theorem has_fpower_series_iterate_dslope_fslope (n : β„•) (hp : HasFPowerSeriesAt f p zβ‚€) :
HasFPowerSeriesAt ((swap dslope zβ‚€^[n]) f) ((fslope^[n]) p) zβ‚€ :=
by
induction' n with n ih generalizing f p
Β· exact hp
Β· simpa using ih (has_fpower_series_dslope_fslope hp)
#align has_fpower_series_at.has_fpower_series_iterate_dslope_fslope HasFpowerSeriesAt.hasFpowerSeriesIterateDslopeFslope
#align has_fpower_series_at.has_fpower_series_iterate_dslope_fslope HasFPowerSeriesAt.has_fpower_series_iterate_dslope_fslope

theorem iterate_dslope_fslope_ne_zero (hp : HasFpowerSeriesAt f p zβ‚€) (h : p β‰  0) :
theorem iterate_dslope_fslope_ne_zero (hp : HasFPowerSeriesAt f p zβ‚€) (h : p β‰  0) :
(swap dslope zβ‚€^[p.order]) f zβ‚€ β‰  0 :=
by
rw [← coeff_zero (has_fpower_series_iterate_dslope_fslope p.order hp) 1]
simpa [coeff_eq_zero] using apply_order_ne_zero h
#align has_fpower_series_at.iterate_dslope_fslope_ne_zero HasFpowerSeriesAt.iterate_dslope_fslope_ne_zero
#align has_fpower_series_at.iterate_dslope_fslope_ne_zero HasFPowerSeriesAt.iterate_dslope_fslope_ne_zero

theorem eq_pow_order_mul_iterate_dslope (hp : HasFpowerSeriesAt f p zβ‚€) :
theorem eq_pow_order_mul_iterate_dslope (hp : HasFPowerSeriesAt f p zβ‚€) :
βˆ€αΆ  z in 𝓝 zβ‚€, f z = (z - zβ‚€) ^ p.order β€’ (swap dslope zβ‚€^[p.order]) f z :=
by
have hq := has_fpower_series_at_iff'.mp (has_fpower_series_iterate_dslope_fslope p.order hp)
Expand All @@ -116,22 +116,22 @@ theorem eq_pow_order_mul_iterate_dslope (hp : HasFpowerSeriesAt f p zβ‚€) :
convert hs1.symm
simp only [coeff_iterate_fslope] at hx1
exact hx1.unique hs2
#align has_fpower_series_at.eq_pow_order_mul_iterate_dslope HasFpowerSeriesAt.eq_pow_order_mul_iterate_dslope
#align has_fpower_series_at.eq_pow_order_mul_iterate_dslope HasFPowerSeriesAt.eq_pow_order_mul_iterate_dslope

theorem locally_ne_zero (hp : HasFpowerSeriesAt f p zβ‚€) (h : p β‰  0) : βˆ€αΆ  z in 𝓝[β‰ ] zβ‚€, f z β‰  0 :=
theorem locally_ne_zero (hp : HasFPowerSeriesAt f p zβ‚€) (h : p β‰  0) : βˆ€αΆ  z in 𝓝[β‰ ] zβ‚€, f z β‰  0 :=
by
rw [eventually_nhdsWithin_iff]
have h2 := (has_fpower_series_iterate_dslope_fslope p.order hp).ContinuousAt
have h3 := h2.eventually_ne (iterate_dslope_fslope_ne_zero hp h)
filter_upwards [eq_pow_order_mul_iterate_dslope hp, h3]with z e1 e2 e3
simpa [e1, e2, e3] using pow_ne_zero p.order (sub_ne_zero.mpr e3)
#align has_fpower_series_at.locally_ne_zero HasFpowerSeriesAt.locally_ne_zero
#align has_fpower_series_at.locally_ne_zero HasFPowerSeriesAt.locally_ne_zero

theorem locally_zero_iff (hp : HasFpowerSeriesAt f p zβ‚€) : (βˆ€αΆ  z in 𝓝 zβ‚€, f z = 0) ↔ p = 0 :=
theorem locally_zero_iff (hp : HasFPowerSeriesAt f p zβ‚€) : (βˆ€αΆ  z in 𝓝 zβ‚€, f z = 0) ↔ p = 0 :=
⟨fun hf => hp.eq_zero_of_eventually hf, fun h => eventually_eq_zero (by rwa [h] at hp )⟩
#align has_fpower_series_at.locally_zero_iff HasFpowerSeriesAt.locally_zero_iff
#align has_fpower_series_at.locally_zero_iff HasFPowerSeriesAt.locally_zero_iff

end HasFpowerSeriesAt
end HasFPowerSeriesAt

namespace AnalyticAt

Expand All @@ -143,7 +143,7 @@ theorem eventually_eq_zero_or_eventually_ne_zero (hf : AnalyticAt π•œ f zβ‚€) :
by
rcases hf with ⟨p, hp⟩
by_cases h : p = 0
Β· exact Or.inl (HasFpowerSeriesAt.eventually_eq_zero (by rwa [h] at hp ))
Β· exact Or.inl (HasFPowerSeriesAt.eventually_eq_zero (by rwa [h] at hp ))
Β· exact Or.inr (hp.locally_ne_zero h)
#align analytic_at.eventually_eq_zero_or_eventually_ne_zero AnalyticAt.eventually_eq_zero_or_eventually_ne_zero

Expand Down
32 changes: 16 additions & 16 deletions Mathbin/Analysis/Analytic/Linear.lean
Expand Up @@ -49,21 +49,21 @@ theorem fpowerSeries_radius (f : E β†’L[π•œ] F) (x : E) : (f.fpowerSeries x).ra
(f.fpowerSeries x).radius_eq_top_of_forall_image_add_eq_zero 2 fun n => rfl
#align continuous_linear_map.fpower_series_radius ContinuousLinearMap.fpowerSeries_radius

protected theorem hasFpowerSeriesOnBall (f : E β†’L[π•œ] F) (x : E) :
HasFpowerSeriesOnBall f (f.fpowerSeries x) x ∞ :=
protected theorem hasFPowerSeriesOnBall (f : E β†’L[π•œ] F) (x : E) :
HasFPowerSeriesOnBall f (f.fpowerSeries x) x ∞ :=
{ r_le := by simp
r_pos := ENNReal.coe_lt_top
HasSum := fun y _ =>
(hasSum_nat_add_iff' 2).1 <| by simp [Finset.sum_range_succ, ← sub_sub, hasSum_zero] }
#align continuous_linear_map.has_fpower_series_on_ball ContinuousLinearMap.hasFpowerSeriesOnBall
#align continuous_linear_map.has_fpower_series_on_ball ContinuousLinearMap.hasFPowerSeriesOnBall

protected theorem hasFpowerSeriesAt (f : E β†’L[π•œ] F) (x : E) :
HasFpowerSeriesAt f (f.fpowerSeries x) x :=
⟨∞, f.HasFpowerSeriesOnBall x⟩
#align continuous_linear_map.has_fpower_series_at ContinuousLinearMap.hasFpowerSeriesAt
protected theorem hasFPowerSeriesAt (f : E β†’L[π•œ] F) (x : E) :
HasFPowerSeriesAt f (f.fpowerSeries x) x :=
⟨∞, f.HasFPowerSeriesOnBall x⟩
#align continuous_linear_map.has_fpower_series_at ContinuousLinearMap.hasFPowerSeriesAt

protected theorem analyticAt (f : E β†’L[π•œ] F) (x : E) : AnalyticAt π•œ f x :=
(f.HasFpowerSeriesAt x).AnalyticAt
(f.HasFPowerSeriesAt x).AnalyticAt
#align continuous_linear_map.analytic_at ContinuousLinearMap.analyticAt

/-- Reinterpret a bilinear map `f : E β†’L[π•œ] F β†’L[π•œ] G` as a multilinear map
Expand Down Expand Up @@ -97,8 +97,8 @@ theorem fpowerSeriesBilinear_radius (f : E β†’L[π•œ] F β†’L[π•œ] G) (x : E Γ—
(f.fpowerSeriesBilinear x).radius_eq_top_of_forall_image_add_eq_zero 3 fun n => rfl
#align continuous_linear_map.fpower_series_bilinear_radius ContinuousLinearMap.fpowerSeriesBilinear_radius

protected theorem hasFpowerSeriesOnBallBilinear (f : E β†’L[π•œ] F β†’L[π•œ] G) (x : E Γ— F) :
HasFpowerSeriesOnBall (fun x : E Γ— F => f x.1 x.2) (f.fpowerSeriesBilinear x) x ∞ :=
protected theorem hasFPowerSeriesOnBall_bilinear (f : E β†’L[π•œ] F β†’L[π•œ] G) (x : E Γ— F) :
HasFPowerSeriesOnBall (fun x : E Γ— F => f x.1 x.2) (f.fpowerSeriesBilinear x) x ∞ :=
{ r_le := by simp
r_pos := ENNReal.coe_lt_top
HasSum := fun y _ =>
Expand All @@ -107,16 +107,16 @@ protected theorem hasFpowerSeriesOnBallBilinear (f : E β†’L[π•œ] F β†’L[π•œ] G
simp only [Finset.sum_range_succ, Finset.sum_range_one, Prod.fst_add, Prod.snd_add,
f.map_add_add]
dsimp; simp only [add_comm, sub_self, hasSum_zero] }
#align continuous_linear_map.has_fpower_series_on_ball_bilinear ContinuousLinearMap.hasFpowerSeriesOnBallBilinear
#align continuous_linear_map.has_fpower_series_on_ball_bilinear ContinuousLinearMap.hasFPowerSeriesOnBall_bilinear

protected theorem hasFpowerSeriesAtBilinear (f : E β†’L[π•œ] F β†’L[π•œ] G) (x : E Γ— F) :
HasFpowerSeriesAt (fun x : E Γ— F => f x.1 x.2) (f.fpowerSeriesBilinear x) x :=
⟨∞, f.hasFpowerSeriesOnBallBilinear x⟩
#align continuous_linear_map.has_fpower_series_at_bilinear ContinuousLinearMap.hasFpowerSeriesAtBilinear
protected theorem hasFPowerSeriesAt_bilinear (f : E β†’L[π•œ] F β†’L[π•œ] G) (x : E Γ— F) :
HasFPowerSeriesAt (fun x : E Γ— F => f x.1 x.2) (f.fpowerSeriesBilinear x) x :=
⟨∞, f.hasFPowerSeriesOnBall_bilinear x⟩
#align continuous_linear_map.has_fpower_series_at_bilinear ContinuousLinearMap.hasFPowerSeriesAt_bilinear

protected theorem analyticAt_bilinear (f : E β†’L[π•œ] F β†’L[π•œ] G) (x : E Γ— F) :
AnalyticAt π•œ (fun x : E Γ— F => f x.1 x.2) x :=
(f.hasFpowerSeriesAtBilinear x).AnalyticAt
(f.hasFPowerSeriesAt_bilinear x).AnalyticAt
#align continuous_linear_map.analytic_at_bilinear ContinuousLinearMap.analyticAt_bilinear

end ContinuousLinearMap
Expand Down
4 changes: 2 additions & 2 deletions Mathbin/Analysis/Analytic/Uniqueness.lean
Expand Up @@ -55,7 +55,7 @@ theorem eqOn_zero_of_preconnected_of_eventuallyEq_zero_aux [CompleteSpace F] {f
obtain ⟨y, yu, hxy⟩ : βˆƒ y ∈ u, edist x y < r / 2
exact EMetric.mem_closure_iff.1 xu (r / 2) (ENNReal.half_pos hp.r_pos.ne')
let q := p.change_origin (y - x)
have has_series : HasFpowerSeriesOnBall f q y (r / 2) :=
have has_series : HasFPowerSeriesOnBall f q y (r / 2) :=
by
have A : (β€–y - xβ€–β‚Š : ℝβ‰₯0∞) < r / 2 := by rwa [edist_comm, edist_eq_coe_nnnorm_sub] at hxy
have := hp.change_origin (A.trans_le ENNReal.half_le_self)
Expand All @@ -69,7 +69,7 @@ theorem eqOn_zero_of_preconnected_of_eventuallyEq_zero_aux [CompleteSpace F] {f
have A : HasSum (fun n : β„• => q n fun i : Fin n => z - y) (f z) := has_series.has_sum_sub hz
have B : HasSum (fun n : β„• => q n fun i : Fin n => z - y) 0 :=
by
have : HasFpowerSeriesAt 0 q y := has_series.has_fpower_series_at.congr yu
have : HasFPowerSeriesAt 0 q y := has_series.has_fpower_series_at.congr yu
convert hasSum_zero
ext n
exact this.apply_eq_zero n _
Expand Down
56 changes: 28 additions & 28 deletions Mathbin/Analysis/Calculus/FderivAnalytic.lean
Expand Up @@ -36,23 +36,23 @@ variable {p : FormalMultilinearSeries π•œ E F} {r : ℝβ‰₯0∞}

variable {f : E β†’ F} {x : E} {s : Set E}

theorem HasFpowerSeriesAt.hasStrictFDerivAt (h : HasFpowerSeriesAt f p x) :
theorem HasFPowerSeriesAt.hasStrictFDerivAt (h : HasFPowerSeriesAt f p x) :
HasStrictFDerivAt f (continuousMultilinearCurryFin1 π•œ E F (p 1)) x :=
by
refine' h.is_O_image_sub_norm_mul_norm_sub.trans_is_o (is_o.of_norm_right _)
refine' is_o_iff_exists_eq_mul.2 ⟨fun y => β€–y - (x, x)β€–, _, eventually_eq.rfl⟩
refine' (continuous_id.sub continuous_const).norm.tendsto' _ _ _
rw [_root_.id, sub_self, norm_zero]
#align has_fpower_series_at.has_strict_fderiv_at HasFpowerSeriesAt.hasStrictFDerivAt
#align has_fpower_series_at.has_strict_fderiv_at HasFPowerSeriesAt.hasStrictFDerivAt

theorem HasFpowerSeriesAt.hasFDerivAt (h : HasFpowerSeriesAt f p x) :
theorem HasFPowerSeriesAt.hasFDerivAt (h : HasFPowerSeriesAt f p x) :
HasFDerivAt f (continuousMultilinearCurryFin1 π•œ E F (p 1)) x :=
h.HasStrictFDerivAt.HasFDerivAt
#align has_fpower_series_at.has_fderiv_at HasFpowerSeriesAt.hasFDerivAt
#align has_fpower_series_at.has_fderiv_at HasFPowerSeriesAt.hasFDerivAt

theorem HasFpowerSeriesAt.differentiableAt (h : HasFpowerSeriesAt f p x) : DifferentiableAt π•œ f x :=
theorem HasFPowerSeriesAt.differentiableAt (h : HasFPowerSeriesAt f p x) : DifferentiableAt π•œ f x :=
h.HasFDerivAt.DifferentiableAt
#align has_fpower_series_at.differentiable_at HasFpowerSeriesAt.differentiableAt
#align has_fpower_series_at.differentiable_at HasFPowerSeriesAt.differentiableAt

theorem AnalyticAt.differentiableAt : AnalyticAt π•œ f x β†’ DifferentiableAt π•œ f x
| ⟨p, hp⟩ => hp.DifferentiableAt
Expand All @@ -62,42 +62,42 @@ theorem AnalyticAt.differentiableWithinAt (h : AnalyticAt π•œ f x) : Differenti
h.DifferentiableAt.DifferentiableWithinAt
#align analytic_at.differentiable_within_at AnalyticAt.differentiableWithinAt

theorem HasFpowerSeriesAt.fderiv_eq (h : HasFpowerSeriesAt f p x) :
theorem HasFPowerSeriesAt.fderiv_eq (h : HasFPowerSeriesAt f p x) :
fderiv π•œ f x = continuousMultilinearCurryFin1 π•œ E F (p 1) :=
h.HasFDerivAt.fderiv
#align has_fpower_series_at.fderiv_eq HasFpowerSeriesAt.fderiv_eq
#align has_fpower_series_at.fderiv_eq HasFPowerSeriesAt.fderiv_eq

theorem HasFpowerSeriesOnBall.differentiableOn [CompleteSpace F]
(h : HasFpowerSeriesOnBall f p x r) : DifferentiableOn π•œ f (EMetric.ball x r) := fun y hy =>
theorem HasFPowerSeriesOnBall.differentiableOn [CompleteSpace F]
(h : HasFPowerSeriesOnBall f p x r) : DifferentiableOn π•œ f (EMetric.ball x r) := fun y hy =>
(h.analyticAt_of_mem hy).DifferentiableWithinAt
#align has_fpower_series_on_ball.differentiable_on HasFpowerSeriesOnBall.differentiableOn
#align has_fpower_series_on_ball.differentiable_on HasFPowerSeriesOnBall.differentiableOn

theorem AnalyticOn.differentiableOn (h : AnalyticOn π•œ f s) : DifferentiableOn π•œ f s := fun y hy =>
(h y hy).DifferentiableWithinAt
#align analytic_on.differentiable_on AnalyticOn.differentiableOn

theorem HasFpowerSeriesOnBall.hasFDerivAt [CompleteSpace F] (h : HasFpowerSeriesOnBall f p x r)
theorem HasFPowerSeriesOnBall.hasFDerivAt [CompleteSpace F] (h : HasFPowerSeriesOnBall f p x r)
{y : E} (hy : (β€–yβ€–β‚Š : ℝβ‰₯0∞) < r) :
HasFDerivAt f (continuousMultilinearCurryFin1 π•œ E F (p.changeOrigin y 1)) (x + y) :=
(h.changeOrigin hy).HasFpowerSeriesAt.HasFDerivAt
#align has_fpower_series_on_ball.has_fderiv_at HasFpowerSeriesOnBall.hasFDerivAt
(h.changeOrigin hy).HasFPowerSeriesAt.HasFDerivAt
#align has_fpower_series_on_ball.has_fderiv_at HasFPowerSeriesOnBall.hasFDerivAt

theorem HasFpowerSeriesOnBall.fderiv_eq [CompleteSpace F] (h : HasFpowerSeriesOnBall f p x r)
theorem HasFPowerSeriesOnBall.fderiv_eq [CompleteSpace F] (h : HasFPowerSeriesOnBall f p x r)
{y : E} (hy : (β€–yβ€–β‚Š : ℝβ‰₯0∞) < r) :
fderiv π•œ f (x + y) = continuousMultilinearCurryFin1 π•œ E F (p.changeOrigin y 1) :=
(h.HasFDerivAt hy).fderiv
#align has_fpower_series_on_ball.fderiv_eq HasFpowerSeriesOnBall.fderiv_eq
#align has_fpower_series_on_ball.fderiv_eq HasFPowerSeriesOnBall.fderiv_eq

/-- If a function has a power series on a ball, then so does its derivative. -/
theorem HasFpowerSeriesOnBall.fderiv [CompleteSpace F] (h : HasFpowerSeriesOnBall f p x r) :
HasFpowerSeriesOnBall (fderiv π•œ f)
theorem HasFPowerSeriesOnBall.fderiv [CompleteSpace F] (h : HasFPowerSeriesOnBall f p x r) :
HasFPowerSeriesOnBall (fderiv π•œ f)
((continuousMultilinearCurryFin1 π•œ E F :
(E[Γ—1]β†’L[π•œ] F) β†’L[π•œ] E β†’L[π•œ] F).compFormalMultilinearSeries
(p.changeOriginSeries 1))
x r :=
by
suffices A :
HasFpowerSeriesOnBall
HasFPowerSeriesOnBall
(fun z => continuousMultilinearCurryFin1 π•œ E F (p.change_origin (z - x) 1))
((continuousMultilinearCurryFin1 π•œ E F :
(E[Γ—1]β†’L[π•œ] F) β†’L[π•œ] E β†’L[π•œ] F).compFormalMultilinearSeries
Expand All @@ -109,16 +109,16 @@ theorem HasFpowerSeriesOnBall.fderiv [CompleteSpace F] (h : HasFpowerSeriesOnBal
rw [← h.fderiv_eq, add_sub_cancel'_right]
simpa only [edist_eq_coe_nnnorm_sub, EMetric.mem_ball] using hz
suffices B :
HasFpowerSeriesOnBall (fun z => p.change_origin (z - x) 1) (p.change_origin_series 1) x r
HasFPowerSeriesOnBall (fun z => p.change_origin (z - x) 1) (p.change_origin_series 1) x r
exact
(continuousMultilinearCurryFin1 π•œ E
F).toContinuousLinearEquiv.toContinuousLinearMap.compHasFpowerSeriesOnBall
F).toContinuousLinearEquiv.toContinuousLinearMap.comp_hasFPowerSeriesOnBall
B
simpa using
((p.has_fpower_series_on_ball_change_origin 1 (h.r_pos.trans_le h.r_le)).mono h.r_pos
h.r_le).comp_sub
x
#align has_fpower_series_on_ball.fderiv HasFpowerSeriesOnBall.fderiv
#align has_fpower_series_on_ball.fderiv HasFPowerSeriesOnBall.fderiv

/-- If a function is analytic on a set `s`, so is its FrΓ©chet derivative. -/
theorem AnalyticOn.fderiv [CompleteSpace F] (h : AnalyticOn π•œ f s) : AnalyticOn π•œ (fderiv π•œ f) s :=
Expand Down Expand Up @@ -168,20 +168,20 @@ variable {p : FormalMultilinearSeries π•œ π•œ F} {r : ℝβ‰₯0∞}

variable {f : π•œ β†’ F} {x : π•œ} {s : Set π•œ}

protected theorem HasFpowerSeriesAt.hasStrictDerivAt (h : HasFpowerSeriesAt f p x) :
protected theorem HasFPowerSeriesAt.hasStrictDerivAt (h : HasFPowerSeriesAt f p x) :
HasStrictDerivAt f (p 1 fun _ => 1) x :=
h.HasStrictFDerivAt.HasStrictDerivAt
#align has_fpower_series_at.has_strict_deriv_at HasFpowerSeriesAt.hasStrictDerivAt
#align has_fpower_series_at.has_strict_deriv_at HasFPowerSeriesAt.hasStrictDerivAt

protected theorem HasFpowerSeriesAt.hasDerivAt (h : HasFpowerSeriesAt f p x) :
protected theorem HasFPowerSeriesAt.hasDerivAt (h : HasFPowerSeriesAt f p x) :
HasDerivAt f (p 1 fun _ => 1) x :=
h.HasStrictDerivAt.HasDerivAt
#align has_fpower_series_at.has_deriv_at HasFpowerSeriesAt.hasDerivAt
#align has_fpower_series_at.has_deriv_at HasFPowerSeriesAt.hasDerivAt

protected theorem HasFpowerSeriesAt.deriv (h : HasFpowerSeriesAt f p x) :
protected theorem HasFPowerSeriesAt.deriv (h : HasFPowerSeriesAt f p x) :
deriv f x = p 1 fun _ => 1 :=
h.HasDerivAt.deriv
#align has_fpower_series_at.deriv HasFpowerSeriesAt.deriv
#align has_fpower_series_at.deriv HasFPowerSeriesAt.deriv

/-- If a function is analytic on a set `s`, so is its derivative. -/
theorem AnalyticOn.deriv [CompleteSpace F] (h : AnalyticOn π•œ f s) : AnalyticOn π•œ (deriv f) s :=
Expand Down

0 comments on commit cb717cb

Please sign in to comment.