leanprover-community / leanprover-community/mathlib4

Weak spaces as a class

Open
#38,484 0 comments 3 reactions 0 assignees View on GitHub

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.

  1. It will help prevent defeq abuse in material involving weak topologies. Note for example, WeakBilin.eval_continuous which is not even type correct (along with many other things in that file) because it is about B : E β†’β‚—[π•œ] F β†’β‚—[π•œ] π•œ when it should be about B' : WeakBilin B β†’β‚—[π•œ] F β†’β‚—[π•œ] π•œ. By providing a class, we can copy over all the theorems nicely.
  2. 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.
  3. 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.IsWeak class instead of using WeakBilin directly.

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up β€” it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.