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 : Finset M // span R s = p }), (↑s).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 : Finset M // span R s = p }), (↑s).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.FG.finite_generators {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] {p : Submodule R M} (hp : 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.spanRank_sup_le_sum_spanRank {R : Type u_1} {M : Type u} [Semiring R] [AddCommMonoid M] [Module R M] {p q : Submodule R M} :
              theorem Module.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) :