Documentation

Mathlib.Topology.Algebra.Module.Basic

Theory of topological modules #

We use the class ContinuousSMul for topological (semi) modules and topological vector spaces.

theorem ContinuousSMul.of_nhds_zero {R : Type u_1} {M : Type u_2} [Ring R] [TopologicalSpace R] [TopologicalSpace M] [AddCommGroup M] [Module R M] [IsTopologicalRing R] [IsTopologicalAddGroup M] (hmul : Filter.Tendsto (fun (p : R Γ— M) => p.1 β€’ p.2) (nhds 0 Γ—Λ’ nhds 0) (nhds 0)) (hmulleft : βˆ€ (m : M), Filter.Tendsto (fun (a : R) => a β€’ m) (nhds 0) (nhds 0)) (hmulright : βˆ€ (a : R), Filter.Tendsto (fun (m : M) => a β€’ m) (nhds 0) (nhds 0)) :

A topological module over a ring has continuous negation.

This cannot be an instance, because it would cause search for [Module ?R M] with unknown R.

If M is a topological module over R and 0 is a limit of invertible elements of R, then ⊀ is the only submodule of M with a nonempty interior. This is the case, e.g., if R is a nontrivially normed field.

Let R be a topological ring such that zero is not an isolated point (e.g., a nontrivially normed field, see NormedField.punctured_nhds_neBot). Let M be a nontrivial module over R such that c β€’ x = 0 implies c = 0 ∨ x = 0. Then M has no isolated points. We formulate this using NeBot (𝓝[β‰ ] x).

This lemma is not an instance because Lean would need to find [ContinuousSMul ?m_1 M] with unknown ?m_1. We register this as an instance for R = ℝ in Real.punctured_nhds_module_neBot. One can also use haveI := Module.punctured_nhds_neBot R M in a proof.

