Documentation

Mathlib.Topology.Algebra.LinearTopology

Linear topologies on modules and rings #

Let M be a (left) module over a ring R. Following Stacks: Definition 15.36.1, we say that a topology on M is R-linear if it is invariant by translations and admits a basis of neighborhoods of 0 consisting of (left) R-submodules.

If M is an (R, R')-bimodule, we show that a topology is both R-linear and R'-linear if and only if there exists a basis of neighborhoods of 0 consisting of (R, R')-subbimodules.

In particular, we say that a topology on the ring R is linear if it is linear if it is linear when R is viewed as an (R, Rᵐᵒᵖ)-bimodule. By the previous results, this means that there exists a basis of neighborhoods of 0 consisting of two-sided ideals, hence our definition agrees with N. Bourbaki, Algebra II, chapter 4, §2, n° 3.

Main definitions and statements #

Notes on the implementation #

Nevertheless, we don't plan on adding those facts as instances: one should use directly results from PR#18437 to get TopologicalAddGroup and TopologicalRing instances.

This makes IsLinearTopology.mk_of_hasBasis un-applicable to TwoSidedIdeal (and probably other types), thus we provide IsLinearTopology.mk_of_hasBasis' as an alternative not relying on typeclass inference.

class IsLinearTopology (R : Type u_1) (M : Type u_3) [Ring R] [AddCommGroup M] [Module R M] [TopologicalSpace M] :

Consider a (left-)module M over a ring R. A topology on M is R-linear if the open sub-R-modules of M form a basis of neighborhoods of zero.

Typically one would also that the topology is invariant by translation (ContinuousConstVAdd M M), or equivalently that M is a topological group, but we do not assume it for the definition.

In particular, we say that a topology on the ring R is linear if it is both R-linear and Rᵐᵒᵖ-linear for the obvious module structures. To spell this in Lean, simply use [IsLinearTopology R R] [IsLinearTopology Rᵐᵒᵖ R].

Instances
    theorem IsLinearTopology.hasBasis_submodule (R : Type u_1) {M : Type u_3} [Ring R] [AddCommGroup M] [Module R M] [TopologicalSpace M] [IsLinearTopology R M] :
    (nhds 0).HasBasis (fun (N : Submodule R M) => N nhds 0) fun (N : Submodule R M) => N
    theorem IsLinearTopology.hasBasis_open_submodule (R : Type u_1) {M : Type u_3} [Ring R] [AddCommGroup M] [Module R M] [TopologicalSpace M] [ContinuousAdd M] [IsLinearTopology R M] :
    (nhds 0).HasBasis (fun (N : Submodule R M) => IsOpen N) fun (N : Submodule R M) => N
    theorem IsLinearTopology.mk_of_hasBasis' (R : Type u_1) {M : Type u_3} [Ring R] [AddCommGroup M] [Module R M] [TopologicalSpace M] {ι : Sort u_4} {S : Type u_5} [SetLike S M] [AddSubmonoidClass S M] {p : ιProp} {s : ιS} (h : (nhds 0).HasBasis p fun (i : ι) => (s i)) (hsmul : ∀ (s : S) (r : R), ms, r m s) :

    A variant of IsLinearTopology.mk_of_hasBasis asking for an explicit proof that S is a class of submodules instead of relying on (fragile) typeclass inference of SMulCommClass.

    theorem IsLinearTopology.mk_of_hasBasis (R : Type u_1) {M : Type u_3} [Ring R] [AddCommGroup M] [Module R M] [TopologicalSpace M] {ι : Sort u_4} {S : Type u_5} [SetLike S M] [SMulMemClass S R M] [AddSubmonoidClass S M] {p : ιProp} {s : ιS} (h : (nhds 0).HasBasis p fun (i : ι) => (s i)) :

    To show that M is linearly-topologized as an R-module, it suffices to show that it has a basis of neighborhoods of zero made of R-submodules.

    Note: for technical reasons detailed in the module docstring, Lean sometimes struggle to find the right SMulMemClass instance. See IsLinearTopology.mk_of_hasBasis' for a more explicit variant.

    theorem isLinearTopology_iff_hasBasis_submodule {R : Type u_1} {M : Type u_3} [Ring R] [AddCommGroup M] [Module R M] [TopologicalSpace M] :
    IsLinearTopology R M (nhds 0).HasBasis (fun (N : Submodule R M) => N nhds 0) fun (N : Submodule R M) => N
    theorem isLinearTopology_iff_hasBasis_open_submodule {R : Type u_1} {M : Type u_3} [Ring R] [AddCommGroup M] [Module R M] [TopologicalSpace M] [ContinuousAdd M] :
    IsLinearTopology R M (nhds 0).HasBasis (fun (N : Submodule R M) => IsOpen N) fun (N : Submodule R M) => N

    The discrete topology on any R-module is R-linear.

    theorem IsLinearTopology.hasBasis_subbimodule (R : Type u_1) (R' : Type u_2) {M : Type u_3} [Ring R] [Ring R'] [AddCommGroup M] [Module R M] [Module R' M] [SMulCommClass R R' M] [TopologicalSpace M] [IsLinearTopology R M] [IsLinearTopology R' M] :
    (nhds 0).HasBasis (fun (I : AddSubgroup M) => I nhds 0 (∀ (r : R), xI, r x I) ∀ (r' : R'), xI, r' x I) fun (I : AddSubgroup M) => I

    Assume that M is a module over two rings R and R', and that its topology is linear with respect to each of these rings. Then, it has a basis of neighborhoods of zero made of sub-(R, R')-bimodules.

    The proof is inspired by lemma 9 in I. Kaplansky, Topological Rings. TODO: Formalize the lemma in its full strength.

    Note: due to the lack of a satisfying theory of sub-bimodules, we use AddSubgroups with extra conditions.

    theorem IsLinearTopology.hasBasis_open_subbimodule (R : Type u_1) (R' : Type u_2) {M : Type u_3} [Ring R] [Ring R'] [AddCommGroup M] [Module R M] [Module R' M] [SMulCommClass R R' M] [TopologicalSpace M] [ContinuousAdd M] [IsLinearTopology R M] [IsLinearTopology R' M] :
    (nhds 0).HasBasis (fun (I : AddSubgroup M) => IsOpen I (∀ (r : R), xI, r x I) ∀ (r' : R'), xI, r' x I) fun (I : AddSubgroup M) => I

    A variant of IsLinearTopology.hasBasis_subbimodule using IsOpen I instead of I ∈ 𝓝 0.

    theorem IsLinearTopology.tendsto_smul_zero (R : Type u_1) {M : Type u_3} [Ring R] [AddCommGroup M] [Module R M] [TopologicalSpace M] [IsLinearTopology R M] {ι : Type u_4} {f : Filter ι} (a : ιR) (m : ιM) (ha : Filter.Tendsto m f (nhds 0)) :
    Filter.Tendsto (a m) f (nhds 0)

    If M is a linearly topologized R-module and i ↦ m i tends to zero, then i ↦ a i • m i still tends to zero for any family a : ι → R.

    If the left and right actions of R on M coincide, then a topology is Rᵐᵒᵖ-linear if and only if it is R-linear.

    theorem IsLinearTopology.hasBasis_ideal {R : Type u_1} [Ring R] [TopologicalSpace R] [IsLinearTopology R R] :
    (nhds 0).HasBasis (fun (I : Ideal R) => I nhds 0) fun (I : Ideal R) => I
    theorem IsLinearTopology.hasBasis_open_ideal {R : Type u_1} [Ring R] [TopologicalSpace R] [ContinuousAdd R] [IsLinearTopology R R] :
    (nhds 0).HasBasis (fun (I : Ideal R) => IsOpen I) fun (I : Ideal R) => I
    theorem isLinearTopology_iff_hasBasis_ideal {R : Type u_1} [Ring R] [TopologicalSpace R] :
    IsLinearTopology R R (nhds 0).HasBasis (fun (I : Ideal R) => I nhds 0) fun (I : Ideal R) => I
    theorem isLinearTopology_iff_hasBasis_open_ideal {R : Type u_1} [Ring R] [TopologicalSpace R] [TopologicalRing R] :
    IsLinearTopology R R (nhds 0).HasBasis (fun (I : Ideal R) => IsOpen I) fun (I : Ideal R) => I
    theorem IsLinearTopology.hasBasis_twoSidedIdeal {R : Type u_1} [Ring R] [TopologicalSpace R] [IsLinearTopology R R] [IsLinearTopology Rᵐᵒᵖ R] :
    (nhds 0).HasBasis (fun (I : TwoSidedIdeal R) => I nhds 0) fun (I : TwoSidedIdeal R) => I

    If a ring R is linearly ordered as a left and right module over itself, then it has a basis of neighborhoods of zero made of two-sided ideals.

    This is usually called a linearly topologized ring, but we do not add a specific spelling: you should use [IsLinearTopology R R] [IsLinearTopology Rᵐᵒᵖ R] instead.

    theorem IsLinearTopology.tendsto_mul_zero_of_left {R : Type u_1} [Ring R] [TopologicalSpace R] [IsLinearTopology Rᵐᵒᵖ R] {ι : Type u_2} {f : Filter ι} (a b : ιR) (ha : Filter.Tendsto a f (nhds 0)) :
    Filter.Tendsto (a * b) f (nhds 0)
    theorem IsLinearTopology.tendsto_mul_zero_of_right {R : Type u_1} [Ring R] [TopologicalSpace R] [IsLinearTopology R R] {ι : Type u_2} {f : Filter ι} (a b : ιR) (hb : Filter.Tendsto b f (nhds 0)) :
    Filter.Tendsto (a * b) f (nhds 0)
    @[instance 100]

    If R is commutative and left-linearly topologized, it is also right-linearly topologized.