Skip to content

Commit 55a83a2

Browse files
committed
feat: star structures on ContinuousLinearMapWOT (#39163)
In particular, with these instances it makes sense to consider the `StarSubalgebra.topologicalClosure` of some `S : StarSubalgebra 𝕜 (F →WOT[𝕜] F)`.
1 parent 433572d commit 55a83a2

1 file changed

Lines changed: 51 additions & 2 deletions

File tree

Mathlib/Analysis/InnerProductSpace/WeakOperatorTopology.lean

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ Authors: Frédéric Dupuis
55
-/
66
module
77

8+
public import Mathlib.Algebra.Star.TransferInstance
9+
public import Mathlib.Analysis.InnerProductSpace.Adjoint
810
public import Mathlib.Analysis.InnerProductSpace.Dual
911
public import Mathlib.Analysis.LocallyConvex.WeakOperatorTopology
1012

@@ -14,6 +16,14 @@ public import Mathlib.Analysis.LocallyConvex.WeakOperatorTopology
1416
This file gives a few properties of the weak operator topology that are specific to operators on
1517
Hilbert spaces. This mostly involves using the Fréchet-Riesz representation to convert between
1618
applications of elements of the dual and inner products with vectors in the space.
19+
20+
## Main results
21+
22+
+ `ContinuousLinearMapWOT.tendsto_iff_forall_inner_apply_tendsto`: a function `f : α → E →WOT[𝕜] F`
23+
tends to `𝓝 A` if and only if `fun a ↦ ⟪y, (f a) x⟫_𝕜` tends to `𝓝 ⟪y, A x⟫_𝕜` for all
24+
`x : E`, `y : F`. Also included are the corresponding characterizations of continuity.
25+
+ The adjoint operation is continuous in the weak operator topology, declared as an instance of
26+
`ContinuousStar (F →WOT[𝕜] F)`.
1727
-/
1828

1929
public section
@@ -30,18 +40,57 @@ lemma ext_inner {A B : E →WOT[𝕜] F} (h : ∀ x y, ⟪y, A x⟫_𝕜 = ⟪y,
3040
rw [ContinuousLinearMapWOT.ext_iff]
3141
exact fun x => ext_inner_left 𝕜 fun y => h x y
3242

43+
variable [CompleteSpace F]
44+
3345
open Filter in
3446
/-- The defining property of the weak operator topology: a function `f` tends to
3547
`A : E →WOT[𝕜] F` along filter `l` iff `⟪y, (f a) x⟫` tends to `⟪y, A x⟫` along the same filter. -/
36-
lemma tendsto_iff_forall_inner_apply_tendsto [CompleteSpace F] {α : Type*} {l : Filter α}
48+
lemma tendsto_iff_forall_inner_apply_tendsto {α : Type*} {l : Filter α}
3749
{f : α → E →WOT[𝕜] F} {A : E →WOT[𝕜] F} :
3850
Tendsto f l (𝓝 A) ↔ ∀ x y, Tendsto (fun a => ⟪y, (f a) x⟫_𝕜) l (𝓝 ⟪y, A x⟫_𝕜) := by
3951
simp_rw [tendsto_iff_forall_dual_apply_tendsto]
4052
exact .symm <| forall_congr' fun _ ↦
4153
Equiv.forall_congr (InnerProductSpace.toDual 𝕜 F) fun _ ↦ Iff.rfl
4254

43-
lemma le_nhds_iff_forall_inner_apply_le_nhds [CompleteSpace F] {l : Filter (E →WOT[𝕜] F)}
55+
lemma le_nhds_iff_forall_inner_apply_le_nhds {l : Filter (E →WOT[𝕜] F)}
4456
{A : E →WOT[𝕜] F} : l ≤ 𝓝 A ↔ ∀ x y, l.map (fun T => ⟪y, T x⟫_𝕜) ≤ 𝓝 (⟪y, A x⟫_𝕜) :=
4557
tendsto_iff_forall_inner_apply_tendsto (f := id)
4658

59+
lemma continuousWithinAt_iff {α : Type*} [TopologicalSpace α]
60+
{f : α → E →WOT[𝕜] F} {s : Set α} {a : α} :
61+
ContinuousWithinAt f s a ↔ ∀ x y, ContinuousWithinAt (⟪y, f · x⟫_𝕜) s a :=
62+
tendsto_iff_forall_inner_apply_tendsto
63+
64+
lemma continuousAt_iff {α : Type*} [TopologicalSpace α] {f : α → E →WOT[𝕜] F} {a : α} :
65+
ContinuousAt f a ↔ ∀ x y, ContinuousAt (⟪y, f · x⟫_𝕜) a :=
66+
tendsto_iff_forall_inner_apply_tendsto
67+
68+
lemma continuousOn_iff {α : Type*} [TopologicalSpace α] {f : α → E →WOT[𝕜] F} {s : Set α} :
69+
ContinuousOn f s ↔ ∀ x y, ContinuousOn (⟪y, f · x⟫_𝕜) s := by
70+
simp_rw [ContinuousOn, forall_comm (α := E), forall_comm (α := F), continuousWithinAt_iff]
71+
72+
lemma continuous_iff {α : Type*} [TopologicalSpace α] {f : α → E →WOT[𝕜] F} :
73+
Continuous f ↔ ∀ x y, Continuous (⟪y, f · x⟫_𝕜) := by
74+
simp_rw [continuous_iff_continuousAt, forall_comm (α := E), forall_comm (α := F),
75+
continuousAt_iff]
76+
77+
@[fun_prop] alias ⟨continuousWithinAt_inner_apply, continuousWithinAt⟩ := continuousWithinAt_iff
78+
@[fun_prop] alias ⟨continuousOn_inner_apply, continuousOn⟩ := continuousOn_iff
79+
@[fun_prop] alias ⟨continuousAt_inner_apply, continuousAt⟩ := continuousAt_iff
80+
@[fun_prop] alias ⟨continuous_inner_apply, continuous⟩ := continuous_iff
81+
82+
noncomputable instance : StarRing (F →WOT[𝕜] F) := equiv.starRing
83+
84+
lemma star_apply (A : F →WOT[𝕜] F) (x : F) : star A x = star (toCLM A) x := rfl
85+
86+
instance : StarModule 𝕜 (F →WOT[𝕜] F) := equiv.starModule 𝕜
87+
88+
instance : ContinuousStar (F →WOT[𝕜] F) where
89+
continuous_star := by
90+
simp_rw [continuous_iff, star_apply, ContinuousLinearMap.star_eq_adjoint,
91+
ContinuousLinearMap.adjoint_inner_right, coe_toCLM]
92+
rw [forall_comm]
93+
conv in ⟪_, _⟫_𝕜 => rw [← inner_conj_symm, ← RCLike.star_def]
94+
fun_prop
95+
4796
end ContinuousLinearMapWOT

0 commit comments

Comments
 (0)