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 : sf, 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 sx 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 sx 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 sy 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 sy 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 sf, x s
          theorem SaturatedAddSubmonoid.mem_sInf {M : Type u_1} [AddZeroClass M] {f : Set (SaturatedAddSubmonoid M)} {x : M} :
          x sInf f sf, 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.saturationProp} (mem : ∀ (x : M) (hx : x s), p x ) (mul : ∀ (x y : M) (hx : x s.saturation) (hy : y s.saturation), p x hxp y hyp (x * y) ) (of_mul : ∀ (x y : M) (hxy : x * y s.saturation), p (x * y) hxyp 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.saturationProp} (mem : ∀ (x : M) (hx : x s), p x ) (add : ∀ (x y : M) (hx : x s.saturation) (hy : y s.saturation), p x hxp y hyp (x + y) ) (of_add : ∀ (x y : M) (hxy : x + y s.saturation), p (x + y) hxyp 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 ms, 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₁.toSubmonoids₂.toSubmonoid).saturation
                  theorem SaturatedAddSubmonoid.sup_def {M : Type u_1} [AddZeroClass M] {s₁ s₂ : SaturatedAddSubmonoid M} :
                  s₁s₂ = (s₁.toAddSubmonoids₂.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₁.saturations₂.saturation
                  @[simp]
                  theorem AddSubmonoid.saturation_sup {M : Type u_1} [AddZeroClass M] {s₁ s₂ : AddSubmonoid M} :
                  (s₁s₂).saturation = s₁.saturations₂.saturation
                  @[simp]
                  theorem Submonoid.saturation_sSup {M : Type u_1} [MulOneClass M] {f : Set (Submonoid M)} :
                  (sSup f).saturation = sf, s.saturation
                  @[simp]
                  theorem AddSubmonoid.saturation_sSup {M : Type u_1} [AddZeroClass M] {f : Set (AddSubmonoid M)} :
                  (sSup f).saturation = sf, 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