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

Commit a990661

Browse files
ADedeckerj-loreaux
andcommitted
feat(analysis/[seminorm, locally_convex/with_seminorms]): semilinearize seminorm.comp (#17286)
Co-authored-by: Jireh Loreaux <loreaujy@gmail.com>
1 parent b75fd41 commit a990661

File tree

2 files changed

+68
-50
lines changed

2 files changed

+68
-50
lines changed

src/analysis/locally_convex/with_seminorms.lean

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ seminorm, locally convex
4747
open normed_field set seminorm topological_space
4848
open_locale big_operators nnreal pointwise topological_space
4949

50-
variables {𝕜 E F G ι ι' : Type*}
50+
variables {𝕜 𝕜₂ E F G ι ι' : Type*}
5151

5252
section filter_basis
5353

@@ -211,21 +211,23 @@ section bounded
211211

212212
namespace seminorm
213213

214-
variables [normed_field 𝕜] [add_comm_group E] [module 𝕜 E] [add_comm_group F] [module 𝕜 F]
214+
variables [normed_field 𝕜] [add_comm_group E] [module 𝕜 E]
215+
variables [normed_field 𝕜₂] [add_comm_group F] [module 𝕜₂ F]
216+
variables {σ₁₂ : 𝕜 →+* 𝕜₂} [ring_hom_isometric σ₁₂]
215217

216218
-- Todo: This should be phrased entirely in terms of the von Neumann bornology.
217219

218220
/-- The proposition that a linear map is bounded between spaces with families of seminorms. -/
219-
def is_bounded (p : ι → seminorm 𝕜 E) (q : ι' → seminorm 𝕜 F) (f : E →ₗ[𝕜] F) : Prop :=
221+
def is_bounded (p : ι → seminorm 𝕜 E) (q : ι' → seminorm 𝕜 F) (f : E →ₛₗ[σ₁₂] F) : Prop :=
220222
∀ i, ∃ s : finset ι, ∃ C : ℝ≥0, C ≠ 0 ∧ (q i).comp f ≤ C • s.sup p
221223

222224
lemma is_bounded_const (ι' : Type*) [nonempty ι']
223-
{p : ι → seminorm 𝕜 E} {q : seminorm 𝕜 F} (f : E →ₗ[𝕜] F) :
225+
{p : ι → seminorm 𝕜 E} {q : seminorm 𝕜 F} (f : E →ₛₗ[σ₁₂] F) :
224226
is_bounded p (λ _ : ι', q) f ↔ ∃ (s : finset ι) C : ℝ≥0, C ≠ 0 ∧ q.comp f ≤ C • s.sup p :=
225227
by simp only [is_bounded, forall_const]
226228

227229
lemma const_is_bounded (ι : Type*) [nonempty ι]
228-
{p : seminorm 𝕜 E} {q : ι' → seminorm 𝕜 F} (f : E →ₗ[𝕜] F) :
230+
{p : seminorm 𝕜 E} {q : ι' → seminorm 𝕜 F} (f : E →ₛₗ[σ₁₂] F) :
229231
is_bounded (λ _ : ι, p) q f ↔ ∀ i, ∃ C : ℝ≥0, C ≠ 0 ∧ (q i).comp f ≤ C • p :=
230232
begin
231233
split; intros h i,
@@ -235,8 +237,8 @@ begin
235237
simp only [h, finset.sup_singleton],
236238
end
237239

238-
lemma is_bounded_sup {p : ι → seminorm 𝕜 E} {q : ι' → seminorm 𝕜 F}
239-
{f : E →ₗ[𝕜] F} (hf : is_bounded p q f) (s' : finset ι') :
240+
lemma is_bounded_sup {p : ι → seminorm 𝕜 E} {q : ι' → seminorm 𝕜 F}
241+
{f : E →ₛₗ[σ₁₂] F} (hf : is_bounded p q f) (s' : finset ι') :
240242
∃ (C : ℝ≥0) (s : finset ι), 0 < C ∧ (s'.sup q).comp f ≤ C • (s.sup p) :=
241243
begin
242244
classical,
@@ -455,13 +457,15 @@ section continuous_bounded
455457

456458
namespace seminorm
457459

458-
variables [normed_field 𝕜] [add_comm_group E] [module 𝕜 E] [add_comm_group F] [module 𝕜 F]
460+
variables [normed_field 𝕜] [add_comm_group E] [module 𝕜 E]
461+
variables [normed_field 𝕜₂] [add_comm_group F] [module 𝕜₂ F]
462+
variables {σ₁₂ : 𝕜 →+* 𝕜₂} [ring_hom_isometric σ₁₂]
459463
variables [nonempty ι] [nonempty ι']
460464

461-
lemma continuous_of_continuous_comp {q : seminorm_family 𝕜 F ι'}
465+
lemma continuous_of_continuous_comp {q : seminorm_family 𝕜 F ι'}
462466
[topological_space E] [topological_add_group E]
463467
[topological_space F] [topological_add_group F] (hq : with_seminorms q)
464-
(f : E →ₗ[𝕜] F) (hf : ∀ i, continuous ((q i).comp f)) : continuous f :=
468+
(f : E →ₛₗ[σ₁₂] F) (hf : ∀ i, continuous ((q i).comp f)) : continuous f :=
465469
begin
466470
refine continuous_of_continuous_at_zero f _,
467471
simp_rw [continuous_at, f.map_zero, q.with_seminorms_iff_nhds_eq_infi.mp hq, filter.tendsto_infi,
@@ -471,17 +475,17 @@ begin
471475
exact (map_zero _).symm
472476
end
473477

474-
lemma continuous_iff_continuous_comp [normed_algebra ℝ 𝕜] [module ℝ F] [is_scalar_tower ℝ 𝕜 F]
475-
{q : seminorm_family 𝕜 F ι'} [topological_space E] [topological_add_group E]
478+
lemma continuous_iff_continuous_comp [normed_algebra ℝ 𝕜] [module ℝ F] [is_scalar_tower ℝ 𝕜 F]
479+
{q : seminorm_family 𝕜 F ι'} [topological_space E] [topological_add_group E]
476480
[topological_space F] [topological_add_group F] [has_continuous_const_smul ℝ F]
477-
(hq : with_seminorms q) (f : E →ₗ[𝕜] F) :
481+
(hq : with_seminorms q) (f : E →ₛₗ[σ₁₂] F) :
478482
continuous f ↔ ∀ i, continuous ((q i).comp f) :=
479483
⟨λ h i, continuous.comp (hq.continuous_seminorm i) h, continuous_of_continuous_comp hq f⟩
480484

481-
lemma continuous_from_bounded {p : seminorm_family 𝕜 E ι} {q : seminorm_family 𝕜 F ι'}
485+
lemma continuous_from_bounded {p : seminorm_family 𝕜 E ι} {q : seminorm_family 𝕜 F ι'}
482486
[topological_space E] [topological_add_group E] (hp : with_seminorms p)
483487
[topological_space F] [topological_add_group F] (hq : with_seminorms q)
484-
(f : E →ₗ[𝕜] F) (hf : seminorm.is_bounded p q f) : continuous f :=
488+
(f : E →ₛₗ[σ₁₂] F) (hf : seminorm.is_bounded p q f) : continuous f :=
485489
begin
486490
refine continuous_of_continuous_comp hq _ (λ i, seminorm.continuous_of_continuous_at_zero _),
487491
rw [metric.continuous_at_iff', map_zero],
@@ -496,19 +500,19 @@ begin
496500
refl
497501
end
498502

499-
lemma cont_with_seminorms_normed_space (F) [seminormed_add_comm_group F] [normed_space 𝕜 F]
503+
lemma cont_with_seminorms_normed_space (F) [seminormed_add_comm_group F] [normed_space 𝕜 F]
500504
[uniform_space E] [uniform_add_group E]
501-
{p : ι → seminorm 𝕜 E} (hp : with_seminorms p) (f : E →ₗ[𝕜] F)
502-
(hf : ∃ (s : finset ι) C : ℝ≥0, C ≠ 0 ∧ (norm_seminorm 𝕜 F).comp f ≤ C • s.sup p) :
505+
{p : ι → seminorm 𝕜 E} (hp : with_seminorms p) (f : E →ₛₗ[σ₁₂] F)
506+
(hf : ∃ (s : finset ι) C : ℝ≥0, C ≠ 0 ∧ (norm_seminorm 𝕜 F).comp f ≤ C • s.sup p) :
503507
continuous f :=
504508
begin
505509
rw ←seminorm.is_bounded_const (fin 1) at hf,
506-
exact continuous_from_bounded hp (norm_with_seminorms 𝕜 F) f hf,
510+
exact continuous_from_bounded hp (norm_with_seminorms 𝕜 F) f hf,
507511
end
508512

509513
lemma cont_normed_space_to_with_seminorms (E) [seminormed_add_comm_group E] [normed_space 𝕜 E]
510514
[uniform_space F] [uniform_add_group F]
511-
{q : ι → seminorm 𝕜 F} (hq : with_seminorms q) (f : E →ₗ[𝕜] F)
515+
{q : ι → seminorm 𝕜 F} (hq : with_seminorms q) (f : E →ₛₗ[σ₁₂] F)
512516
(hf : ∀ i : ι, ∃ C : ℝ≥0, C ≠ 0 ∧ (q i).comp f ≤ C • (norm_seminorm 𝕜 E)) : continuous f :=
513517
begin
514518
rw ←seminorm.const_is_bounded (fin 1) at hf,
@@ -562,19 +566,21 @@ end normed_space
562566

563567
section topological_constructions
564568

565-
variables [normed_field 𝕜] [add_comm_group F] [module 𝕜 F] [add_comm_group E] [module 𝕜 E]
569+
variables [normed_field 𝕜] [add_comm_group E] [module 𝕜 E]
570+
variables [normed_field 𝕜₂] [add_comm_group F] [module 𝕜₂ F]
571+
variables {σ₁₂ : 𝕜 →+* 𝕜₂} [ring_hom_isometric σ₁₂]
566572

567573
/-- The family of seminorms obtained by composing each seminorm by a linear map. -/
568-
def seminorm_family.comp (q : seminorm_family 𝕜 F ι) (f : E →ₗ[𝕜] F) :
574+
def seminorm_family.comp (q : seminorm_family 𝕜 F ι) (f : E →ₛₗ[σ₁₂] F) :
569575
seminorm_family 𝕜 E ι :=
570576
λ i, (q i).comp f
571577

572-
lemma seminorm_family.comp_apply (q : seminorm_family 𝕜 F ι) (i : ι) (f : E →ₗ[𝕜] F) :
578+
lemma seminorm_family.comp_apply (q : seminorm_family 𝕜 F ι) (i : ι) (f : E →ₛₗ[σ₁₂] F) :
573579
q.comp f i = (q i).comp f :=
574580
rfl
575581

576-
lemma seminorm_family.finset_sup_comp (q : seminorm_family 𝕜 F ι) (s : finset ι)
577-
(f : E →ₗ[𝕜] F) : (s.sup q).comp f = s.sup (q.comp f) :=
582+
lemma seminorm_family.finset_sup_comp (q : seminorm_family 𝕜 F ι) (s : finset ι)
583+
(f : E →ₛₗ[σ₁₂] F) : (s.sup q).comp f = s.sup (q.comp f) :=
578584
begin
579585
ext x,
580586
rw [seminorm.comp_apply, seminorm.finset_sup_apply, seminorm.finset_sup_apply],
@@ -583,8 +589,8 @@ end
583589

584590
variables [topological_space F] [topological_add_group F]
585591

586-
lemma linear_map.with_seminorms_induced [hι : nonempty ι] {q : seminorm_family 𝕜 F ι}
587-
(hq : with_seminorms q) (f : E →ₗ[𝕜] F) :
592+
lemma linear_map.with_seminorms_induced [hι : nonempty ι] {q : seminorm_family 𝕜 F ι}
593+
(hq : with_seminorms q) (f : E →ₛₗ[σ₁₂] F) :
588594
@with_seminorms 𝕜 E ι _ _ _ _ (q.comp f) (induced f infer_instance) :=
589595
begin
590596
letI : topological_space E := induced f infer_instance,
@@ -595,8 +601,8 @@ begin
595601
exact filter.comap_comap
596602
end
597603

598-
lemma inducing.with_seminorms [hι : nonempty ι] {q : seminorm_family 𝕜 F ι}
599-
(hq : with_seminorms q) [topological_space E] {f : E →ₗ[𝕜] F} (hf : inducing f) :
604+
lemma inducing.with_seminorms [hι : nonempty ι] {q : seminorm_family 𝕜 F ι}
605+
(hq : with_seminorms q) [topological_space E] {f : E →ₛₗ[σ₁₂] F} (hf : inducing f) :
600606
with_seminorms (q.comp f) :=
601607
begin
602608
rw hf.induced,

src/analysis/seminorm.lean

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ set_option old_structure_cmd true
3838
open normed_field set
3939
open_locale big_operators nnreal pointwise topological_space
4040

41-
variables {R R' 𝕜 E F G ι : Type*}
41+
variables {R R' 𝕜 𝕜₂ 𝕜₃ E E₂ E₃ F G ι : Type*}
4242

4343
/-- A seminorm on a module over a normed ring is a function to the reals that is positive
4444
semidefinite, positive homogeneous, and subadditive. -/
@@ -224,47 +224,56 @@ end has_smul
224224
end add_group
225225

226226
section module
227-
variables [add_comm_group E] [add_comm_group F] [add_comm_group G]
228-
variables [module 𝕜 E] [module 𝕜 F] [module 𝕜 G]
227+
variables [semi_normed_ring 𝕜₂] [semi_normed_ring 𝕜₃]
228+
variables {σ₁₂ : 𝕜 →+* 𝕜₂} [ring_hom_isometric σ₁₂]
229+
variables {σ₂₃ : 𝕜₂ →+* 𝕜₃} [ring_hom_isometric σ₂₃]
230+
variables {σ₁₃ : 𝕜 →+* 𝕜₃} [ring_hom_isometric σ₁₃]
231+
variables [add_comm_group E] [add_comm_group E₂] [add_comm_group E₃]
232+
variables [add_comm_group F] [add_comm_group G]
233+
variables [module 𝕜 E] [module 𝕜₂ E₂] [module 𝕜₃ E₃] [module 𝕜 F] [module 𝕜 G]
229234
variables [has_smul R ℝ] [has_smul R ℝ≥0] [is_scalar_tower R ℝ≥0 ℝ]
230235

231236
/-- Composition of a seminorm with a linear map is a seminorm. -/
232-
def comp (p : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) : seminorm 𝕜 E :=
237+
def comp (p : seminorm 𝕜₂ E₂) (f : E →ₛₗ[σ₁₂] E₂) : seminorm 𝕜 E :=
233238
{ to_fun := λ x, p (f x),
234-
smul' := λ _ _, (congr_arg p (f.map_smul _ _)).trans (map_smul_eq_mul p _ _),
239+
smul' := λ _ _, by rw [map_smulₛₗ, map_smul_eq_mul, ring_hom_isometric.is_iso],
235240
..(p.to_add_group_seminorm.comp f.to_add_monoid_hom) }
236241

237-
lemma coe_comp (p : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) : ⇑(p.comp f) = p ∘ f := rfl
242+
lemma coe_comp (p : seminorm 𝕜₂ E₂) (f : E →ₛₗ[σ₁₂] E₂) : ⇑(p.comp f) = p ∘ f := rfl
238243

239-
@[simp] lemma comp_apply (p : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) (x : E) : (p.comp f) x = p (f x) := rfl
244+
@[simp] lemma comp_apply (p : seminorm 𝕜₂ E₂) (f : E →ₛₗ[σ₁₂] E₂) (x : E) :
245+
(p.comp f) x = p (f x) := rfl
240246

241247
@[simp] lemma comp_id (p : seminorm 𝕜 E) : p.comp linear_map.id = p :=
242248
ext $ λ _, rfl
243249

244-
@[simp] lemma comp_zero (p : seminorm 𝕜 F) : p.comp (0 : E →ₗ[𝕜] F) = 0 :=
250+
@[simp] lemma comp_zero (p : seminorm 𝕜₂ E₂) : p.comp (0 : E →ₛₗ[σ₁₂] E₂) = 0 :=
245251
ext $ λ _, map_zero p
246252

247-
@[simp] lemma zero_comp (f : E →ₗ[𝕜] F) : (0 : seminorm 𝕜 F).comp f = 0 :=
253+
@[simp] lemma zero_comp (f : E →ₛₗ[σ₁₂] E₂) : (0 : seminorm 𝕜₂ E₂).comp f = 0 :=
248254
ext $ λ _, rfl
249255

250-
lemma comp_comp (p : seminorm 𝕜 G) (g : F →ₗ[𝕜] G) (f : E →ₗ[𝕜] F) :
256+
lemma comp_comp [ring_hom_comp_triple σ₁₂ σ₂₃ σ₁₃] (p : seminorm 𝕜₃ E₃)
257+
(g : E₂ →ₛₗ[σ₂₃] E₃) (f : E →ₛₗ[σ₁₂] E₂) :
251258
p.comp (g.comp f) = (p.comp g).comp f :=
252259
ext $ λ _, rfl
253260

254-
lemma add_comp (p q : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) : (p + q).comp f = p.comp f + q.comp f :=
261+
lemma add_comp (p q : seminorm 𝕜₂ E₂) (f : E →ₛₗ[σ₁₂] E₂) : (p + q).comp f = p.comp f + q.comp f :=
255262
ext $ λ _, rfl
256263

257-
lemma comp_add_le (p : seminorm 𝕜 F) (f g : E →ₗ[𝕜] F) : p.comp (f + g) ≤ p.comp f + p.comp g :=
264+
lemma comp_add_le (p : seminorm 𝕜₂ E₂) (f g : E →ₛₗ[σ₁₂] E₂) :
265+
p.comp (f + g) ≤ p.comp f + p.comp g :=
258266
λ _, map_add_le_add p _ _
259267

260-
lemma smul_comp (p : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) (c : R) : (c • p).comp f = c • (p.comp f) :=
268+
lemma smul_comp (p : seminorm 𝕜₂ E₂) (f : E →ₛₗ[σ₁₂] E₂) (c : R) :
269+
(c • p).comp f = c • (p.comp f) :=
261270
ext $ λ _, rfl
262271

263-
lemma comp_mono {p : seminorm 𝕜 F} {q : seminorm 𝕜 F} (f : E →ₗ[𝕜] F) (hp : p ≤ q) :
272+
lemma comp_mono {p q : seminorm 𝕜₂ E₂} (f : E →ₛₗ[σ₁₂] E₂) (hp : p ≤ q) :
264273
p.comp f ≤ q.comp f := λ _, hp _
265274

266275
/-- The composition as an `add_monoid_hom`. -/
267-
@[simps] def pullback (f : E →ₗ[𝕜] F) : seminorm 𝕜 F →+ seminorm 𝕜 E :=
276+
@[simps] def pullback (f : E →ₛₗ[σ₁₂] E₂) : seminorm 𝕜₂ E₂ →+ seminorm 𝕜 E :=
268277
⟨λ p, p.comp f, zero_comp f, λ p q, add_comp p q f⟩
269278

270279
instance : order_bot (seminorm 𝕜 E) := ⟨0, map_nonneg⟩
@@ -325,14 +334,16 @@ end module
325334
end semi_normed_ring
326335

327336
section semi_normed_comm_ring
328-
variables [semi_normed_comm_ring 𝕜] [add_comm_group E] [add_comm_group F] [module 𝕜 E] [module 𝕜 F]
337+
variables [semi_normed_ring 𝕜] [semi_normed_comm_ring 𝕜₂]
338+
variables {σ₁₂ : 𝕜 →+* 𝕜₂} [ring_hom_isometric σ₁₂]
339+
variables [add_comm_group E] [add_comm_group E₂] [module 𝕜 E] [module 𝕜₂ E₂]
329340

330-
lemma comp_smul (p : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) (c : 𝕜) :
341+
lemma comp_smul (p : seminorm 𝕜₂ E₂) (f : E →ₛₗ[σ₁₂] E₂) (c : 𝕜) :
331342
p.comp (c • f) = ∥c∥₊ • p.comp f :=
332343
ext $ λ _, by rw [comp_apply, smul_apply, linear_map.smul_apply, map_smul_eq_mul, nnreal.smul_def,
333344
coe_nnnorm, smul_eq_mul, comp_apply]
334345

335-
lemma comp_smul_apply (p : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) (c : 𝕜) (x : E) :
346+
lemma comp_smul_apply (p : seminorm 𝕜₂ E₂) (f : E →ₛₗ[σ₁₂] E₂) (c : 𝕜) (x : E) :
336347
p.comp (c • f) x = ∥c∥ * p (f x) := map_smul_eq_mul p _ _
337348

338349
end semi_normed_comm_ring
@@ -604,16 +615,17 @@ end has_smul
604615
section module
605616

606617
variables [module 𝕜 E]
607-
variables [add_comm_group F] [module 𝕜 F]
618+
variables [semi_normed_ring 𝕜₂] [add_comm_group E₂] [module 𝕜₂ E₂]
619+
variables {σ₁₂ : 𝕜 →+* 𝕜₂} [ring_hom_isometric σ₁₂]
608620

609-
lemma ball_comp (p : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) (x : E) (r : ℝ) :
621+
lemma ball_comp (p : seminorm 𝕜₂ E₂) (f : E →ₛₗ[σ₁₂] E₂) (x : E) (r : ℝ) :
610622
(p.comp f).ball x r = f ⁻¹' (p.ball (f x) r) :=
611623
begin
612624
ext,
613625
simp_rw [ball, mem_preimage, comp_apply, set.mem_set_of_eq, map_sub],
614626
end
615627

616-
lemma closed_ball_comp (p : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) (x : E) (r : ℝ) :
628+
lemma closed_ball_comp (p : seminorm 𝕜₂ E₂) (f : E →ₛₗ[σ₁₂] E₂) (x : E) (r : ℝ) :
617629
(p.comp f).closed_ball x r = f ⁻¹' (p.closed_ball (f x) r) :=
618630
begin
619631
ext,

0 commit comments

Comments
 (0)