theorem continuousSMul_inducedβ‚›β‚— {R : Type u_1} {S : Type u_2} {M₁ : Type u_3} {Mβ‚‚' : Type u_5} {Ο† : R β†’ S} [SMul R M₁] [SMul S Mβ‚‚'] [u : TopologicalSpace R] [u' : TopologicalSpace S] {t' : TopologicalSpace Mβ‚‚'} [ContinuousSMul S Mβ‚‚'] {F' : Type u_7} [FunLike F' M₁ Mβ‚‚'] [MulActionSemiHomClass F' Ο† M₁ Mβ‚‚'] (f' : F') (hΟ† : Continuous Ο†) :
ContinuousSMul R M₁
theorem continuousSMul_induced {R : Type u_1} {M₁ : Type u_3} {Mβ‚‚ : Type u_4} [SMul R M₁] [SMul R Mβ‚‚] [u : TopologicalSpace R] {t : TopologicalSpace Mβ‚‚} [ContinuousSMul R Mβ‚‚] {F : Type u_6} [FunLike F M₁ Mβ‚‚] [MulActionHomClass F R M₁ Mβ‚‚] (f : F) :
ContinuousSMul R M₁

The span of a separable subset with respect to a separable scalar ring is again separable.

theorem Submodule.mapsTo_smul_closure {R : Type u} {M : Type v} [Semiring R] [TopologicalSpace M] [AddCommMonoid M] [Module R M] [ContinuousConstSMul R M] (s : Submodule R M) (c : R) :
Set.MapsTo (fun (x : M) => c β€’ x) (closure ↑s) (closure ↑s)

The (topological-space) closure of a submodule of a topological R-module M is itself a submodule.

Equations
    Instances For

      The topological closure of a closed submodule s is equal to s.

      A subspace is dense iff its topological closure is the entire space.

      A maximal proper subspace of a topological module (i.e a Submodule satisfying IsCoatom) is either closed or dense.

      theorem Submodule.closure_coe_iSup_map_single {ΞΉ : Type u_1} {R : Type u_2} {M : ΞΉ β†’ Type u_3} [Semiring R] [(i : ΞΉ) β†’ AddCommMonoid (M i)] [(i : ΞΉ) β†’ Module R (M i)] [(i : ΞΉ) β†’ TopologicalSpace (M i)] [DecidableEq ΞΉ] (s : (i : ΞΉ) β†’ Submodule R (M i)) :
      closure ↑(⨆ (i : ΞΉ), map (LinearMap.single R M i) (s i)) = Set.univ.pi fun (i : ΞΉ) => closure ↑(s i)

      If s i is a family of submodules, each is in its module, then the closure of their span in the indexed product of the modules is the product of their closures.

      In case of a finite index type, this statement immediately follows from Submodule.iSup_map_single. However, the statement is true for an infinite index type as well.

      theorem Submodule.topologicalClosure_iSup_map_single {ΞΉ : Type u_1} {R : Type u_2} {M : ΞΉ β†’ Type u_3} [Semiring R] [(i : ΞΉ) β†’ AddCommMonoid (M i)] [(i : ΞΉ) β†’ Module R (M i)] [(i : ΞΉ) β†’ TopologicalSpace (M i)] [DecidableEq ΞΉ] [βˆ€ (i : ΞΉ), ContinuousAdd (M i)] [βˆ€ (i : ΞΉ), ContinuousConstSMul R (M i)] (s : (i : ΞΉ) β†’ Submodule R (M i)) :
      (⨆ (i : ΞΉ), map (LinearMap.single R M i) (s i)).topologicalClosure = pi Set.univ fun (i : ΞΉ) => (s i).topologicalClosure

      If s i is a family of submodules, each is in its module, then the closure of their span in the indexed product of the modules is the product of their closures.

      In case of a finite index type, this statement immediately follows from Submodule.iSup_map_single. However, the statement is true for an infinite index type as well.

      This version is stated in terms of Submodule.topologicalClosure, thus assumes that M is are topological modules over R. However, the statement is true without assuming continuity of the operations, see Submodule.closure_coe_iSup_map_single above.

      theorem LinearMap.continuous_on_pi {ΞΉ : Type u_1} {R : Type u_2} {M : Type u_3} [Finite ΞΉ] [Semiring R] [TopologicalSpace R] [AddCommMonoid M] [Module R M] [TopologicalSpace M] [ContinuousAdd M] [ContinuousSMul R M] (f : (ΞΉ β†’ R) β†’β‚—[R] M) :
      Continuous ⇑f
      def linearMapOfMemClosureRangeCoe {M₁ : Type u_1} {Mβ‚‚ : Type u_2} {R : Type u_4} {S : Type u_5} [TopologicalSpace Mβ‚‚] [T2Space Mβ‚‚] [Semiring R] [Semiring S] [AddCommMonoid M₁] [AddCommMonoid Mβ‚‚] [Module R M₁] [Module S Mβ‚‚] [ContinuousConstSMul S Mβ‚‚] [ContinuousAdd Mβ‚‚] {Οƒ : R β†’+* S} (f : M₁ β†’ Mβ‚‚) (hf : f ∈ closure (Set.range DFunLike.coe)) :
      M₁ β†’β‚›β‚—[Οƒ] Mβ‚‚

      Constructs a bundled linear map from a function and a proof that this function belongs to the closure of the set of linear maps.

      Equations
        Instances For
          @[simp]
          theorem linearMapOfMemClosureRangeCoe_apply {M₁ : Type u_1} {Mβ‚‚ : Type u_2} {R : Type u_4} {S : Type u_5} [TopologicalSpace Mβ‚‚] [T2Space Mβ‚‚] [Semiring R] [Semiring S] [AddCommMonoid M₁] [AddCommMonoid Mβ‚‚] [Module R M₁] [Module S Mβ‚‚] [ContinuousConstSMul S Mβ‚‚] [ContinuousAdd Mβ‚‚] {Οƒ : R β†’+* S} (f : M₁ β†’ Mβ‚‚) (hf : f ∈ closure (Set.range DFunLike.coe)) :
          def linearMapOfTendsto {M₁ : Type u_1} {Mβ‚‚ : Type u_2} {Ξ± : Type u_3} {R : Type u_4} {S : Type u_5} [TopologicalSpace Mβ‚‚] [T2Space Mβ‚‚] [Semiring R] [Semiring S] [AddCommMonoid M₁] [AddCommMonoid Mβ‚‚] [Module R M₁] [Module S Mβ‚‚] [ContinuousConstSMul S Mβ‚‚] [ContinuousAdd Mβ‚‚] {Οƒ : R β†’+* S} {l : Filter Ξ±} (f : M₁ β†’ Mβ‚‚) (g : Ξ± β†’ M₁ β†’β‚›β‚—[Οƒ] Mβ‚‚) [l.NeBot] (h : Filter.Tendsto (fun (a : Ξ±) (x : M₁) => (g a) x) l (nhds f)) :
          M₁ β†’β‚›β‚—[Οƒ] Mβ‚‚

          Construct a bundled linear map from a pointwise limit of linear maps

          Equations
            Instances For
              @[simp]
              theorem linearMapOfTendsto_apply {M₁ : Type u_1} {Mβ‚‚ : Type u_2} {Ξ± : Type u_3} {R : Type u_4} {S : Type u_5} [TopologicalSpace Mβ‚‚] [T2Space Mβ‚‚] [Semiring R] [Semiring S] [AddCommMonoid M₁] [AddCommMonoid Mβ‚‚] [Module R M₁] [Module S Mβ‚‚] [ContinuousConstSMul S Mβ‚‚] [ContinuousAdd Mβ‚‚] {Οƒ : R β†’+* S} {l : Filter Ξ±} (f : M₁ β†’ Mβ‚‚) (g : Ξ± β†’ M₁ β†’β‚›β‚—[Οƒ] Mβ‚‚) [l.NeBot] (h : Filter.Tendsto (fun (a : Ξ±) (x : M₁) => (g a) x) l (nhds f)) :
              ⇑(linearMapOfTendsto f g h) = f
              theorem LinearMap.isClosed_range_coe (M₁ : Type u_1) (Mβ‚‚ : Type u_2) {R : Type u_4} {S : Type u_5} [TopologicalSpace Mβ‚‚] [T2Space Mβ‚‚] [Semiring R] [Semiring S] [AddCommMonoid M₁] [AddCommMonoid Mβ‚‚] [Module R M₁] [Module S Mβ‚‚] [ContinuousConstSMul S Mβ‚‚] [ContinuousAdd Mβ‚‚] (Οƒ : R β†’+* S) :