Skip to content

Commit cee9bb2

Browse files
committed
feat: norm structure on WithLp 1 (Unitization π•œ A) (#12582)
`Unitization π•œ A` is equipped with a norm when `A` is a `RegularNormedAlgebra`, and it turns out that norm is minimal among all norms for which the natural coercion from `A` is an isometry and which satisfy `β€–1β€– = 1`. There is also a maximal norm, given by `β€–xβ€– := β€–x.fstβ€– + β€–x.sndβ€–`, and this norm also makes sense even when `A` is not a `RegularNormedAlgebra`. We place this norm on the type synonym `WithLp 1 (Unitization π•œ A)`.
1 parent 60e5281 commit cee9bb2

File tree

3 files changed

+138
-4
lines changed

3 files changed

+138
-4
lines changed

β€ŽMathlib.leanβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1079,6 +1079,7 @@ import Mathlib.Analysis.NormedSpace.Star.Spectrum
10791079
import Mathlib.Analysis.NormedSpace.Star.Unitization
10801080
import Mathlib.Analysis.NormedSpace.TrivSqZeroExt
10811081
import Mathlib.Analysis.NormedSpace.Unitization
1082+
import Mathlib.Analysis.NormedSpace.UnitizationL1
10821083
import Mathlib.Analysis.NormedSpace.Units
10831084
import Mathlib.Analysis.NormedSpace.WeakDual
10841085
import Mathlib.Analysis.NormedSpace.WithLp

β€ŽMathlib/Analysis/NormedSpace/Unitization.leanβ€Ž

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,17 @@ two properties:
1818
- The embedding of `A` in `Unitization π•œ A` is an isometry. (i.e., `Isometry Unitization.inr`)
1919
2020
One way to do this is to pull back the norm from `WithLp 1 (π•œ Γ— A)`, that is,
21-
`β€–(k, a)β€– = β€–kβ€– + β€–aβ€–` using `Unitization.addEquiv` (i.e., the identity map). However, when the norm
22-
on `A` is *regular* (i.e., `ContinuousLinearMap.mul` is an isometry), there is another natural
23-
choice: the pullback of the norm on `π•œ Γ— (A β†’L[π•œ] A)` under the map
21+
`β€–(k, a)β€– = β€–kβ€– + β€–aβ€–` using `Unitization.addEquiv` (i.e., the identity map).
22+
This is implemented for the type synonym `WithLp 1 (Unitization π•œ A)` in
23+
`WithLp.instUnitizationNormedAddCommGroup`, and it is shown there that this is a Banach algebra.
24+
However, when the norm on `A` is *regular* (i.e., `ContinuousLinearMap.mul` is an isometry), there
25+
is another natural choice: the pullback of the norm on `π•œ Γ— (A β†’L[π•œ] A)` under the map
2426
`(k, a) ↦ (k, k β€’ 1 + ContinuousLinearMap.mul π•œ A a)`. It turns out that among all norms on the
2527
unitization satisfying the properties specified above, the norm inherited from
2628
`WithLp 1 (π•œ Γ— A)` is maximal, and the norm inherited from this pullback is minimal.
29+
Of course, this means that `WithLp.equiv : WithLp 1 (Unitization π•œ A) β†’ Unitization π•œ A` can be
30+
upgraded to a continuous linear equivalence (when `π•œ` and `A` are complete).
2731
28-
For possibly non-unital `RegularNormedAlgebra`s `A` (over `π•œ`), we construct a `NormedAlgebra`
2932
structure on `Unitization π•œ A` using the pullback described above. The reason for choosing this norm
3033
is that for a C⋆-algebra `A` its norm is always regular, and the pullback norm on `Unitization π•œ A`
3134
is then also a C⋆-norm.
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
/-
2+
Copyright (c) 2024 Jireh Loreaux. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Jireh Loreaux
5+
-/
6+
import Mathlib.Algebra.Algebra.Unitization
7+
import Mathlib.Analysis.NormedSpace.ProdLp
8+
9+
/-! # Unitization equipped with the $L^1$ norm
10+
11+
In another file, the `Unitization π•œ A` of a non-unital normed `π•œ`-algebra `A` is equipped with the
12+
norm inherited as the pullback via a map (closely related to) the left-regular representation of the
13+
algebra on itself (see `Unitization.instNormedRing`).
14+
15+
However, this construction is only valid (and an isometry) when `A` is a `RegularNormedAlgebra`.
16+
Sometimes it is useful to consider the unitization of a non-unital algebra with the $L^1$ norm
17+
instead. This file provides that norm on the type synonym `WithLp 1 (Unitization π•œ A)`, along
18+
with the algebra isomomorphism between `Unitization π•œ A` and `WithLp 1 (Unitization π•œ A)`.
19+
Note that `TrivSqZeroExt` is also equipped with the $L^1$ norm in the analogous way, but it is
20+
registered as an instance without the type synonym.
21+
22+
One application of this is a straightforward proof that the quasispectrum of an element in a
23+
non-unital Banach algebra is compact, which can be established by passing to the unitization.
24+
-/
25+
26+
variable (π•œ A : Type*) [NormedField π•œ] [NonUnitalNormedRing A]
27+
variable [NormedSpace π•œ A] [IsScalarTower π•œ A A] [SMulCommClass π•œ A A]
28+
29+
namespace WithLp
30+
31+
open Unitization
32+
33+
/-- The natural map between `Unitization π•œ A` and `π•œ Γ— A`, transferred to their `WithLp 1`
34+
synonyms. -/
35+
noncomputable def unitization_addEquiv_prod : WithLp 1 (Unitization π•œ A) ≃+ WithLp 1 (π•œ Γ— A) :=
36+
(WithLp.linearEquiv 1 π•œ (Unitization π•œ A)).toAddEquiv.trans <|
37+
(addEquiv π•œ A).trans (WithLp.linearEquiv 1 π•œ (π•œ Γ— A)).symm.toAddEquiv
38+
39+
noncomputable instance instUnitizationNormedAddCommGroup :
40+
NormedAddCommGroup (WithLp 1 (Unitization π•œ A)) :=
41+
NormedAddCommGroup.induced (WithLp 1 (Unitization π•œ A)) (WithLp 1 (π•œ Γ— A))
42+
(unitization_addEquiv_prod π•œ A) (AddEquiv.injective _)
43+
44+
/-- Bundle `WithLp.unitization_addEquiv_prod` as a `UniformEquiv`. -/
45+
noncomputable def uniformEquiv_unitization_addEquiv_prod :
46+
WithLp 1 (Unitization π•œ A) ≃ᡀ WithLp 1 (π•œ Γ— A) :=
47+
{ unitization_addEquiv_prod π•œ A with
48+
uniformContinuous_invFun := uniformContinuous_comap' uniformContinuous_id
49+
uniformContinuous_toFun := uniformContinuous_iff.mpr le_rfl }
50+
51+
instance instCompleteSpace [CompleteSpace π•œ] [CompleteSpace A] :
52+
CompleteSpace (WithLp 1 (Unitization π•œ A)) :=
53+
completeSpace_congr (uniformEquiv_unitization_addEquiv_prod π•œ A).uniformEmbedding |>.mpr
54+
CompleteSpace.prod
55+
56+
variable {π•œ A}
57+
58+
open ENNReal in
59+
lemma unitization_norm_def (x : WithLp 1 (Unitization π•œ A)) :
60+
β€–xβ€– = β€–(WithLp.equiv 1 _ x).fstβ€– + β€–(WithLp.equiv 1 _ x).sndβ€– := calc
61+
β€–xβ€– = (β€–(WithLp.equiv 1 _ x).fstβ€– ^ (1 : ℝβ‰₯0∞).toReal +
62+
β€–(WithLp.equiv 1 _ x).sndβ€– ^ (1 : ℝβ‰₯0∞).toReal) ^ (1 / (1 : ℝβ‰₯0∞).toReal) :=
63+
WithLp.prod_norm_eq_add (by simp : 0 < (1 : ℝβ‰₯0∞).toReal) _
64+
_ = β€–(WithLp.equiv 1 _ x).fstβ€– + β€–(WithLp.equiv 1 _ x).sndβ€– := by simp
65+
66+
lemma unitization_nnnorm_def (x : WithLp 1 (Unitization π•œ A)) :
67+
β€–xβ€–β‚Š = β€–(WithLp.equiv 1 _ x).fstβ€–β‚Š + β€–(WithLp.equiv 1 _ x).sndβ€–β‚Š :=
68+
Subtype.ext <| unitization_norm_def x
69+
70+
lemma unitization_norm_inr (x : A) : β€–(WithLp.equiv 1 (Unitization π•œ A)).symm xβ€– = β€–xβ€– := by
71+
simp [unitization_norm_def]
72+
73+
lemma unitization_nnnorm_inr (x : A) : β€–(WithLp.equiv 1 (Unitization π•œ A)).symm xβ€–β‚Š = β€–xβ€–β‚Š := by
74+
simp [unitization_nnnorm_def]
75+
76+
lemma unitization_isometry_inr :
77+
Isometry (fun x : A ↦ (WithLp.equiv 1 (Unitization π•œ A)).symm x) :=
78+
AddMonoidHomClass.isometry_of_norm
79+
((WithLp.linearEquiv 1 π•œ (Unitization π•œ A)).symm.comp <| Unitization.inrHom π•œ A)
80+
unitization_norm_inr
81+
82+
instance instUnitizationRing : Ring (WithLp 1 (Unitization π•œ A)) :=
83+
inferInstanceAs (Ring (Unitization π•œ A))
84+
85+
@[simp]
86+
lemma unitization_mul (x y : WithLp 1 (Unitization π•œ A)) :
87+
WithLp.equiv 1 _ (x * y) = (WithLp.equiv 1 _ x) * (WithLp.equiv 1 _ y) :=
88+
rfl
89+
90+
instance {R : Type*} [CommSemiring R] [Algebra R π•œ] [DistribMulAction R A] [IsScalarTower R π•œ A] :
91+
Algebra R (WithLp 1 (Unitization π•œ A)) :=
92+
inferInstanceAs (Algebra R (Unitization π•œ A))
93+
94+
@[simp]
95+
lemma unitization_algebraMap (r : π•œ) :
96+
WithLp.equiv 1 _ (algebraMap π•œ (WithLp 1 (Unitization π•œ A)) r) =
97+
algebraMap π•œ (Unitization π•œ A) r :=
98+
rfl
99+
100+
/-- `WithLp.equiv` bundled as an algebra isomorphism with `Unitization π•œ A`. -/
101+
@[simps!]
102+
def unitizationAlgEquiv (R : Type*) [CommSemiring R] [Algebra R π•œ] [DistribMulAction R A]
103+
[IsScalarTower R π•œ A] : WithLp 1 (Unitization π•œ A) ≃ₐ[R] Unitization π•œ A :=
104+
{ WithLp.equiv 1 (Unitization π•œ A) with
105+
map_mul' := fun _ _ ↦ rfl
106+
map_add' := fun _ _ ↦ rfl
107+
commutes' := fun _ ↦ rfl }
108+
109+
noncomputable instance instUnitizationNormedRing : NormedRing (WithLp 1 (Unitization π•œ A)) where
110+
dist_eq := dist_eq_norm
111+
norm_mul x y := by
112+
simp_rw [unitization_norm_def, add_mul, mul_add, unitization_mul, fst_mul, snd_mul]
113+
rw [add_assoc, add_assoc]
114+
gcongr
115+
Β· exact norm_mul_le _ _
116+
Β· apply (norm_add_le _ _).trans
117+
gcongr
118+
Β· simp [norm_smul]
119+
Β· apply (norm_add_le _ _).trans
120+
gcongr
121+
Β· simp [norm_smul, mul_comm]
122+
Β· exact norm_mul_le _ _
123+
124+
noncomputable instance instUnitizationNormedAlgebra :
125+
NormedAlgebra π•œ (WithLp 1 (Unitization π•œ A)) where
126+
norm_smul_le r x := by
127+
simp_rw [unitization_norm_def, equiv_smul, fst_smul, snd_smul, norm_smul, mul_add]
128+
exact le_rfl
129+
130+
end WithLp

0 commit comments

Comments
Β (0)