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

Commit d71cab9

Browse files
committed
feat(analysis/seminorm): add composition with linear maps (#11477)
This PR defines the composition of seminorms with linear maps and shows that composition is monotone and calculates the seminorm ball of the composition.
1 parent 6c97821 commit d71cab9

File tree

1 file changed

+76
-3
lines changed

1 file changed

+76
-3
lines changed

src/analysis/seminorm.lean

Lines changed: 76 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ Absorbent and balanced sets in a vector space over a normed field.
6868
open normed_field set
6969
open_locale pointwise topological_space nnreal
7070

71-
variables {R 𝕜 E ι : Type*}
71+
variables {R 𝕜 E F G ι : Type*}
7272

7373
section semi_normed_ring
7474
variables [semi_normed_ring 𝕜]
@@ -271,6 +271,8 @@ instance : has_zero (seminorm 𝕜 E) :=
271271

272272
@[simp] lemma coe_zero : ⇑(0 : seminorm 𝕜 E) = 0 := rfl
273273

274+
@[simp] lemma zero_apply (x : E) : (0 : seminorm 𝕜 E) x = 0 := rfl
275+
274276
instance : inhabited (seminorm 𝕜 E) := ⟨0
275277

276278
variables (p : seminorm 𝕜 E) (c : 𝕜) (x y : E) (r : ℝ)
@@ -378,8 +380,48 @@ calc p 0 = p ((0 : 𝕜) • 0) : by rw zero_smul
378380
end smul_with_zero
379381
end add_monoid
380382

383+
section module
384+
variables [add_comm_group E] [add_comm_group F] [add_comm_group G]
385+
variables [module 𝕜 E] [module 𝕜 F] [module 𝕜 G]
386+
variables [has_scalar R ℝ] [has_scalar R ℝ≥0] [is_scalar_tower R ℝ≥0 ℝ]
387+
388+
/-- Composition of a seminorm with a linear map is a seminorm. -/
389+
def comp (p : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) : seminorm 𝕜 E :=
390+
{ to_fun := λ x, p(f x),
391+
smul' := λ _ _, (congr_arg p (f.map_smul _ _)).trans (p.smul _ _),
392+
triangle' := λ _ _, eq.trans_le (congr_arg p (f.map_add _ _)) (p.triangle _ _) }
393+
394+
lemma coe_comp (p : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) : ⇑(p.comp f) = p ∘ f := rfl
395+
396+
@[simp] lemma comp_apply (p : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) (x : E) : (p.comp f) x = p (f x) := rfl
397+
398+
@[simp] lemma comp_id (p : seminorm 𝕜 E) : p.comp linear_map.id = p :=
399+
ext $ λ _, rfl
400+
401+
@[simp] lemma comp_zero (p : seminorm 𝕜 F) : p.comp (0 : E →ₗ[𝕜] F) = 0 :=
402+
ext $ λ _, seminorm.zero _
403+
404+
@[simp] lemma zero_comp (f : E →ₗ[𝕜] F) : (0 : seminorm 𝕜 F).comp f = 0 :=
405+
ext $ λ _, rfl
406+
407+
lemma comp_comp (p : seminorm 𝕜 G) (g : F →ₗ[𝕜] G) (f : E →ₗ[𝕜] F) :
408+
p.comp (g.comp f) = (p.comp g).comp f :=
409+
ext $ λ _, rfl
410+
411+
lemma add_comp (p q : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) : (p + q).comp f = p.comp f + q.comp f :=
412+
ext $ λ _, rfl
413+
414+
lemma comp_triangle (p : seminorm 𝕜 F) (f g : E →ₗ[𝕜] F) : p.comp (f + g) ≤ p.comp f + p.comp g :=
415+
λ _, p.triangle _ _
416+
417+
lemma smul_comp (p : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) (c : R) : (c • p).comp f = c • (p.comp f) :=
418+
ext $ λ _, rfl
419+
420+
lemma comp_mono {p : seminorm 𝕜 F} {q : seminorm 𝕜 F} (f : E →ₗ[𝕜] F) (hp : p ≤ q) :
421+
p.comp f ≤ q.comp f := λ _, hp _
422+
381423
section norm_one_class
382-
variables [norm_one_class 𝕜] [add_comm_group E] [module 𝕜 E] (p : seminorm 𝕜 E) (x y : E) (r : ℝ)
424+
variables [norm_one_class 𝕜] (p : seminorm 𝕜 E) (x y : E) (r : ℝ)
383425

384426
@[simp]
385427
protected lemma neg : p (-x) = p x :=
@@ -419,9 +461,27 @@ begin
419461
end
420462

421463
end norm_one_class
464+
end module
465+
end semi_normed_ring
466+
467+
section semi_normed_comm_ring
468+
variables [semi_normed_comm_ring 𝕜] [add_comm_group E] [add_comm_group F] [module 𝕜 E] [module 𝕜 F]
469+
470+
lemma comp_smul (p : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) (c : 𝕜) :
471+
p.comp (c • f) = ∥c∥₊ • p.comp f :=
472+
ext $ λ _, by rw [comp_apply, smul_apply, linear_map.smul_apply, p.smul, nnreal.smul_def,
473+
coe_nnnorm, smul_eq_mul, comp_apply]
474+
475+
lemma comp_smul_apply (p : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) (c : 𝕜) (x : E) :
476+
p.comp (c • f) x = ∥c∥ * p (f x) := p.smul _ _
477+
478+
end semi_normed_comm_ring
422479

423480
/-! ### Seminorm ball -/
424481

482+
section semi_normed_ring
483+
variables [semi_normed_ring 𝕜]
484+
425485
section add_comm_group
426486
variables [add_comm_group E]
427487

@@ -460,7 +520,19 @@ end
460520
end has_scalar
461521

462522
section module
463-
variables [norm_one_class 𝕜] [module 𝕜 E] (p : seminorm 𝕜 E)
523+
524+
variables [module 𝕜 E]
525+
variables [add_comm_group F] [module 𝕜 F]
526+
527+
lemma ball_comp (p : seminorm 𝕜 F) (f : E →ₗ[𝕜] F) (x : E) (r : ℝ) :
528+
(p.comp f).ball x r = f ⁻¹' (p.ball (f x) r) :=
529+
begin
530+
ext,
531+
simp_rw [ball, mem_preimage, comp_apply, set.mem_set_of_eq, map_sub],
532+
end
533+
534+
section norm_one_class
535+
variables [norm_one_class 𝕜] (p : seminorm 𝕜 E)
464536

465537
@[simp] lemma ball_bot {r : ℝ} (x : E) (hr : 0 < r) : ball (⊥ : seminorm 𝕜 E) x r = set.univ :=
466538
ball_zero' x hr
@@ -489,6 +561,7 @@ begin
489561
exact ball_finset_sup_eq_Inter _ _ _ hr,
490562
end
491563

564+
end norm_one_class
492565
end module
493566
end add_comm_group
494567
end semi_normed_ring

0 commit comments

Comments
 (0)