Documentation

Mathlib.Algebra.Group.Submonoid.Saturation

Saturation of a submonoid #

We define a submonoid s to be saturated if x * y ∈ s → x ∈ s ∧ y ∈ s. The type of all saturated submonoids forms a complete lattice. For a given submonoid s we construct the saturation of s as the smallest saturated submonoid containing s, which when the underlying type is a commutative monoid, is given by the formula {x : M | ∃ y : M, x * y ∈ s}.

Saturated submonoids are used in the context of localisations.

We also define the type of saturated submonoids, and endow on it the structure of a complete lattice.

Main Definitions #

Given a submonoid s of M, we say that s is saturated if it satisfies x * y ∈ s → x ∈ s ∧ y ∈ s.

It is called MulSaturated here to be distinguished from Submonoid.PowSaturated or AddSubmonoid.NSMulSaturated, which is also called "saturated" in the literature.

Equations
Instances For

    Given an additive submonoid s of M, we say that s is saturated if it satisfies x + y ∈ s → x ∈ s ∧ y ∈ s.

    It is called AddSaturated here to be distinguished from Submonoid.PowSaturated or AddSubmonoid.NSMulSaturated, which is also called "saturated" in the literature.

    Equations
    Instances For
      theorem Submonoid.MulSaturated.mul_mem_iff {M : Type u_1} [MulOneClass M] {s : Submonoid M} (h : s.MulSaturated) {x y : M} :
      x * y ∈ s ↔ x ∈ s ∧ y ∈ s
      theorem AddSubmonoid.AddSaturated.add_mem_iff {M : Type u_1} [AddZeroClass M] {s : AddSubmonoid M} (h : s.AddSaturated) {x y : M} :
      x + y ∈ s ↔ x ∈ s ∧ y ∈ s
      theorem Submonoid.MulSaturated.inf {M : Type u_1} [MulOneClass M] {s₁ s₂ : Submonoid M} (h₁ : s₁.MulSaturated) (h₂ : s₂.MulSaturated) :
      (s₁ ⊓ s₂).MulSaturated
      theorem AddSubmonoid.AddSaturated.inf {M : Type u_1} [AddZeroClass M] {s₁ s₂ : AddSubmonoid M} (h₁ : s₁.AddSaturated) (h₂ : s₂.AddSaturated) :
      (s₁ ⊓ s₂).AddSaturated
      theorem Submonoid.MulSaturated.sInf {M : Type u_1} [MulOneClass M] {f : Set (Submonoid M)} (hf : ∀ s ∈ f, s.MulSaturated) :
      theorem Submonoid.MulSaturated.iInf {M : Type u_1} [MulOneClass M] {ι : Sort u_2} {f : ι → Submonoid M} (hf : ∀ (i : ι), (f i).MulSaturated) :
      theorem AddSubmonoid.AddSaturated.iInf {M : Type u_1} [AddZeroClass M] {ι : Sort u_2} {f : ι → AddSubmonoid M} (hf : ∀ (i : ι), (f i).AddSaturated) :
      theorem Submonoid.MulSaturated.of_left {M : Type u_2} [CommMonoid M] {s : Submonoid M} (h : ∀ ⦃x y : M⦄, x * y ∈ s → x ∈ s) :

      If M is commutative, we only need to check the left condition x ∈ s.

      theorem AddSubmonoid.AddSaturated.of_left {M : Type u_2} [AddCommMonoid M] {s : AddSubmonoid M} (h : ∀ ⦃x y : M⦄, x + y ∈ s → x ∈ s) :

      If M is commutative, we only need to check the left condition x ∈ s.

      theorem Submonoid.MulSaturated.of_right {M : Type u_2} [CommMonoid M] {s : Submonoid M} (h : ∀ ⦃x y : M⦄, x * y ∈ s → y ∈ s) :

      If M is commutative, we only need to check the right condition y ∈ s.

      theorem AddSubmonoid.AddSaturated.of_right {M : Type u_2} [AddCommMonoid M] {s : AddSubmonoid M} (h : ∀ ⦃x y : M⦄, x + y ∈ s → y ∈ s) :

      If M is commutative, we only need to check the right condition y ∈ s.

      structure SaturatedAddSubmonoid (M : Type u_1) [AddZeroClass M] extends AddSubmonoid M :
      Type u_1

      A saturated additive submonoid is a submonoid s that satisfies x + y ∈ s → x ∈ s ∧ y ∈ s.

      Instances For
        structure SaturatedSubmonoid (M : Type u_1) [MulOneClass M] extends Submonoid M :
        Type u_1

        A saturated submonoid is a submonoid s that satisfies x * y ∈ s → x ∈ s ∧ y ∈ s.

        Instances For
          theorem SaturatedSubmonoid.ext {M : Type u_1} [MulOneClass M] {s₁ s₂ : SaturatedSubmonoid M} (h : s₁.toSubmonoid = s₂.toSubmonoid) :
          s₁ = s₂
          theorem SaturatedAddSubmonoid.ext {M : Type u_1} [AddZeroClass M] {s₁ s₂ : SaturatedAddSubmonoid M} (h : s₁.toAddSubmonoid = s₂.toAddSubmonoid) :
          s₁ = s₂
          theorem SaturatedSubmonoid.ext_iff {M : Type u_1} [MulOneClass M] {s₁ s₂ : SaturatedSubmonoid M} :
          s₁ = s₂ ↔ s₁.toSubmonoid = s₂.toSubmonoid
          @[implicit_reducible]
          Equations
          @[implicit_reducible]
          Equations
          theorem SaturatedSubmonoid.ext' {M : Type u_1} [MulOneClass M] {s₁ s₂ : SaturatedSubmonoid M} (h : ∀ (x : M), x ∈ s₁ ↔ x ∈ s₂) :
          s₁ = s₂
          theorem SaturatedAddSubmonoid.ext' {M : Type u_1} [AddZeroClass M] {s₁ s₂ : SaturatedAddSubmonoid M} (h : ∀ (x : M), x ∈ s₁ ↔ x ∈ s₂) :
          s₁ = s₂
          @[simp]
          @[implicit_reducible]
          Equations
          @[implicit_reducible]
          Equations
          @[simp]
          theorem SaturatedSubmonoid.mem_top {M : Type u_1} [MulOneClass M] {x : M} :
          @[simp]
          theorem SaturatedAddSubmonoid.mem_top {M : Type u_1} [AddZeroClass M] {x : M} :
          @[implicit_reducible]
          Equations
          @[implicit_reducible]
          Equations
          • One or more equations did not get rendered due to their size.
          @[implicit_reducible]
          Equations
          @[implicit_reducible]
          Equations
          theorem SaturatedSubmonoid.mem_sInf {M : Type u_1} [MulOneClass M] {f : Set (SaturatedSubmonoid M)} {x : M} :
          x ∈ sInf f ↔ ∀ s ∈ f, x ∈ s
          theorem SaturatedAddSubmonoid.mem_sInf {M : Type u_1} [AddZeroClass M] {f : Set (SaturatedAddSubmonoid M)} {x : M} :
          x ∈ sInf f ↔ ∀ s ∈ f, x ∈ s

          The saturation of a submonoid s is the intersection of all saturated submonoids that contain s.

          If M is a commutative monoid, then this is {x : M | ∃ y : M, x * y ∈ s}.

          Equations
          Instances For

            The saturation of an additive submonoid s is the intersection of all saturated submonoids that contain s.

            If M is a commutative additive monoid, then this is {x : M | ∃ y : M, x + y ∈ s}.

            Equations
            Instances For

              saturation forms a GaloisInsertion with the forgetful functor SaturatedSubmonoid.toSubmonoid.

              Equations
              Instances For

                saturation forms a GaloisInsertion with the forgetful functor SaturatedAddSubmonoid.toAddSubmonoid.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For

                  Alias of the reverse direction of Submonoid.saturation_le_iff_le.

                  theorem Submonoid.saturation_induction {M : Type u_1} [MulOneClass M] {s : Submonoid M} {p : (x : M) → x ∈ s.saturation → Prop} (mem : ∀ (x : M) (hx : x ∈ s), p x ⋯) (mul : ∀ (x y : M) (hx : x ∈ s.saturation) (hy : y ∈ s.saturation), p x hx → p y hy → p (x * y) ⋯) (of_mul : ∀ (x y : M) (hxy : x * y ∈ s.saturation), p (x * y) hxy → p x ⋯ ∧ p y ⋯) {x : M} (hx : x ∈ s.saturation) :
                  p x hx
                  theorem AddSubmonoid.saturation_induction {M : Type u_1} [AddZeroClass M] {s : AddSubmonoid M} {p : (x : M) → x ∈ s.saturation → Prop} (mem : ∀ (x : M) (hx : x ∈ s), p x ⋯) (add : ∀ (x y : M) (hx : x ∈ s.saturation) (hy : y ∈ s.saturation), p x hx → p y hy → p (x + y) ⋯) (of_add : ∀ (x y : M) (hxy : x + y ∈ s.saturation), p (x + y) hxy → p x ⋯ ∧ p y ⋯) {x : M} (hx : x ∈ s.saturation) :
                  p x hx
                  theorem Submonoid.mem_saturation_iff {M : Type u_1} [CommMonoid M] {s : Submonoid M} {x : M} :
                  x ∈ s.saturation ↔ ∃ (y : M), x * y ∈ s
                  theorem AddSubmonoid.mem_saturation_iff {M : Type u_1} [AddCommMonoid M] {s : AddSubmonoid M} {x : M} :
                  x ∈ s.saturation ↔ ∃ (y : M), x + y ∈ s
                  theorem Submonoid.mem_saturation_iff' {M : Type u_1} [CommMonoid M] {s : Submonoid M} {x : M} :
                  x ∈ s.saturation ↔ ∃ (y : M), y * x ∈ s
                  theorem AddSubmonoid.mem_saturation_iff' {M : Type u_1} [AddCommMonoid M] {s : AddSubmonoid M} {x : M} :
                  x ∈ s.saturation ↔ ∃ (y : M), y + x ∈ s
                  theorem Submonoid.mem_saturation_iff_exists_dvd {M : Type u_1} [CommMonoid M] {s : Submonoid M} {x : M} :
                  x ∈ s.saturation ↔ ∃ m ∈ s, x ∣ m
                  @[implicit_reducible]
                  Equations
                  • One or more equations did not get rendered due to their size.
                  @[implicit_reducible]
                  Equations
                  • One or more equations did not get rendered due to their size.
                  theorem SaturatedSubmonoid.sup_def {M : Type u_1} [MulOneClass M] {s₁ s₂ : SaturatedSubmonoid M} :
                  s₁ ⊔ s₂ = (s₁.toSubmonoid ⊔ s₂.toSubmonoid).saturation
                  theorem SaturatedAddSubmonoid.sup_def {M : Type u_1} [AddZeroClass M] {s₁ s₂ : SaturatedAddSubmonoid M} :
                  s₁ ⊔ s₂ = (s₁.toAddSubmonoid ⊔ s₂.toAddSubmonoid).saturation
                  theorem SaturatedSubmonoid.iSup_def {M : Type u_1} [MulOneClass M] {ι : Sort u_2} {f : ι → SaturatedSubmonoid M} :
                  iSup f = (⨆ (i : ι), (f i).toSubmonoid).saturation
                  theorem SaturatedAddSubmonoid.iSup_def {M : Type u_1} [AddZeroClass M] {ι : Sort u_2} {f : ι → SaturatedAddSubmonoid M} :
                  iSup f = (⨆ (i : ι), (f i).toAddSubmonoid).saturation
                  @[simp]
                  theorem Submonoid.saturation_sup {M : Type u_1} [MulOneClass M] {s₁ s₂ : Submonoid M} :
                  (s₁ ⊔ s₂).saturation = s₁.saturation ⊔ s₂.saturation
                  @[simp]
                  theorem AddSubmonoid.saturation_sup {M : Type u_1} [AddZeroClass M] {s₁ s₂ : AddSubmonoid M} :
                  (s₁ ⊔ s₂).saturation = s₁.saturation ⊔ s₂.saturation
                  @[simp]
                  theorem Submonoid.saturation_sSup {M : Type u_1} [MulOneClass M] {f : Set (Submonoid M)} :
                  (sSup f).saturation = ⨆ s ∈ f, s.saturation
                  @[simp]
                  theorem AddSubmonoid.saturation_sSup {M : Type u_1} [AddZeroClass M] {f : Set (AddSubmonoid M)} :
                  (sSup f).saturation = ⨆ s ∈ f, s.saturation
                  @[simp]
                  theorem Submonoid.saturation_iSup {M : Type u_1} [MulOneClass M] {ι : Sort u_2} {f : ι → Submonoid M} :
                  (iSup f).saturation = ⨆ (i : ι), (f i).saturation
                  @[simp]
                  theorem AddSubmonoid.saturation_iSup {M : Type u_1} [AddZeroClass M] {ι : Sort u_2} {f : ι → AddSubmonoid M} :
                  (iSup f).saturation = ⨆ (i : ι), (f i).saturation