Documentation

Mathlib.Topology.Algebra.Module.IsWeak

Weak topologies on modules #

Given a bilinear form B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ, the weak topology on E is the coarsest topology such that for all y : F every map (B ยท y) is continuous; equivalently, it is the topology on E induced by the map (B ยท ยท : E โ†’ (F โ†’ ๐•œ)).

This file defines a Prop-valued typeclass LinearMap.IsWeak expressing that an existing topology on E is the weak topology. Although this could be passed around explicitly as a hypothesis Topology.IsInducing (B ยท ยท), given the ubiquity of weak topologies in functional analysis, the numerous properties that can be deduced because the inducing map B is bilinear, the fact that several theorems (e.g., one version of the bipolar theorem) require this hypothesis, and we can instantiate this class for several extant types in Mathlib, we choose to make this a typeclass instead.

Note that establishing LinearMap.IsWeak before proving theorems about a particular type can help prevent abuse of definitional equalities. This because spaces equipped with a weak topology are frequently type synonyms of some other type E'. For example, suppose E' is a type (potentially with some extant topology other than the weak topology) and B' : E' โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ is a bilinear form. To consider the weak topology on E' induced by B', in practice we must create a type synonym E with an instance TopologicalSpace E := .induced (B' ยท ยท) Pi.topologicalSpace. It would then be tempting to create theorems such as:

example (y : F) : Continuous (fun x : E โ†ฆ B' x y) := sorry

However, this statement contains an abuse of the the definitional equality E := E' since x : E, but B' has domain E'. Moreover, one might be tempted to say that B'.IsWeak, but this is impossible because the domain of B' is E', which is equipped with the incorrect topology. Instead, what one should do is to first define a new bilinear form B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ by composing B' with the linear equivalence between E and E', and then establish B.IsWeak. If then one proves theorems about E using only the LinearMap.IsWeak API, then one can have more confidence that the statements are type correct.

Main definitions #

Main results #

We prove the following results characterizing the weak topology:

class LinearMap.IsWeak {๐•œ : Type u_2} {E : Type u_3} {F : Type u_4} [CommSemiring ๐•œ] [TopologicalSpace ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] [t : TopologicalSpace E] (B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ) :

Typeclass expressing that the topology on E is the weak topology induced by the bilinear form B.

Instances
    theorem LinearMap.isWeak_iff {๐•œ : Type u_2} {E : Type u_3} {F : Type u_4} [CommSemiring ๐•œ] [TopologicalSpace ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] [t : TopologicalSpace E] (B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ) :
    B.IsWeak โ†” t = TopologicalSpace.induced (fun (x1 : E) (x2 : F) => (B x1) x2) Pi.topologicalSpace
    instance LinearMap.IsWeak.instFlip {๐•œ : Type u_2} {E : Type u_3} {F : Type u_4} [CommSemiring ๐•œ] [TopologicalSpace ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] [inst : TopologicalSpace E] (B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ) [hB : B.IsWeak] :
    theorem LinearMap.IsWeak.coeFn_continuous {๐•œ : Type u_2} {E : Type u_3} {F : Type u_4} [CommSemiring ๐•œ] [TopologicalSpace ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] [inst : TopologicalSpace E] (B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ) [hB : B.IsWeak] :
    Continuous fun (x1 : E) (x2 : F) => (B x1) x2

    The coercion (B ยท ยท) : E โ†’ (F โ†’ ๐•œ) is continuous.

    theorem LinearMap.IsWeak.continuous_eval {๐•œ : Type u_2} {E : Type u_3} {F : Type u_4} [CommSemiring ๐•œ] [TopologicalSpace ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] [inst : TopologicalSpace E] (B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ) [hB : B.IsWeak] (y : F) :
    Continuous fun (x : E) => (B x) y

    The evaluation map (B ยท y) : E โ†’ ๐•œ is continuous for each y : F.

    theorem LinearMap.IsWeak.continuous_of_continuous_eval {๐•œ : Type u_2} {E : Type u_3} {F : Type u_4} [CommSemiring ๐•œ] [TopologicalSpace ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] [inst : TopologicalSpace E] (B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ) [hB : B.IsWeak] {ฮฑ : Type u_7} [TopologicalSpace ฮฑ] {f : ฮฑ โ†’ E} (hf : โˆ€ (y : F), Continuous fun (x : ฮฑ) => (B (f x)) y) :

    A map f : ฮฑ โ†’ E is continuous if all the maps fun a โ†ฆ B (f a) y are continuous for each y : F.

    theorem LinearMap.IsWeak.continuous_iff {๐•œ : Type u_2} {E : Type u_3} {F : Type u_4} [CommSemiring ๐•œ] [TopologicalSpace ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] [inst : TopologicalSpace E] (B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ) [hB : B.IsWeak] {ฮฑ : Type u_7} [TopologicalSpace ฮฑ] {f : ฮฑ โ†’ E} :
    Continuous f โ†” โˆ€ (y : F), Continuous fun (x : ฮฑ) => (B (f x)) y
    theorem LinearMap.IsWeak.isInducing {๐•œ : Type u_2} {E : Type u_3} {F : Type u_4} [CommSemiring ๐•œ] [TopologicalSpace ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] [inst : TopologicalSpace E] (B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ) [hB : B.IsWeak] :
    Topology.IsInducing fun (x1 : E) (x2 : F) => (B x1) x2

    The coercion (B ยท ยท) : E โ†’ (F โ†’ ๐•œ) is an embedding.

    theorem LinearMap.IsWeak.isEmbedding {๐•œ : Type u_2} {E : Type u_3} {F : Type u_4} [CommSemiring ๐•œ] [TopologicalSpace ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] [inst : TopologicalSpace E] {B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ} [hB : B.IsWeak] (hB_inj : Function.Injective โ‡‘B) :
    Topology.IsEmbedding fun (x1 : E) (x2 : F) => (B x1) x2

    The coercion (B ยท ยท) : E โ†’ (F โ†’ ๐•œ) is an embedding.

    theorem LinearMap.IsWeak.tendsto_iff_forall_eval_tendsto {๐•œ : Type u_2} {E : Type u_3} {F : Type u_4} [CommSemiring ๐•œ] [TopologicalSpace ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] [inst : TopologicalSpace E] {B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ} [hB : B.IsWeak] {ฮฑ : Type u_7} {l : Filter ฮฑ} {f : ฮฑ โ†’ E} {x : E} (hB_inj : Function.Injective โ‡‘B) :
    Filter.Tendsto f l (nhds x) โ†” โˆ€ (y : F), Filter.Tendsto (fun (i : ฮฑ) => (B (f i)) y) l (nhds ((B x) y))
    theorem LinearMap.IsWeak.congr {๐•œ : Type u_2} {E : Type u_3} {F : Type u_4} {E' : Type u_5} {F' : Type u_6} [CommSemiring ๐•œ] [TopologicalSpace ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] [inst : TopologicalSpace E] [AddCommMonoid E'] [Module ๐•œ E'] [AddCommMonoid F'] [Module ๐•œ F'] [TopologicalSpace E'] (B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ) (B' : E' โ†’โ‚—[๐•œ] F' โ†’โ‚—[๐•œ] ๐•œ) (e : E โ‰ƒL[๐•œ] E') (f : F โ‰ƒโ‚—[๐•œ] F') (hBB' : ((โ†‘e).arrowCongr (f.arrowCongr (LinearEquiv.refl ๐•œ ๐•œ))) B = B') [hB : B.IsWeak] :

    Suppose B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ and B' : E' โ†’โ‚—[๐•œ] F' โ†’โ‚—[๐•œ] ๐•œ are bilinear maps such that E โ‰ƒL[๐•œ] E' and F โ‰ƒโ‚—[๐•œ] F'. If B.IsWeak, then so also B'.IsWeak.

    def LinearMap.IsWeak.eval {๐•œ : Type u_2} {E : Type u_3} {F : Type u_4} [CommSemiring ๐•œ] [TopologicalSpace ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] [inst : TopologicalSpace E] (B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ) [hB : B.IsWeak] [ContinuousAdd ๐•œ] [ContinuousConstSMul ๐•œ ๐•œ] :
    F โ†’โ‚—[๐•œ] StrongDual ๐•œ E

    Map F into the topological dual of E with the weak topology induced by F

    Equations
    Instances For
      theorem LinearMap.IsWeak.continuousAdd {๐•œ : Type u_2} {E : Type u_3} {F : Type u_4} [CommSemiring ๐•œ] [TopologicalSpace ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] [inst : TopologicalSpace E] (B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ) [hB : B.IsWeak] [ContinuousAdd ๐•œ] :

      Addition in E is continuous when E is equipped with a LinearMap.IsWeak topology.

      theorem LinearMap.IsWeak.continuousSMul {๐•œ : Type u_2} {E : Type u_3} {F : Type u_4} [CommSemiring ๐•œ] [TopologicalSpace ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] [inst : TopologicalSpace E] (B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ) [hB : B.IsWeak] [ContinuousSMul ๐•œ ๐•œ] :
      ContinuousSMul ๐•œ E

      Scalar multiplication in E is continuous when E is equipped with a LinearMap.IsWeak topology.

      theorem LinearMap.IsWeak.isTopologicalAddGroup {๐•œ : Type u_7} {E : Type u_8} {F : Type u_9} [CommRing ๐•œ] [TopologicalSpace ๐•œ] [AddCommGroup E] [Module ๐•œ E] [AddCommGroup F] [Module ๐•œ F] [TopologicalSpace E] [ContinuousAdd ๐•œ] (B : E โ†’โ‚—[๐•œ] F โ†’โ‚—[๐•œ] ๐•œ) [hB : B.IsWeak] :

      E is a IsTopologicalAddGroup when E is equipped with a LinearMap.IsWeak topology.