@@ -8,6 +8,7 @@ import Mathlib.Analysis.NormedSpace.AddTorsor
8
8
import Mathlib.Analysis.NormedSpace.AffineIsometry
9
9
import Mathlib.Analysis.NormedSpace.OperatorNorm
10
10
import Mathlib.Analysis.NormedSpace.RieszLemma
11
+ import Mathlib.Analysis.NormedSpace.Pointwise
11
12
import Mathlib.Topology.Algebra.Module.FiniteDimension
12
13
import Mathlib.Topology.Algebra.InfiniteSum.Module
13
14
import Mathlib.Topology.Instances.Matrix
@@ -494,39 +495,33 @@ theorem HasCompactMulSupport.eq_one_or_finiteDimensional {X : Type*} [Topologica
494
495
#align has_compact_support.eq_zero_or_finite_dimensional HasCompactSupport.eq_zero_or_finiteDimensional
495
496
496
497
/-- A locally compact normed vector space is proper. -/
497
- lemma properSpace_of_locallyCompactSpace (𝕜 : Type *) [NontriviallyNormedField 𝕜]
498
- {E : Type *} [SeminormedAddCommGroup E] [NormedSpace 𝕜 E]
499
- [LocallyCompactSpace E] : ProperSpace E := by
498
+ lemma ProperSpace.of_locallyCompactSpace (𝕜 : Type *) [NontriviallyNormedField 𝕜]
499
+ {E : Type *} [SeminormedAddCommGroup E] [NormedSpace 𝕜 E] [LocallyCompactSpace E] :
500
+ ProperSpace E := by
500
501
rcases exists_isCompact_closedBall (0 : E) with ⟨r, rpos, hr⟩
501
502
rcases NormedField.exists_one_lt_norm 𝕜 with ⟨c, hc⟩
502
- have M : ∀ n (x : E), IsCompact (closedBall x (‖c‖^n * r)) := by
503
- intro n x
504
- let f : E → E := fun y ↦ c^n • y + x
505
- have Cf : Continuous f := (continuous_id.const_smul _).add continuous_const
506
- have A : closedBall x (‖c‖^n * r) ⊆ f '' (closedBall 0 r) := by
507
- rintro y hy
508
- refine ⟨(c^n)⁻¹ • (y - x), ?_, ?_⟩
509
- · simpa [dist_eq_norm, norm_smul, inv_mul_le_iff (pow_pos (zero_lt_one.trans hc) _)] using hy
510
- · have : c^n ≠ 0 := pow_ne_zero _ (norm_pos_iff.1 (zero_lt_one.trans hc))
511
- simp [smul_smul, mul_inv_cancel this]
512
- exact (hr.image Cf).of_isClosed_subset isClosed_ball A
513
- refine ⟨fun x s ↦ ?_⟩
514
- have L : ∀ᶠ n in (atTop : Filter ℕ), s ≤ ‖c‖^n * r := by
515
- have : Tendsto (fun n ↦ ‖c‖^n * r) atTop atTop :=
516
- Tendsto.atTop_mul_const rpos (tendsto_pow_atTop_atTop_of_one_lt hc)
517
- exact Tendsto.eventually_ge_atTop this s
518
- rcases L.exists with ⟨n, hn⟩
519
- exact (M n x).of_isClosed_subset isClosed_ball (closedBall_subset_closedBall hn)
503
+ have hC : ∀ n, IsCompact (closedBall (0 : E) (‖c‖^n * r)) := fun n ↦ by
504
+ have : c ^ n ≠ 0 := pow_ne_zero _ <| fun h ↦ by simp [h, zero_le_one.not_lt] at hc
505
+ simpa [_root_.smul_closedBall' this] using hr.smul (c ^ n)
506
+ have hTop : Tendsto (fun n ↦ ‖c‖^n * r) atTop atTop :=
507
+ Tendsto.atTop_mul_const rpos (tendsto_pow_atTop_atTop_of_one_lt hc)
508
+ exact .of_seq_closedBall hTop (eventually_of_forall hC)
509
+
510
+ @[deprecated] -- Since 2024/01/31
511
+ alias properSpace_of_locallyCompactSpace := ProperSpace.of_locallyCompactSpace
520
512
521
513
variable (E)
522
- lemma properSpace_of_locallyCompact_module [Nontrivial E] [LocallyCompactSpace E] :
523
- ProperSpace 𝕜 := by
514
+ lemma ProperSpace.of_locallyCompact_module [Nontrivial E] [LocallyCompactSpace E] :
515
+ ProperSpace 𝕜 :=
524
516
have : LocallyCompactSpace 𝕜 := by
525
517
obtain ⟨v, hv⟩ : ∃ v : E, v ≠ 0 := exists_ne 0
526
518
let L : 𝕜 → E := fun t ↦ t • v
527
519
have : ClosedEmbedding L := closedEmbedding_smul_left hv
528
520
apply ClosedEmbedding.locallyCompactSpace this
529
- exact properSpace_of_locallyCompactSpace 𝕜
521
+ .of_locallyCompactSpace 𝕜
522
+
523
+ @[deprecated] -- Since 2024/01/31
524
+ alias properSpace_of_locallyCompact_module := ProperSpace.of_locallyCompact_module
530
525
531
526
end Riesz
532
527
@@ -589,7 +584,7 @@ We do not register this as an instance to avoid an instance loop when trying to
589
584
properness of `𝕜`, and the search for `𝕜` as an unknown metavariable. Declare the instance
590
585
explicitly when needed. -/
591
586
theorem FiniteDimensional.proper [FiniteDimensional 𝕜 E] : ProperSpace E := by
592
- have : ProperSpace 𝕜 := properSpace_of_locallyCompactSpace 𝕜
587
+ have : ProperSpace 𝕜 := .of_locallyCompactSpace 𝕜
593
588
set e := ContinuousLinearEquiv.ofFinrankEq (@finrank_fin_fun 𝕜 _ _ (finrank 𝕜 E)).symm
594
589
exact e.symm.antilipschitz.properSpace e.symm.continuous e.symm.surjective
595
590
#align finite_dimensional.proper FiniteDimensional.proper
@@ -609,7 +604,7 @@ instance {𝕜 E : Type*} [NontriviallyNormedField 𝕜] [CompleteSpace 𝕜]
609
604
[NormedAddCommGroup E] [NormedSpace 𝕜 E] [LocallyCompactSpace E] (S : Submodule 𝕜 E) :
610
605
ProperSpace S := by
611
606
nontriviality E
612
- have : ProperSpace 𝕜 := properSpace_of_locallyCompact_module 𝕜 E
607
+ have : ProperSpace 𝕜 := .of_locallyCompact_module 𝕜 E
613
608
have : FiniteDimensional 𝕜 E := finiteDimensional_of_locallyCompactSpace 𝕜
614
609
exact FiniteDimensional.proper 𝕜 S
615
610
0 commit comments