@@ -45,60 +45,51 @@ private theorem aux (f : E β πΈ) (f' : E βL[π] πΈ) (x : E) (n : β)
4545 simp only [Finset.mem_range, Nat.lt_succ_iff] at hx
4646 rw [tsub_add_eq_add_tsub hx]
4747
48- theorem HasStrictFDerivAt.fun_pow' (h : HasStrictFDerivAt f f' x) (n : β) :
49- HasStrictFDerivAt (fun x β¦ f x ^ n)
48+ @[to_fun]
49+ theorem HasStrictFDerivAt.pow' (h : HasStrictFDerivAt f f' x) (n : β) :
50+ HasStrictFDerivAt (f ^ n)
5051 (β i β Finset.range n, f x ^ (n.pred - i) β’> f' <β’ f x ^ i) x :=
5152 match n with
5253 | 0 => by simpa using hasStrictFDerivAt_const 1 x
5354 | 1 => by simpa using h
5455 | n + 1 + 1 => by
55- have := h.mul' (h.fun_pow ' (n + 1 ))
56+ have := h.mul' (h.pow ' (n + 1 ))
5657 simp_rw [pow_succ' _ (n + 1 )]
5758 refine this.congr_fderiv <| aux _ _ _ _
5859
59- theorem HasStrictFDerivAt.pow' (h : HasStrictFDerivAt f f' x) (n : β) :
60- HasStrictFDerivAt (f ^ n)
61- (β i β Finset.range n, f x ^ (n.pred - i) β’> f' <β’ f x ^ i) x := h.fun_pow' n
62-
6360theorem hasStrictFDerivAt_pow' (n : β) {x : πΈ} :
6461 HasStrictFDerivAt (π := π) (fun x β¦ x ^ n)
6562 (β i β Finset.range n, x ^ (n.pred - i) β’> ContinuousLinearMap.id π _ <β’ x ^ i) x :=
6663 hasStrictFDerivAt_id _ |>.pow' n
6764
68- theorem HasFDerivWithinAt.fun_pow' (h : HasFDerivWithinAt f f' s x) (n : β) :
69- HasFDerivWithinAt (fun x β¦ f x ^ n)
65+ @[to_fun]
66+ theorem HasFDerivWithinAt.pow' (h : HasFDerivWithinAt f f' s x) (n : β) :
67+ HasFDerivWithinAt (f ^ n)
7068 (β i β Finset.range n, f x ^ (n.pred - i) β’> f' <β’ f x ^ i) s x :=
7169 match n with
7270 | 0 => by simpa using hasFDerivWithinAt_const 1 x s
7371 | 1 => by simpa using h
7472 | n + 1 + 1 => by
75- have := h.mul' (h.fun_pow ' (n + 1 ))
73+ have := h.mul' (h.pow ' (n + 1 ))
7674 simp_rw [pow_succ' _ (n + 1 )]
7775 exact this.congr_fderiv <| aux _ _ _ _
7876
79- theorem HasFDerivWithinAt.pow' (h : HasFDerivWithinAt f f' s x) (n : β) :
80- HasFDerivWithinAt (f ^ n)
81- (β i β Finset.range n, f x ^ (n.pred - i) β’> f' <β’ f x ^ i) s x := h.fun_pow' n
82-
8377theorem hasFDerivWithinAt_pow' (n : β) {x : πΈ} {s : Set πΈ} :
8478 HasFDerivWithinAt (π := π) (fun x β¦ x ^ n)
8579 (β i β Finset.range n, x ^ (n.pred - i) β’> ContinuousLinearMap.id π _ <β’ x ^ i) s x :=
8680 hasFDerivWithinAt_id _ _ |>.pow' n
8781
88- theorem HasFDerivAt.fun_pow' (h : HasFDerivAt f f' x) (n : β) :
89- HasFDerivAt (fun x β¦ f x ^ n) (β i β Finset.range n, f x ^ (n.pred - i) β’> f' <β’ f x ^ i) x :=
82+ @[to_fun]
83+ theorem HasFDerivAt.pow' (h : HasFDerivAt f f' x) (n : β) :
84+ HasFDerivAt (f ^ n) (β i β Finset.range n, f x ^ (n.pred - i) β’> f' <β’ f x ^ i) x :=
9085 match n with
9186 | 0 => by simpa using hasFDerivAt_const 1 x
9287 | 1 => by simpa using h
9388 | n + 1 + 1 => by
94- have := h.mul' (h.fun_pow ' (n + 1 ))
89+ have := h.mul' (h.pow ' (n + 1 ))
9590 simp_rw [pow_succ' _ (n + 1 )]
9691 exact this.congr_fderiv <| aux _ _ _ _
9792
98- theorem HasFDerivAt.pow' (h : HasFDerivAt f f' x) (n : β) :
99- HasFDerivAt (f ^ n) (β i β Finset.range n, f x ^ (n.pred - i) β’> f' <β’ f x ^ i) x :=
100- h.fun_pow' n
101-
10293theorem hasFDerivAt_pow' (n : β) {x : πΈ} :
10394 HasFDerivAt (π := π) (fun x β¦ x ^ n)
10495 (β i β Finset.range n, x ^ (n.pred - i) β’> ContinuousLinearMap.id π _ <β’ x ^ i) x :=
@@ -118,67 +109,45 @@ theorem differentiableWithinAt_pow (n : β) {x : πΈ} {s : Set πΈ} :
118109 DifferentiableWithinAt π (fun x : πΈ => x ^ n) s x :=
119110 differentiableWithinAt_id.pow _
120111
121- @ [simp, fun_prop]
122- theorem DifferentiableAt.fun_pow (hf : DifferentiableAt π f x) (n : β) :
123- DifferentiableAt π (fun x => f x ^ n) x :=
124- differentiableWithinAt_univ.mp <| hf.differentiableWithinAt.pow n
125-
126- @ [simp, fun_prop]
112+ @ [to_fun (attr := simp, fun_prop)]
127113theorem DifferentiableAt.pow (hf : DifferentiableAt π f x) (n : β) :
128- DifferentiableAt π (f ^ n) x := hf.fun_pow n
114+ DifferentiableAt π (f ^ n) x :=
115+ differentiableWithinAt_univ.mp <| hf.differentiableWithinAt.pow n
129116
130117theorem differentiableAt_pow (n : β) {x : πΈ} : DifferentiableAt π (fun x : πΈ => x ^ n) x :=
131118 differentiableAt_id.pow _
132119
133- @[fun_prop]
134- theorem DifferentiableOn.fun_pow (hf : DifferentiableOn π f s) (n : β) :
135- DifferentiableOn π (fun x => f x ^ n) s := fun x h => (hf x h).pow n
136-
137- @[fun_prop]
120+ @ [to_fun (attr := fun_prop)]
138121theorem DifferentiableOn.pow (hf : DifferentiableOn π f s) (n : β) :
139- DifferentiableOn π (f ^ n) s := hf.fun_pow n
122+ DifferentiableOn π (f ^ n) s := fun x h => (hf x h).pow n
140123
141124theorem differentiableOn_pow (n : β) {s : Set πΈ} : DifferentiableOn π (fun x : πΈ => x ^ n) s :=
142125 differentiableOn_id.pow n
143126
144- @ [simp, fun_prop]
145- theorem Differentiable.fun_pow (hf : Differentiable π f) (n : β) :
146- Differentiable π fun x => f x ^ n :=
147- fun x => (hf x).pow n
148-
149- @ [simp, fun_prop]
127+ @ [to_fun (attr := simp, fun_prop)]
150128theorem Differentiable.pow (hf : Differentiable π f) (n : β) : Differentiable π (f ^ n) :=
151- hf.fun_pow n
129+ fun x => (hf x).pow n
152130
153131theorem differentiable_pow (n : β) : Differentiable π fun x : πΈ => x ^ n :=
154132 differentiable_id.pow _
155133
156- theorem fderiv_fun_pow' (n : β) (hf : DifferentiableAt π f x) :
157- fderiv π (fun x β¦ f x ^ n) x
158- = (β i β Finset.range n, f x ^ (n.pred - i) β’> fderiv π f x <β’ f x ^ i) :=
159- hf.hasFDerivAt.pow' n |>.fderiv
160-
134+ @ [to_fun fderiv_fun_pow']
161135theorem fderiv_pow' (n : β) (hf : DifferentiableAt π f x) :
162136 fderiv π (f ^ n) x
163137 = (β i β Finset.range n, f x ^ (n.pred - i) β’> fderiv π f x <β’ f x ^ i) :=
164- fderiv_fun_pow ' n hf
138+ hf.hasFDerivAt.pow ' n |>.fderiv
165139
166140theorem fderiv_pow_ring' {x : πΈ} (n : β) :
167141 fderiv π (fun x : πΈ β¦ x ^ n) x
168142 = (β i β Finset.range n, x ^ (n.pred - i) β’> .id _ _ <β’ x ^ i) := by
169143 rw [fderiv_fun_pow' n differentiableAt_fun_id, fderiv_fun_id]
170144
171- theorem fderivWithin_fun_pow' (hxs : UniqueDiffWithinAt π s x)
172- (n : β) (hf : DifferentiableWithinAt π f s x) :
173- fderivWithin π (fun x β¦ f x ^ n) s x
174- = (β i β Finset.range n, f x ^ (n.pred - i) β’> fderivWithin π f s x <β’ f x ^ i) :=
175- hf.hasFDerivWithinAt.pow' n |>.fderivWithin hxs
176-
145+ @ [to_fun fderivWithin_fun_pow']
177146theorem fderivWithin_pow' (hxs : UniqueDiffWithinAt π s x)
178147 (n : β) (hf : DifferentiableWithinAt π f s x) :
179148 fderivWithin π (f ^ n) s x
180149 = (β i β Finset.range n, f x ^ (n.pred - i) β’> fderivWithin π f s x <β’ f x ^ i) :=
181- fderivWithin_fun_pow' hxs n hf
150+ hf.hasFDerivWithinAt.pow' n |>.fderivWithin hxs
182151
183152theorem fderivWithin_pow_ring' {s : Set πΈ} {x : πΈ} (n : β) (hxs : UniqueDiffWithinAt π s x) :
184153 fderivWithin π (fun x : πΈ β¦ x ^ n) s x
@@ -228,27 +197,20 @@ theorem hasFDerivAt_pow (n : β) {x : πΈ} :
228197 (fun x : πΈ β¦ x ^ n) ((n β’ x ^ (n - 1 )) β’ ContinuousLinearMap.id π πΈ) x :=
229198 hasFDerivAt_id _ |>.pow n
230199
231- theorem fderiv_fun_pow (n : β) (hf : DifferentiableAt π f x) :
232- fderiv π (fun x β¦ f x ^ n) x = (n β’ f x ^ (n - 1 )) β’ fderiv π f x :=
233- hf.hasFDerivAt.pow n |>.fderiv
234-
200+ @ [to_fun fderiv_fun_pow]
235201theorem fderiv_pow (n : β) (hf : DifferentiableAt π f x) :
236- fderiv π (fun x β¦ f x ^ n) x = (n β’ f x ^ (n - 1 )) β’ fderiv π f x :=
237- fderiv_fun_pow n hf
202+ fderiv π (f ^ n) x = (n β’ f x ^ (n - 1 )) β’ fderiv π f x :=
203+ hf.hasFDerivAt.pow n |>.fderiv
238204
239205theorem fderiv_pow_ring {x : πΈ} (n : β) :
240206 fderiv π (fun x : πΈ β¦ x ^ n) x = (n β’ x ^ (n - 1 )) β’ .id _ _ := by
241207 rw [fderiv_fun_pow n differentiableAt_fun_id, fderiv_fun_id]
242208
243- theorem fderivWithin_fun_pow (hxs : UniqueDiffWithinAt π s x)
244- (n : β) (hf : DifferentiableWithinAt π f s x) :
245- fderivWithin π (fun x β¦ f x ^ n) s x = (n β’ f x ^ (n - 1 )) β’ fderivWithin π f s x :=
246- hf.hasFDerivWithinAt.pow n |>.fderivWithin hxs
247-
209+ @ [to_fun fderivWithin_fun_pow]
248210theorem fderivWithin_pow (hxs : UniqueDiffWithinAt π s x)
249211 (n : β) (hf : DifferentiableWithinAt π f s x) :
250212 fderivWithin π (f ^ n) s x = (n β’ f x ^ (n - 1 )) β’ fderivWithin π f s x :=
251- fderivWithin_fun_pow hxs n hf
213+ hf.hasFDerivWithinAt.pow n |>.fderivWithin hxs
252214
253215theorem fderivWithin_pow_ring {s : Set πΈ} {x : πΈ} (n : β) (hxs : UniqueDiffWithinAt π s x) :
254216 fderivWithin π (fun x : πΈ β¦ x ^ n) s x = (n β’ x ^ (n - 1 )) β’ .id _ _ := by
0 commit comments