Skip to content

Commit 29aaa17

Browse files
committed
feat: generalize ContinuousMultilinearMap.restrictScalarsLinear (#16110)
... from normed spaces to topological spaces. Also drop the `Fintype` assumption.
1 parent b98cba3 commit 29aaa17

File tree

2 files changed

+55
-11
lines changed

2 files changed

+55
-11
lines changed

Mathlib/Analysis/NormedSpace/Multilinear/Basic.lean

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -657,17 +657,6 @@ def restrictScalarsₗᵢ : ContinuousMultilinearMap 𝕜 E G →ₗᵢ[𝕜'] C
657657
map_smul' _ _ := rfl
658658
norm_map' _ := rfl
659659

660-
/-- `ContinuousMultilinearMap.restrictScalars` as a `ContinuousLinearMap`. -/
661-
def restrictScalarsLinear : ContinuousMultilinearMap 𝕜 E G →L[𝕜'] ContinuousMultilinearMap 𝕜' E G :=
662-
(restrictScalarsₗᵢ 𝕜').toContinuousLinearMap
663-
664-
variable {𝕜'}
665-
666-
theorem continuous_restrictScalars :
667-
Continuous
668-
(restrictScalars 𝕜' : ContinuousMultilinearMap 𝕜 E G → ContinuousMultilinearMap 𝕜' E G) :=
669-
(restrictScalarsLinear 𝕜').continuous
670-
671660
end RestrictScalars
672661

673662
/-- The difference `f m₁ - f m₂` is controlled in terms of `‖f‖` and `‖m₁ - m₂‖`, precise version.

Mathlib/Topology/Algebra/Module/Multilinear/Topology.lean

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ instance instUniformContinuousConstSMul {M : Type*}
9393
haveI := uniformContinuousConstSMul_of_continuousConstSMul M F
9494
uniformEmbedding_toUniformOnFun.uniformContinuousConstSMul fun _ _ ↦ rfl
9595

96+
section CompleteSpace
97+
9698
variable [∀ i, ContinuousSMul 𝕜 (E i)] [ContinuousConstSMul 𝕜 F] [CompleteSpace F] [T2Space F]
9799

98100
open UniformOnFun in
@@ -116,6 +118,30 @@ instance instCompleteSpace [∀ i, TopologicalAddGroup (E i)] [SequentialSpace (
116118
CompleteSpace (ContinuousMultilinearMap 𝕜 E F) :=
117119
completeSpace <| .of_seq fun _u x hux ↦ (hux.isVonNBounded_range 𝕜).insert x
118120

121+
end CompleteSpace
122+
123+
section RestrictScalars
124+
125+
variable (𝕜' : Type*) [NontriviallyNormedField 𝕜'] [NormedAlgebra 𝕜' 𝕜]
126+
[∀ i, Module 𝕜' (E i)] [∀ i, IsScalarTower 𝕜' 𝕜 (E i)] [Module 𝕜' F] [IsScalarTower 𝕜' 𝕜 F]
127+
[∀ i, ContinuousSMul 𝕜 (E i)]
128+
129+
theorem uniformEmbedding_restrictScalars :
130+
UniformEmbedding
131+
(restrictScalars 𝕜' : ContinuousMultilinearMap 𝕜 E F → ContinuousMultilinearMap 𝕜' E F) := by
132+
letI : NontriviallyNormedField 𝕜 :=
133+
let ⟨x, hx⟩ := @NontriviallyNormedField.non_trivial 𝕜' _; ⟨algebraMap 𝕜' 𝕜 x, by simpa⟩⟩
134+
rw [← uniformEmbedding_toUniformOnFun.of_comp_iff]
135+
convert uniformEmbedding_toUniformOnFun using 4 with s
136+
exact ⟨fun h ↦ h.extend_scalars _, fun h ↦ h.restrict_scalars _⟩
137+
138+
theorem uniformContinuous_restrictScalars :
139+
UniformContinuous
140+
(restrictScalars 𝕜' : ContinuousMultilinearMap 𝕜 E F → ContinuousMultilinearMap 𝕜' E F) :=
141+
(uniformEmbedding_restrictScalars 𝕜').uniformContinuous
142+
143+
end RestrictScalars
144+
119145
end UniformAddGroup
120146

121147
variable [TopologicalSpace F] [TopologicalAddGroup F]
@@ -171,6 +197,35 @@ theorem continuous_coe_fun :
171197
instance instT2Space [T2Space F] : T2Space (ContinuousMultilinearMap 𝕜 E F) :=
172198
.of_injective_continuous DFunLike.coe_injective continuous_coe_fun
173199

200+
section RestrictScalars
201+
202+
variable {𝕜' : Type*} [NontriviallyNormedField 𝕜'] [NormedAlgebra 𝕜' 𝕜]
203+
[∀ i, Module 𝕜' (E i)] [∀ i, IsScalarTower 𝕜' 𝕜 (E i)] [Module 𝕜' F] [IsScalarTower 𝕜' 𝕜 F]
204+
205+
theorem embedding_restrictScalars :
206+
Embedding
207+
(restrictScalars 𝕜' : ContinuousMultilinearMap 𝕜 E F → ContinuousMultilinearMap 𝕜' E F) :=
208+
letI : UniformSpace F := TopologicalAddGroup.toUniformSpace F
209+
haveI : UniformAddGroup F := comm_topologicalAddGroup_is_uniform
210+
(uniformEmbedding_restrictScalars _).embedding
211+
212+
@[continuity, fun_prop]
213+
theorem continuous_restrictScalars :
214+
Continuous
215+
(restrictScalars 𝕜' : ContinuousMultilinearMap 𝕜 E F → ContinuousMultilinearMap 𝕜' E F) :=
216+
embedding_restrictScalars.continuous
217+
218+
variable (𝕜') in
219+
/-- `ContinuousMultilinearMap.restrictScalars` as a `ContinuousLinearMap`. -/
220+
@[simps (config := .asFn) apply]
221+
def restrictScalarsLinear [ContinuousConstSMul 𝕜' F] :
222+
ContinuousMultilinearMap 𝕜 E F →L[𝕜'] ContinuousMultilinearMap 𝕜' E F where
223+
toFun := restrictScalars 𝕜'
224+
map_add' _ _ := rfl
225+
map_smul' _ _ := rfl
226+
227+
end RestrictScalars
228+
174229
variable (𝕜 E F)
175230

176231
/-- The application of a multilinear map as a `ContinuousLinearMap`. -/

0 commit comments

Comments
 (0)