Documentation

Mathlib.Algebra.Group.Submonoid.Support

Supports of submonoids #

Let G be an (additive) group, and let M be a submonoid of G. The support of M is M ∩ -M, the largest subgroup of G contained in M. A submonoid C is pointed, or a positive cone, if it has zero support. A submonoid C is spanning if M ∪ -M = G.

The names for these concepts are taken from the theory of convex cones.

Main definitions #

def Submonoid.mulSupport {G : Type u_1} [Group G] (M : Submonoid G) :

The support of a submonoid M of a group G is M ∩ M⁻¹, the largest subgroup of G contained in M.

Equations
Instances For

    The support of a submonoid M of a group G is M ∩ -M, the largest subgroup of G contained in M.

    Equations
    • M.support = { toAddSubmonoid := M ⊓ -M, neg_mem' := ⋯ }
    Instances For
      @[simp]
      theorem AddSubmonoid.coe_support {G : Type u_1} [AddGroup G] (M : AddSubmonoid G) :
      ↑M.support = ↑M ∩ -↑M
      @[simp]
      theorem Submonoid.coe_mulSupport {G : Type u_1} [Group G] (M : Submonoid G) :
      ↑M.mulSupport = ↑M ∩ (↑M)⁻¹
      @[simp]
      theorem Submonoid.mem_mulSupport {G : Type u_1} [Group G] {M : Submonoid G} {x : G} :
      @[simp]
      theorem AddSubmonoid.mem_support {G : Type u_1} [AddGroup G] {M : AddSubmonoid G} {x : G} :
      x ∈ M.support ↔ x ∈ M ∧ -x ∈ M

      The support of a submonoid is the largest subgroup it contains.

      The support of a submonoid is the largest subgroup it contains.

      The support of a submonoid is the largest subgroup it contains.

      Equations
      Instances For

        The support of a submonoid is the largest subgroup it contains.

        Equations
        Instances For
          def Submonoid.IsMulPointed {G : Type u_1} [Group G] (M : Submonoid G) :

          A submonoid is pointed if it has zero support.

          Equations
          Instances For

            A submonoid is pointed if it has zero support.

            Equations
            Instances For
              @[deprecated "Trivially true" (since := "2026-09-28")]
              theorem Submonoid.IsMulPointed.mk {G : Type u_1} [Group G] {M : Submonoid G} (h : ∀ x ∈ M, x⁻¹ ∈ M → x = 1) :
              @[deprecated "Trivially true" (since := "2026-09-28")]
              theorem AddSubmonoid.IsPointed.mk {G : Type u_1} [AddGroup G] {M : AddSubmonoid G} (h : ∀ x ∈ M, -x ∈ M → x = 0) :
              theorem Submonoid.IsMulPointed.eq_one_of_mem_of_inv_mem {G : Type u_1} [Group G] {M : Submonoid G} (hM : M.IsMulPointed) {x : G} (hx₁ : x ∈ M) (hx₂ : x⁻¹ ∈ M) :
              x = 1
              theorem AddSubmonoid.IsPointed.eq_zero_of_mem_of_neg_mem {G : Type u_1} [AddGroup G] {M : AddSubmonoid G} (hM : M.IsPointed) {x : G} (hx₁ : x ∈ M) (hx₂ : -x ∈ M) :
              x = 0
              @[deprecated Submonoid.IsMulPointed.eq_one_of_mem_of_inv_mem (since := "2026-09-28")]
              theorem Submonoid.IsMulPointed.eq_one_of_mem_of_inv_mem₂ {G : Type u_1} [Group G] {M : Submonoid G} (hM : M.IsMulPointed) {x : G} (hx₁ : x ∈ M) (hx₂ : x⁻¹ ∈ M) :
              x = 1

              Alias of Submonoid.IsMulPointed.eq_one_of_mem_of_inv_mem.

              @[deprecated AddSubmonoid.IsPointed.eq_zero_of_mem_of_neg_mem (since := "2026-09-28")]
              theorem AddSubmonoid.IsPointed.eq_zero_of_mem_of_neg_mem₂ {G : Type u_1} [AddGroup G] {M : AddSubmonoid G} (hM : M.IsPointed) {x : G} (hx₁ : x ∈ M) (hx₂ : -x ∈ M) :
              x = 0

              Alias of AddSubmonoid.IsPointed.eq_zero_of_mem_of_neg_mem.

              @[simp]

              Alias of the forward direction of isMulPointed_iff_mulSupport_eq_bot.

              @[simp]

              Alias of the forward direction of isPointed_iff_support_eq_bot.

              Alias of the reverse direction of isPointed_iff_support_eq_bot.

              def Submonoid.IsMulSpanning {G : Type u_1} [Group G] (M : Submonoid G) :

              A submonoid M of a group G is spanning if M generates G as a subgroup.

              Equations
              Instances For

                A submonoid M of a group G is spanning if M generates G as a subgroup.

                Equations
                Instances For
                  @[deprecated "Trivially true" (since := "2026-09-28")]
                  theorem Submonoid.IsMulSpanning.mk {G : Type u_1} [Group G] {M : Submonoid G} (h : ∀ (a : G), a ∈ M ∨ a⁻¹ ∈ M) :
                  @[deprecated "Trivially true" (since := "2026-09-28")]
                  theorem AddSubmonoid.IsSpanning.mk {G : Type u_1} [AddGroup G] {M : AddSubmonoid G} (h : ∀ (a : G), a ∈ M ∨ -a ∈ M) :
                  theorem Submonoid.IsMulSpanning.mem_or_inv_mem {G : Type u_1} [Group G] {M : Submonoid G} (hM : M.IsMulSpanning) (a : G) :
                  a ∈ M ∨ a⁻¹ ∈ M
                  theorem AddSubmonoid.IsSpanning.mem_or_neg_mem {G : Type u_1} [AddGroup G] {M : AddSubmonoid G} (hM : M.IsSpanning) (a : G) :
                  a ∈ M ∨ -a ∈ M
                  theorem Submonoid.IsMulSpanning.of_le {G : Type u_1} [Group G] {M N : Submonoid G} (hM : M.IsMulSpanning) (h : M ≤ N) :
                  theorem AddSubmonoid.IsSpanning.of_le {G : Type u_1} [AddGroup G] {M N : AddSubmonoid G} (hM : M.IsSpanning) (h : M ≤ N) :
                  @[simp]
                  theorem Subgroup.mulSupport_eq {G : Type u_1} [Group G] (H : Subgroup G) :
                  @[simp]
                  theorem AddSubgroup.support_eq {G : Type u_1} [AddGroup G] (H : AddSubgroup G) :
                  theorem Submonoid.mulSupport_mono {G : Type u_1} [Group G] {M N : Submonoid G} (h : M ≤ N) :
                  theorem AddSubmonoid.support_mono {G : Type u_1} [AddGroup G] {M N : AddSubmonoid G} (h : M ≤ N) :
                  @[simp]
                  theorem Submonoid.mulSupport_inf {G : Type u_1} [Group G] (M N : Submonoid G) :
                  (M ⊓ N).mulSupport = M.mulSupport ⊓ N.mulSupport
                  @[simp]
                  theorem AddSubmonoid.support_inf {G : Type u_1} [AddGroup G] (M N : AddSubmonoid G) :
                  (M ⊓ N).support = M.support ⊓ N.support
                  @[simp]
                  theorem Submonoid.mulSupport_sInf {G : Type u_1} [Group G] (s : Set (Submonoid G)) :
                  (sInf s).mulSupport = ⨅ M ∈ s, M.mulSupport
                  @[simp]
                  theorem AddSubmonoid.support_sInf {G : Type u_1} [AddGroup G] (s : Set (AddSubmonoid G)) :
                  (sInf s).support = ⨅ M ∈ s, M.support
                  @[simp]
                  theorem Submonoid.mulSupport_iInf {G : Type u_1} [Group G] {ι : Type u_3} (f : ι → Submonoid G) :
                  (iInf f).mulSupport = ⨅ (i : ι), (f i).mulSupport
                  @[simp]
                  theorem AddSubmonoid.support_iInf {G : Type u_1} [AddGroup G] {ι : Type u_3} (f : ι → AddSubmonoid G) :
                  (iInf f).support = ⨅ (i : ι), (f i).support
                  theorem Submonoid.IsMulSpanning.comap {G : Type u_1} [Group G] {H : Type u_2} [Group H] (f : G →* H) {M' : Submonoid H} (hM' : M'.IsMulSpanning) :
                  theorem AddSubmonoid.IsSpanning.comap {G : Type u_1} [AddGroup G] {H : Type u_2} [AddGroup H] (f : G →+ H) {M' : AddSubmonoid H} (hM' : M'.IsSpanning) :
                  @[simp]
                  theorem Submonoid.mulSupport_comap {G : Type u_1} [Group G] {H : Type u_2} [Group H] (f : G →* H) (M' : Submonoid H) :
                  @[simp]
                  theorem AddSubmonoid.support_comap {G : Type u_1} [AddGroup G] {H : Type u_2} [AddGroup H] (f : G →+ H) (M' : AddSubmonoid H) :
                  theorem Submonoid.IsMulSpanning.map {G : Type u_1} [Group G] {H : Type u_2} [Group H] {f : G →* H} {M : Submonoid G} (hM : M.IsMulSpanning) (hf : Function.Surjective ⇑f) :
                  theorem AddSubmonoid.IsSpanning.map {G : Type u_1} [AddGroup G] {H : Type u_2} [AddGroup H] {f : G →+ H} {M : AddSubmonoid G} (hM : M.IsSpanning) (hf : Function.Surjective ⇑f) :
                  theorem Submonoid.map_mulSupport_le {G : Type u_1} [Group G] {H : Type u_2} [Group H] (f : G →* H) (M : Submonoid G) :
                  theorem AddSubmonoid.map_support_le {G : Type u_1} [AddGroup G] {H : Type u_2} [AddGroup H] (f : G →+ H) (M : AddSubmonoid G) :
                  theorem Submonoid.mulSupport_map {G : Type u_1} [Group G] {H : Type u_2} [Group H] {f : G →* H} {M : Submonoid G} (hsupp : f.ker ≤ M.mulSupport) :
                  theorem AddSubmonoid.support_map {G : Type u_1} [AddGroup G] {H : Type u_2} [AddGroup H] {f : G →+ H} {M : AddSubmonoid G} (hsupp : f.ker ≤ M.support) :