Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 2423ed8

Browse files
committed
chore(analysis/calculus/cont_diff): add missing lemmas and golfs (#17233)
Adds two trivial lemmas. Moreover, we golf a few proofs and remove non-terminal simps.
1 parent ae714fd commit 2423ed8

File tree

1 file changed

+25
-39
lines changed

1 file changed

+25
-39
lines changed

src/analysis/calculus/cont_diff.lean

Lines changed: 25 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -771,6 +771,10 @@ variable {𝕜}
771771
lemma iterated_fderiv_within_zero_eq_comp :
772772
iterated_fderiv_within 𝕜 0 f s = (continuous_multilinear_curry_fin0 𝕜 E F).symm ∘ f := rfl
773773

774+
lemma norm_iterated_fderiv_within_zero :
775+
∥iterated_fderiv_within 𝕜 0 f s x∥ = ∥f x∥ :=
776+
by rw [iterated_fderiv_within_zero_eq_comp, linear_isometry_equiv.norm_map]
777+
774778
lemma iterated_fderiv_within_succ_apply_left {n : ℕ} (m : fin (n + 1) → E):
775779
(iterated_fderiv_within 𝕜 (n + 1) f s x : (fin (n + 1) → E) → F) m
776780
= (fderiv_within 𝕜 (iterated_fderiv_within 𝕜 n f s) s x : E → (E [×n]→L[𝕜] F))
@@ -1456,10 +1460,11 @@ lemma iterated_fderiv_zero_eq_comp :
14561460

14571461
lemma norm_iterated_fderiv_zero :
14581462
∥iterated_fderiv 𝕜 0 f x∥ = ∥f x∥ :=
1459-
begin
1460-
rw [←continuous_multilinear_map.fin0_apply_norm, iterated_fderiv_zero_apply],
1461-
exact fin.elim0',
1462-
end
1463+
by rw [iterated_fderiv_zero_eq_comp, linear_isometry_equiv.norm_map]
1464+
1465+
lemma iterated_fderiv_with_zero_eq :
1466+
iterated_fderiv_within 𝕜 0 f s = iterated_fderiv 𝕜 0 f :=
1467+
by { ext, refl }
14631468

14641469
lemma iterated_fderiv_succ_apply_left {n : ℕ} (m : fin (n + 1) → E):
14651470
(iterated_fderiv 𝕜 (n + 1) f x : (fin (n + 1) → E) → F) m
@@ -1592,8 +1597,7 @@ theorem cont_diff_top_iff_fderiv :
15921597
cont_diff 𝕜 ∞ f ↔
15931598
differentiable 𝕜 f ∧ cont_diff 𝕜 ∞ (λ y, fderiv 𝕜 f y) :=
15941599
begin
1595-
simp [cont_diff_on_univ.symm, differentiable_on_univ.symm, fderiv_within_univ.symm,
1596-
- fderiv_within_univ],
1600+
simp only [← cont_diff_on_univ, ← differentiable_on_univ, ← fderiv_within_univ],
15971601
rw cont_diff_on_top_iff_fderiv_within unique_diff_on_univ,
15981602
end
15991603

@@ -1607,13 +1611,10 @@ continuous. -/
16071611
lemma cont_diff.continuous_fderiv_apply
16081612
(h : cont_diff 𝕜 n f) (hn : 1 ≤ n) :
16091613
continuous (λp : E × E, (fderiv 𝕜 f p.1 : E → F) p.2) :=
1610-
begin
1611-
have A : continuous (λq : (E →L[𝕜] F) × E, q.1 q.2) := is_bounded_bilinear_map_apply.continuous,
1612-
have B : continuous (λp : E × E, (fderiv 𝕜 f p.1, p.2)),
1613-
{ apply continuous.prod_mk _ continuous_snd,
1614-
exact continuous.comp (h.continuous_fderiv hn) continuous_fst },
1615-
exact A.comp B
1616-
end
1614+
have A : continuous (λq : (E →L[𝕜] F) × E, q.1 q.2) := is_bounded_bilinear_map_apply.continuous,
1615+
have B : continuous (λp : E × E, (fderiv 𝕜 f p.1, p.2)) :=
1616+
((h.continuous_fderiv hn).comp continuous_fst).prod_mk continuous_snd,
1617+
A.comp B
16171618

16181619
/-! ### Constants -/
16191620

@@ -1634,7 +1635,7 @@ lemma cont_diff_zero_fun :
16341635
begin
16351636
apply cont_diff_of_differentiable_iterated_fderiv (λm hm, _),
16361637
rw iterated_fderiv_zero_fun,
1637-
apply differentiable_const (0 : (E [×m]→L[𝕜] F))
1638+
exact differentiable_const (0 : (E [×m]→L[𝕜] F))
16381639
end
16391640

16401641
/--
@@ -2312,22 +2313,12 @@ lemma cont_diff_prod_assoc_symm : cont_diff 𝕜 ⊤ $ (equiv.prod_assoc E F G).
23122313
lemma cont_diff_on_fderiv_within_apply {m n : with_top ℕ} {s : set E}
23132314
{f : E → F} (hf : cont_diff_on 𝕜 n f s) (hs : unique_diff_on 𝕜 s) (hmn : m + 1 ≤ n) :
23142315
cont_diff_on 𝕜 m (λp : E × E, (fderiv_within 𝕜 f s p.1 : E →L[𝕜] F) p.2) (s ×ˢ univ) :=
2315-
begin
2316-
have A : cont_diff 𝕜 m (λp : (E →L[𝕜] F) × E, p.1 p.2),
2317-
{ apply is_bounded_bilinear_map.cont_diff,
2318-
exact is_bounded_bilinear_map_apply },
2319-
have B : cont_diff_on 𝕜 m
2320-
(λ (p : E × E), ((fderiv_within 𝕜 f s p.fst), p.snd)) (s ×ˢ univ),
2321-
{ apply cont_diff_on.prod _ _,
2322-
{ have I : cont_diff_on 𝕜 m (λ (x : E), fderiv_within 𝕜 f s x) s :=
2323-
hf.fderiv_within hs hmn,
2324-
have J : cont_diff_on 𝕜 m (λ (x : E × E), x.1) (s ×ˢ univ) :=
2325-
cont_diff_fst.cont_diff_on,
2326-
exact cont_diff_on.comp I J (prod_subset_preimage_fst _ _) },
2327-
{ apply cont_diff.cont_diff_on _ ,
2328-
apply is_bounded_linear_map.snd.cont_diff } },
2329-
exact A.comp_cont_diff_on B
2330-
end
2316+
have I : cont_diff_on 𝕜 m (λ (x : E), fderiv_within 𝕜 f s x) s := hf.fderiv_within hs hmn,
2317+
have J : cont_diff_on 𝕜 m (λ (x : E × E), x.1) (s ×ˢ univ) := cont_diff_fst.cont_diff_on,
2318+
have A : cont_diff 𝕜 m (λp : (E →L[𝕜] F) × E, p.1 p.2) := is_bounded_bilinear_map_apply.cont_diff,
2319+
have B : cont_diff_on 𝕜 m (λ (p : E × E), ((fderiv_within 𝕜 f s p.fst), p.snd)) (s ×ˢ univ) :=
2320+
(I.comp J (prod_subset_preimage_fst _ _)).prod is_bounded_linear_map.snd.cont_diff.cont_diff_on,
2321+
A.comp_cont_diff_on B
23312322

23322323
/-- The bundled derivative of a `C^{n+1}` function is `C^n`. -/
23332324
lemma cont_diff.cont_diff_fderiv_apply {f : E → F}
@@ -2605,7 +2596,7 @@ lemma cont_diff.sum
26052596
{ι : Type*} {f : ι → E → F} {s : finset ι}
26062597
(h : ∀ i ∈ s, cont_diff 𝕜 n (λ x, f i x)) :
26072598
cont_diff 𝕜 n (λ x, (∑ i in s, f i x)) :=
2608-
by simp [← cont_diff_on_univ] at *; exact cont_diff_on.sum h
2599+
by simp only [← cont_diff_on_univ] at *; exact cont_diff_on.sum h
26092600

26102601
/-! ### Product of two functions -/
26112602

@@ -3340,9 +3331,7 @@ theorem cont_diff_on_succ_iff_deriv_of_open {n : ℕ} (hs : is_open s₂) :
33403331
begin
33413332
rw cont_diff_on_succ_iff_deriv_within hs.unique_diff_on,
33423333
congrm _ ∧ _,
3343-
apply cont_diff_on_congr,
3344-
assume x hx,
3345-
exact deriv_within_of_open hs hx
3334+
exact cont_diff_on_congr (λ _, deriv_within_of_open hs)
33463335
end
33473336

33483337
/-- A function is `C^∞` on a domain with unique derivatives if and only if it is differentiable
@@ -3371,9 +3360,7 @@ theorem cont_diff_on_top_iff_deriv_of_open (hs : is_open s₂) :
33713360
begin
33723361
rw cont_diff_on_top_iff_deriv_within hs.unique_diff_on,
33733362
congrm _ ∧ _,
3374-
apply cont_diff_on_congr,
3375-
assume x hx,
3376-
exact deriv_within_of_open hs hx
3363+
exact cont_diff_on_congr (λ _, deriv_within_of_open hs)
33773364
end
33783365

33793366
lemma cont_diff_on.deriv_within
@@ -3422,8 +3409,7 @@ theorem cont_diff_top_iff_deriv :
34223409
cont_diff 𝕜 ∞ f₂ ↔
34233410
differentiable 𝕜 f₂ ∧ cont_diff 𝕜 ∞ (deriv f₂) :=
34243411
begin
3425-
simp [cont_diff_on_univ.symm, differentiable_on_univ.symm, deriv_within_univ.symm,
3426-
- deriv_within_univ],
3412+
simp only [← cont_diff_on_univ, ← differentiable_on_univ, ← deriv_within_univ],
34273413
rw cont_diff_on_top_iff_deriv_within unique_diff_on_univ,
34283414
end
34293415

0 commit comments

Comments
 (0)