Documentation

Mathlib.Algebra.Module.SpanRank

Minimum Cardinality of generating set of a submodule #

In this file, we define the minimum cardinality of a generating set for a submodule, which is implemented as spanFinrank and spanRank. spanFinrank takes value in and equals 0 when no finite generating set exists. spanRank takes value as a cardinal.

Main Definitions #

Main Results #

Tags #

submodule, generating subset, span rank

Remark #

Note that the corresponding API - Module.rank is only defined for a module rather than a submodule, so there is some asymmetry here. Further refactoring might be needed if this difference creates a friction later on.

noncomputable def Submodule.spanRank {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] (p : Submodule R M) :

The minimum cardinality of a generating set of a submodule as a cardinal.

Equations
Instances For
    noncomputable def Submodule.spanFinrank {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] (p : Submodule R M) :

    The minimum cardinality of a generating set of a submodule as a natural number. If no finite generating set exists, the span rank is defined to be 0.

    Equations
    Instances For
      instance Submodule.instNonemptySubtypeSetEqSpan {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] (p : Submodule R M) :
      Nonempty { s : Set M // span R s = p }
      theorem Submodule.spanRank_toENat_eq_iInf_encard {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] (p : Submodule R M) :
      Cardinal.toENat p.spanRank = ⨅ (s : Set M), ⨅ (_ : span R s = p), s.encard
      theorem Submodule.spanRank_toENat_eq_iInf_finset_card {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] (p : Submodule R M) :
      Cardinal.toENat p.spanRank = ⨅ (s : { s : Set M // s.Finite span R s = p }), .toFinset.card
      theorem Submodule.spanFinrank_eq_iInf {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] (p : Submodule R M) :
      p.spanFinrank = ⨅ (s : { s : Set M // s.Finite span R s = p }), .toFinset.card
      @[simp]

      A submodule's spanRank is finite if and only if it is finitely generated.

      A submodule is finitely generated if and only if its spanRank is equal to its spanFinrank.

      theorem Submodule.spanRank_span_le_card {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] (s : Set M) :
      theorem Submodule.exists_span_set_card_eq_spanRank {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] (p : Submodule R M) :
      ∃ (s : Set M), Cardinal.mk s = p.spanRank span R s = p

      Constructs a generating set with cardinality equal to the spanRank of the submodule

      theorem Submodule.FG.exists_span_set_encard_eq_spanFinrank {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] {p : Submodule R M} (h : p.FG) :
      ∃ (s : Set M), s.encard = p.spanFinrank span R s = p

      Constructs a generating set with cardinality equal to the spanFinrank of the submodule when the submodule is finitely generated.

      theorem Submodule.FG.spanRank_le_iff_exists_span_set_card_le {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] (p : Submodule R M) {a : Cardinal.{u}} :
      p.spanRank a ∃ (s : Set M), Cardinal.mk s a span R s = p

      For a finitely generated submodule, its spanRank is less than or equal to a cardinal a if and only if there is a generating subset with cardinality less than or equal to a.

      @[simp]
      theorem Submodule.spanRank_eq_zero_iff_eq_bot {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] {I : Submodule R M} :
      @[simp]
      noncomputable def Submodule.generators {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] (p : Submodule R M) :
      Set M

      Generating elements for the submodule of minimum cardinality.

      Equations
      Instances For
        theorem Submodule.FG.generators_ncard {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] {p : Submodule R M} (h : p.FG) :
        theorem Submodule.span_generators {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] (p : Submodule R M) :

        The span of the generators equals the submodule.

        theorem Submodule.FG.generators_mem {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] (p : Submodule R M) :

        The elements of the generators are in the submodule.

        theorem Submodule.Basis.mk_eq_spanRank {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] [RankCondition R] {ι : Type u_1} (v : Basis ι R M) :