leanprover-community / leanprover-community/mathlib4
Weak spaces as a class
Nobody has claimed this yet.
- Dominant language
- Lean
- Stars
- 4.1k
- Forks
- 1.7k
- PR merge metrics
- No merged PRs in 30d
Description
There is currently very little API for WeakBilin, and rather a lot of defeq abuse. Moreover, WeakDual and WeakSpace are non-abbrev type synonyms of WeakBilin, so we currently don't have a nice way to unify these theories. It gets more complicated when one wants to consider, for example, a Wβ-algebra (i.e., a Cβ-algebra which has a Banach space predual) equipped with the the weak-β topology. And one can imagine yet other situations.
We propose to unify all these with a new class which states that E is equipped with the weak topology induced by a bilinear form B.
variable {π E F : Type*} [CommSemiring π] [TopologicalSpace π]
[AddCommMonoid E] [Module π E]
[AddCommMonoid F] [Module π F]
[inst : TopologicalSpace E]
class LinearMap.IsWeak (B : E ββ[π] F ββ[π] π) where
eq_induced := inst = .induced (B Β· Β·) Pi.topologicalSpace
Why a class, you may ask? Indeed, we could just write this as a hypothesis: Topology.IsInducing (B Β· Β·). However, adding a class seems to have many benefits.
- It will help prevent defeq abuse in material involving weak topologies. Note for example,
WeakBilin.eval_continuouswhich is not even type correct (along with many other things in that file) because it is aboutB : E ββ[π] F ββ[π] πwhen it should be aboutB' : WeakBilin B ββ[π] F ββ[π] π. By providing a class, we can copy over all the theorems nicely. - Some theorems are naturally stated in terms of weak topologies (e.g., the bipolar theorem) relative to a bilinear form. This will allow us to have a single theorem instead of one for each different setting.
- In a downstream project about the Mackey-Arens theorem, it became clear that the only good way to define the Mackey topology without abusing defeq was to parameterize polar topologies over this
LinearMap.IsWeakclass instead of usingWeakBilindirectly.
As a case in point, let's consider the bipolar theorem. With our class, this can be easily stated as:
/-
The **Bipolar Theorem**: The bipolar of a set `s : Set E` relative to a bilinear form
`B : E ββ[π] F ββ[π] π` (where `E` is equipped with the weak topology induced by `B`)
coincides with its closed absolutely convex hull.
[Conway, *A course in functional analysis*, Chapter V. 1.8][conway1990]
-/
theorem flip_polar_polar (B : E ββ[π] F ββ[π] π) [hB : B.IsWeak] {s : Set E}
(hs : s.Nonempty) :
B.flip.polar (B.polar s) = closedAbsConvexHull π s :=
sorry
This will then apply simultaneously to the natural bilinear forms:
WeakBilin B ββ[π] F ββ[π] π
WeakDual π E ββ[π] E ββ[π] π
WeakSpace π E ββ[π] StrongDual π E ββ[π] π
but also many others. I have already found this class useful for a downstream project.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up β it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the existing WeakBilin, WeakDual, and WeakSpace theories and their weak-topology APIs. Then examine the proposed LinearMap.IsWeak class and the bipolar theorem example; the work is done when these settings can share the stated theory without defeq abuse.
Written by the indexing model from the issue text.
Assessment
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100