@@ -22,40 +22,6 @@ define a coercion to function for this type, and for `f : smooth_bump_function I
22
22
The actual statements involve (pre)images under `ext_chart_at I f.c` and are given as lemmas in the
23
23
`smooth_bump_function` namespace.
24
24
25
- We also define `smooth_bump_covering` of a set `s : set M` to be a collection of
26
- `smooth_bump_function`s such that their supports is a locally finite family of sets, and for each
27
- point `x ∈ s` there exists a bump function `f i` in the collection such that `f i =ᶠ[𝓝 x] 1`. This
28
- structure is the main building block in the construction of a smooth partition of unity (see TODO),
29
- and can be used instead of a partition of unity in some proofs.
30
-
31
- We say that `f : smooth_bump_covering I s` is *subordinate* to a map `U : M → set M` if for each
32
- index `i`, we have `closure (support (f i)) ⊆ U (f i).c`. This notion is a bit more general than
33
- being subordinate to an open covering of `M`, because we make no assumption about the way `U x`
34
- depends on `x`.
35
-
36
- We prove that on a smooth finitely dimensional real manifold with `σ`-compact Hausdorff topology,
37
- for any `U : M → set M` such that `∀ x ∈ s, U x ∈ 𝓝 x` there exists a `smooth_bump_covering I s`
38
- subordinate to `U`. Then we use this fact to prove a version of the Whitney embedding theorem: any
39
- compact real manifold can be embedded into `ℝ^n` for large enough `n`.
40
-
41
- ## TODO
42
-
43
- * Prove the weak Whitney embedding theorem: any `σ`-compact smooth `m`-dimensional manifold can be
44
- embedded into `ℝ^(2m+1)`. This requires a version of Sard's theorem: for a locally Lipschitz
45
- continuous map `f : ℝ^m → ℝ^n`, `m < n`, the range has Hausdorff dimension at most `m`, hence it
46
- has measure zero.
47
-
48
- * Construct a smooth partition of unity. While we can do it now, the formulas will be much nicer if
49
- we wait for `finprod` and `finsum` coming in #6355.
50
-
51
- * Deduce some corollaries from existence of a smooth partition of unity.
52
-
53
- - Prove that for any disjoint closed sets `s`, `t` there exists a smooth function `f` suth that
54
- `f` equals zero on `s` and `f` equals one on `t`.
55
-
56
- - Build a framework for to transfer local definitions to global using partition of unity and use
57
- it to define, e.g., the integral of a differential form over a manifold.
58
-
59
25
## Tags
60
26
61
27
manifold, smooth bump function, partition of unity, Whitney theorem
@@ -357,248 +323,3 @@ begin
357
323
end
358
324
359
325
end smooth_bump_function
360
-
361
- /-!
362
- ### Covering by supports of smooth bump functions
363
-
364
- In this section we define `smooth_bump_covering I s` to be a collection of `smooth_bump_function`s
365
- such that their supports is a locally finite family of sets and for each `x ∈ s` some function `f i`
366
- from the collection is equal to `1` in a neighborhood of `x`. A covering of this type is useful to
367
- construct a smooth partition of unity and can be used instead of a partition of unity in some
368
- proofs.
369
-
370
- We prove that on a smooth finite dimensional real manifold with `σ`-compact Hausdorff topology,
371
- for any `U : M → set M` such that `∀ x ∈ s, U x ∈ 𝓝 x` there exists a `smooth_bump_covering I s`
372
- subordinate to `U`. Then we use this fact to prove a version of the Whitney embedding theorem: any
373
- compact real manifold can be embedded into `ℝ^n` for large enough `n`.
374
- -/
375
-
376
- /-- We say that a collection of `smooth_bump_function`s is a `smooth_bump_covering` of a set `s` if
377
-
378
- * `(f i).c ∈ s` for all `i`;
379
- * the family `λ i, support (f i)` is locally finite;
380
- * for each point `x ∈ s` there exists `i` such that `f i =ᶠ[𝓝 x] 1`;
381
- in other words, `x` belongs to the interior of `{y | f i y = 1}`;
382
-
383
- If `M` is a finite dimensional real manifold which is a sigma-compact Hausdorff topological space,
384
- then a choice of `smooth_bump_covering` is available as `smooth_bump_covering.choice_set`, see also
385
- `smooth_bump_covering.choice` for the case `s = univ` and
386
- `smooth_bump_covering.exists_is_subordinate` for a lemma providing a covering subordinate to a given
387
- `U : M → set M`.
388
-
389
- This covering can be used, e.g., to construct a partition of unity and to prove the weak
390
- Whitney embedding theorem. -/
391
- structure smooth_bump_covering (s : set M) :=
392
- (ι : Type uM)
393
- (c : ι → M)
394
- (to_fun : Π i, smooth_bump_function I (c i))
395
- (c_mem' : ∀ i, c i ∈ s)
396
- (locally_finite' : locally_finite (λ i, support (to_fun i)))
397
- (eventually_eq_one' : ∀ x ∈ s, ∃ i, to_fun i =ᶠ[𝓝 x] 1 )
398
-
399
- namespace smooth_bump_covering
400
-
401
- variables {s : set M} {U : M → set M} (fs : smooth_bump_covering I s) {I}
402
-
403
- instance : has_coe_to_fun (smooth_bump_covering I s) := ⟨_, to_fun⟩
404
-
405
- @[simp] lemma coe_mk (ι : Type uM) (c : ι → M) (to_fun : Π i, smooth_bump_function I (c i))
406
- (h₁ h₂ h₃) : ⇑(mk ι c to_fun h₁ h₂ h₃ : smooth_bump_covering I s) = to_fun :=
407
- rfl
408
-
409
- /--
410
- We say that `f : smooth_bump_covering I s` is *subordinate* to a map `U : M → set M` if for each
411
- index `i`, we have `closure (support (f i)) ⊆ U (f i).c`. This notion is a bit more general than
412
- being subordinate to an open covering of `M`, because we make no assumption about the way `U x`
413
- depends on `x`.
414
- -/
415
- def is_subordinate {s : set M} (f : smooth_bump_covering I s) (U : M → set M) :=
416
- ∀ i, closure (support $ f i) ⊆ U (f.c i)
417
-
418
- variable (I)
419
-
420
- /-- Let `M` be a smooth manifold with corners modelled on a finite dimensional real vector space.
421
- Suppose also that `M` is a Hausdorff `σ`-compact topological space. Let `s` be a closed set
422
- in `M` and `U : M → set M` be a collection of sets such that `U x ∈ 𝓝 x` for every `x ∈ s`.
423
- Then there exists a smooth bump covering of `s` that is subordinate to `U`. -/
424
- lemma exists_is_subordinate [t2_space M] [sigma_compact_space M] (hs : is_closed s)
425
- (hU : ∀ x ∈ s, U x ∈ 𝓝 x) :
426
- ∃ f : smooth_bump_covering I s, f.is_subordinate U :=
427
- begin
428
- -- First we deduce some missing instances
429
- haveI : locally_compact_space H := I.locally_compact,
430
- haveI : locally_compact_space M := charted_space.locally_compact H,
431
- haveI : normal_space M := normal_of_paracompact_t2,
432
- -- Next we choose a covering by supports of smooth bump functions
433
- have hB := λ x hx, smooth_bump_function.nhds_basis_support I (hU x hx),
434
- rcases refinement_of_locally_compact_sigma_compact_of_nhds_basis_set hs hB
435
- with ⟨ι, c, f, hf, hsub', hfin⟩, choose hcs hfU using hf,
436
- /- Then we use the shrinking lemma to get a covering by smaller open -/
437
- rcases exists_subset_Union_closed_subset hs (λ i, (f i).open_support)
438
- (λ x hx, hfin.point_finite x) hsub' with ⟨V, hsV, hVc, hVf⟩,
439
- choose r hrR hr using λ i, (f i).exists_r_pos_lt_subset_ball (hVc i) (hVf i),
440
- refine ⟨⟨ι, c, λ i, (f i).update_r (r i) (hrR i), hcs, _, λ x hx, _⟩, λ i, _⟩,
441
- { simpa only [smooth_bump_function.support_update_r] },
442
- { refine (mem_Union.1 $ hsV hx).imp (λ i hi, _),
443
- exact ((f i).update_r _ _).eventually_eq_one_of_dist_lt
444
- ((f i).support_subset_source $ hVf _ hi) (hr i hi).2 },
445
- { simpa only [coe_mk, smooth_bump_function.support_update_r] using hfU i }
446
- end
447
-
448
- /-- Choice of a covering of a closed set `s` by supports of smooth bump functions. -/
449
- def choice_set [t2_space M] [sigma_compact_space M] (s : set M) (hs : is_closed s) :
450
- smooth_bump_covering I s :=
451
- (exists_is_subordinate I hs (λ x hx, univ_mem_sets)).some
452
-
453
- instance [t2_space M] [sigma_compact_space M] {s : set M} [is_closed s] :
454
- inhabited (smooth_bump_covering I s) :=
455
- ⟨choice_set I s ‹_›⟩
456
-
457
- variable (M)
458
-
459
- /-- Choice of a covering of a manifold by supports of smooth bump functions. -/
460
- def choice [t2_space M] [sigma_compact_space M] :
461
- smooth_bump_covering I (univ : set M) :=
462
- choice_set I univ is_closed_univ
463
-
464
- variables {I M}
465
-
466
- protected lemma locally_finite : locally_finite (λ i, support (fs i)) := fs.locally_finite'
467
-
468
- protected lemma point_finite (x : M) : {i | fs i x ≠ 0 }.finite :=
469
- fs.locally_finite.point_finite x
470
-
471
- lemma mem_chart_at_source_of_eq_one {i : fs.ι} {x : M} (h : fs i x = 1 ) :
472
- x ∈ (chart_at H (fs.c i)).source :=
473
- (fs i).support_subset_source $ by simp [h]
474
-
475
- lemma mem_ext_chart_at_source_of_eq_one {i : fs.ι} {x : M} (h : fs i x = 1 ) :
476
- x ∈ (ext_chart_at I (fs.c i)).source :=
477
- by { rw ext_chart_at_source, exact fs.mem_chart_at_source_of_eq_one h }
478
-
479
- /-- Index of a bump function such that `fs i =ᶠ[𝓝 x] 1`. -/
480
- def ind (x : M) (hx : x ∈ s) : fs.ι := (fs.eventually_eq_one' x hx).some
481
-
482
- lemma eventually_eq_one (x : M) (hx : x ∈ s) : fs (fs.ind x hx) =ᶠ[𝓝 x] 1 :=
483
- (fs.eventually_eq_one' x hx).some_spec
484
-
485
- lemma apply_ind (x : M) (hx : x ∈ s) : fs (fs.ind x hx) x = 1 :=
486
- (fs.eventually_eq_one x hx).eq_of_nhds
487
-
488
- lemma mem_support_ind (x : M) (hx : x ∈ s) : x ∈ support (fs $ fs.ind x hx) :=
489
- by simp [fs.apply_ind x hx]
490
-
491
- lemma mem_chart_at_ind_source (x : M) (hx : x ∈ s) :
492
- x ∈ (chart_at H (fs.c (fs.ind x hx))).source :=
493
- fs.mem_chart_at_source_of_eq_one (fs.apply_ind x hx)
494
-
495
- lemma mem_ext_chart_at_ind_source (x : M) (hx : x ∈ s) :
496
- x ∈ (ext_chart_at I (fs.c (fs.ind x hx))).source :=
497
- fs.mem_ext_chart_at_source_of_eq_one (fs.apply_ind x hx)
498
-
499
- section embedding
500
-
501
- /-!
502
- ### Whitney embedding theorem
503
-
504
- In this section we prove a version of the Whitney embedding theorem: for any compact real manifold
505
- `M`, for sufficiently large `n` there exists a smooth embedding `M → ℝ^n`.
506
- -/
507
-
508
- instance fintype_ι_of_compact [compact_space M] : fintype fs.ι :=
509
- fs.locally_finite.fintype_of_compact $ λ i, (fs i).nonempty_support
510
-
511
- variables [t2_space M] [fintype fs.ι] (f : smooth_bump_covering I (univ : set M))
512
- [fintype f.ι]
513
-
514
- /-- Smooth embedding of `M` into `(E × ℝ) ^ f.ι`. -/
515
- def embedding_pi_tangent : C^∞⟮I, M; 𝓘(ℝ, fs.ι → (E × ℝ)), fs.ι → (E × ℝ)⟯ :=
516
- { to_fun := λ x i, (fs i x • ext_chart_at I (fs.c i) x, fs i x),
517
- times_cont_mdiff_to_fun := times_cont_mdiff_pi_space.2 $ λ i,
518
- ((fs i).smooth_smul times_cont_mdiff_on_ext_chart_at).prod_mk_space ((fs i).smooth) }
519
-
520
- local attribute [simp] lemma embedding_pi_tangent_coe :
521
- ⇑fs.embedding_pi_tangent = λ x i, (fs i x • ext_chart_at I (fs.c i) x, fs i x) :=
522
- rfl
523
-
524
- lemma embedding_pi_tangent_inj_on : inj_on fs.embedding_pi_tangent s :=
525
- begin
526
- intros x hx y hy h,
527
- simp only [embedding_pi_tangent_coe, funext_iff] at h,
528
- obtain ⟨h₁, h₂⟩ := prod.mk.inj_iff.1 (h (fs.ind x hx)),
529
- rw [fs.apply_ind x hx] at h₂,
530
- rw [← h₂, fs.apply_ind x hx, one_smul, one_smul] at h₁,
531
- have := fs.mem_ext_chart_at_source_of_eq_one h₂.symm,
532
- exact (ext_chart_at I (fs.c _)).inj_on (fs.mem_ext_chart_at_ind_source x hx) this h₁
533
- end
534
-
535
- lemma embedding_pi_tangent_injective :
536
- injective f.embedding_pi_tangent :=
537
- injective_iff_inj_on_univ.2 f.embedding_pi_tangent_inj_on
538
-
539
- lemma comp_embedding_pi_tangent_mfderiv (x : M) (hx : x ∈ s) :
540
- ((continuous_linear_map.fst ℝ E ℝ).comp
541
- (@continuous_linear_map.proj ℝ _ fs.ι (λ _, E × ℝ) _ _
542
- (λ _, infer_instance) (fs.ind x hx))).comp
543
- (mfderiv I 𝓘(ℝ, fs.ι → (E × ℝ)) fs.embedding_pi_tangent x) =
544
- mfderiv I I (chart_at H (fs.c (fs.ind x hx))) x :=
545
- begin
546
- set L := ((continuous_linear_map.fst ℝ E ℝ).comp
547
- (@continuous_linear_map.proj ℝ _ fs.ι (λ _, E × ℝ) _ _ (λ _, infer_instance) (fs.ind x hx))),
548
- have := (L.has_mfderiv_at.comp x (fs.embedding_pi_tangent.mdifferentiable_at.has_mfderiv_at)),
549
- convert has_mfderiv_at_unique this _,
550
- refine (has_mfderiv_at_ext_chart_at I (fs.mem_chart_at_ind_source x hx)).congr_of_eventually_eq _,
551
- refine (fs.eventually_eq_one x hx).mono (λ y hy, _),
552
- simp only [embedding_pi_tangent_coe, continuous_linear_map.coe_comp', (∘),
553
- continuous_linear_map.coe_fst', continuous_linear_map.proj_apply],
554
- rw [hy, pi.one_apply, one_smul]
555
- end
556
-
557
- lemma embedding_pi_tangent_ker_mfderiv (x : M) (hx : x ∈ s) :
558
- (mfderiv I 𝓘(ℝ, fs.ι → (E × ℝ)) fs.embedding_pi_tangent x).ker = ⊥ :=
559
- begin
560
- apply bot_unique,
561
- rw [← (mdifferentiable_chart I (fs.c (fs.ind x hx))).ker_mfderiv_eq_bot
562
- (fs.mem_chart_at_ind_source x hx), ← comp_embedding_pi_tangent_mfderiv],
563
- exact linear_map.ker_le_ker_comp _ _
564
- end
565
-
566
- lemma embedding_pi_tangent_injective_mfderiv (x : M) (hx : x ∈ s) :
567
- injective (mfderiv I 𝓘(ℝ, fs.ι → (E × ℝ)) fs.embedding_pi_tangent x) :=
568
- linear_map.ker_eq_bot.1 (fs.embedding_pi_tangent_ker_mfderiv x hx)
569
-
570
- end embedding
571
-
572
- /-- Baby version of the Whitney weak embedding theorem: if `M` admits a finite covering by
573
- supports of bump functions, then for some `n` it can be immersed into the `n`-dimensional
574
- Euclidean space. -/
575
- lemma exists_immersion_finrank [t2_space M] (f : smooth_bump_covering I (univ : set M))
576
- [fintype f.ι] :
577
- ∃ (n : ℕ) (e : M → euclidean_space ℝ (fin n)), smooth I (𝓡 n) e ∧
578
- injective e ∧ ∀ x : M, injective (mfderiv I (𝓡 n) e x) :=
579
- begin
580
- set F := euclidean_space ℝ (fin $ finrank ℝ (f.ι → (E × ℝ))),
581
- letI : finite_dimensional ℝ (E × ℝ) := by apply_instance,
582
- set eEF : (f.ι → (E × ℝ)) ≃L[ℝ] F :=
583
- continuous_linear_equiv.of_finrank_eq finrank_euclidean_space_fin.symm,
584
- refine ⟨_, eEF ∘ f.embedding_pi_tangent,
585
- eEF.to_diffeomorph.smooth.comp f.embedding_pi_tangent.smooth,
586
- eEF.injective.comp f.embedding_pi_tangent_injective, λ x, _⟩,
587
- rw [mfderiv_comp _ eEF.differentiable_at.mdifferentiable_at
588
- f.embedding_pi_tangent.mdifferentiable_at, eEF.mfderiv_eq],
589
- exact eEF.injective.comp (f.embedding_pi_tangent_injective_mfderiv _ trivial)
590
- end
591
-
592
- end smooth_bump_covering
593
-
594
- /-- Baby version of the Whitney weak embedding theorem: if `M` admits a finite covering by
595
- supports of bump functions, then for some `n` it can be embedded into the `n`-dimensional
596
- Euclidean space. -/
597
- lemma exists_embedding_finrank_of_compact [t2_space M] [compact_space M] :
598
- ∃ (n : ℕ) (e : M → euclidean_space ℝ (fin n)), smooth I (𝓡 n) e ∧
599
- closed_embedding e ∧ ∀ x : M, injective (mfderiv I (𝓡 n) e x) :=
600
- begin
601
- rcases (smooth_bump_covering.choice I M).exists_immersion_finrank
602
- with ⟨n, e, hsmooth, hinj, hinj_mfderiv⟩,
603
- exact ⟨n, e, hsmooth, hsmooth.continuous.closed_embedding hinj, hinj_mfderiv⟩
604
- end
0 commit comments