Documentation

Mathlib.Algebra.GroupWithZero.NonZeroDivisors

Non-zero divisors and smul-divisors #

In this file we define the submonoid nonZeroDivisors and nonZeroSMulDivisors of a MonoidWithZero. We also define nonZeroDivisorsLeft and nonZeroDivisorsRight for non-commutative monoids.

Notation #

This file declares the notations:

Use the statement open scoped nonZeroDivisors nonZeroSMulDivisors to access this notation in your own code.

theorem Irreducible.coe_ne_zero {M₀ : Type u_1} {S : Type u_2} [MonoidWithZero M₀] [SetLike S M₀] [SubmonoidClass S M₀] {s : S} {x : ↥s} (hx : Irreducible x) :
↑x ≠ 0
def nonZeroDivisorsLeft (M₀ : Type u_1) [MonoidWithZero M₀] :

The collection of elements of a MonoidWithZero that are not left zero divisors form a Submonoid.

Equations
Instances For
    @[simp]
    theorem mem_nonZeroDivisorsLeft_iff (M₀ : Type u_1) [MonoidWithZero M₀] {x : M₀} :
    x ∈ nonZeroDivisorsLeft M₀ ↔ ∀ (y : M₀), x * y = 0 → y = 0
    theorem notMem_nonZeroDivisorsLeft_iff (M₀ : Type u_1) [MonoidWithZero M₀] {x : M₀} :
    x ∉ nonZeroDivisorsLeft M₀ ↔ {y : M₀ | x * y = 0 ∧ y ≠ 0}.Nonempty
    def nonZeroDivisorsRight (M₀ : Type u_1) [MonoidWithZero M₀] :

    The collection of elements of a MonoidWithZero that are not right zero divisors form a Submonoid.

    Equations
    Instances For
      @[simp]
      theorem mem_nonZeroDivisorsRight_iff (M₀ : Type u_1) [MonoidWithZero M₀] {x : M₀} :
      x ∈ nonZeroDivisorsRight M₀ ↔ ∀ (y : M₀), y * x = 0 → y = 0
      theorem notMem_nonZeroDivisorsRight_iff (M₀ : Type u_1) [MonoidWithZero M₀] {x : M₀} :
      x ∉ nonZeroDivisorsRight M₀ ↔ {y : M₀ | y * x = 0 ∧ y ≠ 0}.Nonempty
      @[simp]
      theorem coe_nonZeroDivisorsLeft_eq (M₀ : Type u_1) [MonoidWithZero M₀] [NoZeroDivisors M₀] [Nontrivial M₀] :
      ↑(nonZeroDivisorsLeft M₀) = {x : M₀ | x ≠ 0}
      @[simp]
      theorem coe_nonZeroDivisorsRight_eq (M₀ : Type u_1) [MonoidWithZero M₀] [NoZeroDivisors M₀] [Nontrivial M₀] :
      ↑(nonZeroDivisorsRight M₀) = {x : M₀ | x ≠ 0}
      def nonZeroDivisors (M₀ : Type u_1) [MonoidWithZero M₀] :

      The submonoid of non-zero-divisors of a MonoidWithZero M₀.

      Equations
      Instances For

        The notation for the submonoid of non-zero divisors.

        Equations
        Instances For
          def nonZeroSMulDivisors (M₀ : Type u_1) [MonoidWithZero M₀] (M : Type u_2) [Zero M] [MulAction M₀ M] :

          Let M₀ be a monoid with zero and M an additive monoid with an M₀-action, then the collection of non-zero smul-divisors forms a submonoid.

          These elements are also called M-regular.

          Equations
          Instances For

            The notation for the submonoid of non-zero smul-divisors.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem mem_nonZeroDivisors_iff {M₀ : Type u_2} [MonoidWithZero M₀] {r : M₀} :
              r ∈ nonZeroDivisors M₀ ↔ (∀ (x : M₀), r * x = 0 → x = 0) ∧ ∀ (x : M₀), x * r = 0 → x = 0
              theorem notMem_nonZeroDivisors_iff {M₀ : Type u_2} [MonoidWithZero M₀] {r : M₀} :
              r ∉ nonZeroDivisors M₀ ↔ {s : M₀ | r * s = 0 ∧ s ≠ 0}.Nonempty ∨ {s : M₀ | s * r = 0 ∧ s ≠ 0}.Nonempty
              theorem mul_left_mem_nonZeroDivisorsLeft_eq_zero_iff {M₀ : Type u_2} [MonoidWithZero M₀] {r x : M₀} (hr : r ∈ nonZeroDivisorsLeft M₀) :
              r * x = 0 ↔ x = 0
              theorem mul_right_mem_nonZeroDivisorsRight_eq_zero_iff {M₀ : Type u_2} [MonoidWithZero M₀] {r x : M₀} (hr : r ∈ nonZeroDivisorsRight M₀) :
              x * r = 0 ↔ x = 0
              theorem mul_right_mem_nonZeroDivisors_eq_zero_iff {M₀ : Type u_2} [MonoidWithZero M₀] {r x : M₀} (hr : r ∈ nonZeroDivisors M₀) :
              x * r = 0 ↔ x = 0
              @[simp]
              theorem mul_right_coe_nonZeroDivisors_eq_zero_iff {M₀ : Type u_2} [MonoidWithZero M₀] {x : M₀} {c : ↥(nonZeroDivisors M₀)} :
              x * ↑c = 0 ↔ x = 0
              theorem IsUnit.mem_nonZeroDivisors {M₀ : Type u_2} [MonoidWithZero M₀] {x : M₀} (hx : IsUnit x) :
              @[deprecated "Use `Submonoid.mul_mem _ hx hy` instead." (since := "2026-01-07")]
              @[deprecated "Use `Submonoid.mul_mem _ hx hy` instead." (since := "2026-01-07")]
              theorem mul_mem_nonZeroDivisors_of_mem_nonZeroDivisors {M₀ : Type u_2} [MonoidWithZero M₀] {x y : M₀} (hx : x ∈ nonZeroDivisors M₀) (hy : y ∈ nonZeroDivisors M₀) :
              theorem zero_notMem_nonZeroDivisors {M₀ : Type u_2} [MonoidWithZero M₀] [Nontrivial M₀] :
              0 ∉ nonZeroDivisors M₀
              theorem nonZeroDivisors.ne_zero {M₀ : Type u_2} [MonoidWithZero M₀] {x : M₀} [Nontrivial M₀] (hx : x ∈ nonZeroDivisors M₀) :
              x ≠ 0
              @[simp]
              theorem nonZeroDivisors.coe_ne_zero {M₀ : Type u_2} [MonoidWithZero M₀] [Nontrivial M₀] (x : ↥(nonZeroDivisors M₀)) :
              ↑x ≠ 0
              theorem eq_zero_of_ne_zero_of_mul_right_eq_zero {M₀ : Type u_2} [MonoidWithZero M₀] {x y : M₀} [NoZeroDivisors M₀] (hx : x ≠ 0) (hxy : y * x = 0) :
              y = 0
              theorem eq_zero_of_ne_zero_of_mul_left_eq_zero {M₀ : Type u_2} [MonoidWithZero M₀] {x y : M₀} [NoZeroDivisors M₀] (hx : x ≠ 0) (hxy : x * y = 0) :
              y = 0
              theorem mem_nonZeroDivisors_of_ne_zero {M₀ : Type u_2} [MonoidWithZero M₀] {x : M₀} [NoZeroDivisors M₀] (hx : x ≠ 0) :
              @[simp]
              theorem mem_nonZeroDivisors_iff_ne_zero {M₀ : Type u_2} [MonoidWithZero M₀] {x : M₀} [NoZeroDivisors M₀] [Nontrivial M₀] :
              theorem le_nonZeroDivisors_of_noZeroDivisors {M₀ : Type u_2} [MonoidWithZero M₀] [NoZeroDivisors M₀] {S : Submonoid M₀} (hS : 0 ∉ S) :
              theorem IsRegular.mem_nonZeroDivisors {M₀ : Type u_2} [MonoidWithZero M₀] {r : M₀} (h : IsRegular r) :
              theorem noZeroDivisors_iff_forall_mem_nonZeroDivisors {M₀ : Type u_2} [MonoidWithZero M₀] :
              NoZeroDivisors M₀ ↔ ∀ (x : M₀), x ≠ 0 → x ∈ nonZeroDivisors M₀
              theorem IsSMulRegular.mem_nonZeroSMulDivisors {M₀ : Type u_2} [MonoidWithZero M₀] {M : Type u_4} [Zero M] [MulActionWithZero M₀ M] {m₀ : M₀} (h : IsSMulRegular M m₀) :
              theorem isSMulRegular_iff_mem_nonZeroSMulDivisors {M₀ : Type u_2} [MonoidWithZero M₀] {M : Type u_4} [AddGroup M] [DistribMulAction M₀ M] {m₀ : M₀} :
              theorem map_ne_zero_of_mem_nonZeroDivisors {F : Type u_1} {M₀ : Type u_2} {M₀' : Type u_3} [MonoidWithZero M₀] [MonoidWithZero M₀'] [FunLike F M₀ M₀'] [Nontrivial M₀] [ZeroHomClass F M₀ M₀'] (g : F) (hg : Function.Injective ⇑g) {x : M₀} (h : x ∈ nonZeroDivisors M₀) :
              g x ≠ 0
              theorem map_mem_nonZeroDivisors {F : Type u_1} {M₀ : Type u_2} {M₀' : Type u_3} [MonoidWithZero M₀] [MonoidWithZero M₀'] [FunLike F M₀ M₀'] [Nontrivial M₀] [NoZeroDivisors M₀'] [ZeroHomClass F M₀ M₀'] (g : F) (hg : Function.Injective ⇑g) {x : M₀} (h : x ∈ nonZeroDivisors M₀) :
              theorem MulEquivClass.map_nonZeroDivisors {M₀ : Type u_4} {S : Type u_5} {F : Type u_6} [MonoidWithZero M₀] [MonoidWithZero S] [EquivLike F M₀ S] [MulEquivClass F M₀ S] (h : F) :
              theorem map_le_nonZeroDivisors_of_injective {F : Type u_1} {M₀ : Type u_2} {M₀' : Type u_3} [MonoidWithZero M₀] [MonoidWithZero M₀'] [FunLike F M₀ M₀'] [NoZeroDivisors M₀'] [MonoidWithZeroHomClass F M₀ M₀'] (f : F) (hf : Function.Injective ⇑f) {S : Submonoid M₀} (hS : S ≤ nonZeroDivisors M₀) :
              theorem nonZeroDivisors_le_comap_nonZeroDivisors_of_injective {F : Type u_1} {M₀ : Type u_2} {M₀' : Type u_3} [MonoidWithZero M₀] [MonoidWithZero M₀'] [FunLike F M₀ M₀'] [NoZeroDivisors M₀'] [MonoidWithZeroHomClass F M₀ M₀'] (f : F) (hf : Function.Injective ⇑f) :
              theorem mem_nonZeroDivisors_of_injective {F : Type u_1} {M₀ : Type u_2} {M₀' : Type u_3} [MonoidWithZero M₀] [MonoidWithZero M₀'] {x : M₀} [FunLike F M₀ M₀'] [MonoidWithZeroHomClass F M₀ M₀'] {f : F} (hf : Function.Injective ⇑f) (hx : f x ∈ nonZeroDivisors M₀') :

              If an element maps to a non-zero-divisor via injective homomorphism, then it is a non-zero-divisor.

              theorem comap_nonZeroDivisors_le_of_injective {F : Type u_1} {M₀ : Type u_2} {M₀' : Type u_3} [MonoidWithZero M₀] [MonoidWithZero M₀'] [FunLike F M₀ M₀'] [MonoidWithZeroHomClass F M₀ M₀'] {f : F} (hf : Function.Injective ⇑f) :
              theorem mem_nonZeroDivisors_iff_left {M₀ : Type u_1} [CommMonoidWithZero M₀] {r : M₀} :
              r ∈ nonZeroDivisors M₀ ↔ ∀ (x : M₀), r * x = 0 → x = 0
              theorem mem_nonZeroDivisors_iff_right {M₀ : Type u_1} [CommMonoidWithZero M₀] {r : M₀} :
              r ∈ nonZeroDivisors M₀ ↔ ∀ (x : M₀), x * r = 0 → x = 0
              theorem notMem_nonZeroDivisors_iff_left {M₀ : Type u_1} [CommMonoidWithZero M₀] {r : M₀} :
              r ∉ nonZeroDivisors M₀ ↔ {s : M₀ | r * s = 0 ∧ s ≠ 0}.Nonempty
              theorem notMem_nonZeroDivisors_iff_right {M₀ : Type u_1} [CommMonoidWithZero M₀] {r : M₀} :
              r ∉ nonZeroDivisors M₀ ↔ {s : M₀ | s * r = 0 ∧ s ≠ 0}.Nonempty
              theorem mul_left_mem_nonZeroDivisors_eq_zero_iff {M₀ : Type u_1} [CommMonoidWithZero M₀] {r x : M₀} (hr : r ∈ nonZeroDivisors M₀) :
              r * x = 0 ↔ x = 0
              @[simp]
              theorem mul_left_coe_nonZeroDivisors_eq_zero_iff {M₀ : Type u_1} [CommMonoidWithZero M₀] {x : M₀} {c : ↥(nonZeroDivisors M₀)} :
              ↑c * x = 0 ↔ x = 0
              theorem mul_mem_nonZeroDivisors {M₀ : Type u_1} [CommMonoidWithZero M₀] {a b : M₀} :
              theorem nonZeroDivisors_dvd_iff_dvd_coe {M₀ : Type u_1} [CommMonoidWithZero M₀] {a b : ↥(nonZeroDivisors M₀)} :
              a ∣ b ↔ ↑a ∣ ↑b
              theorem prod_mem_nonZeroDivisors_of_mem_nonZeroDivisors {M₀ : Type u_1} [CommMonoidWithZero M₀] {ι : Type u_2} {s : Finset ι} {f : ι → M₀} (h : ∀ i ∈ s, f i ∈ nonZeroDivisors M₀) :
              ∏ i ∈ s, f i ∈ nonZeroDivisors M₀
              noncomputable def nonZeroDivisorsEquivUnits {G₀ : Type u_1} [GroupWithZero G₀] :
              ↥(nonZeroDivisors G₀) ≃* G₀ˣ

              Canonical isomorphism between the non-zero-divisors and units of a group with zero.

              Equations
              Instances For
                @[simp]
                @[simp]
                theorem isUnit_of_mem_nonZeroDivisors {G₀ : Type u_1} [GroupWithZero G₀] {x : G₀} (hx : x ∈ nonZeroDivisors G₀) :
                theorem mem_nonZeroSMulDivisors_iff {M₀ : Type u_1} {M : Type u_2} [MonoidWithZero M₀] [Zero M] [MulAction M₀ M] {x : M₀} :
                x ∈ nonZeroSMulDivisors M₀ M ↔ ∀ (m : M), x • m = 0 → m = 0
                def unitsNonZeroDivisorsEquiv {M₀ : Type u_1} [MonoidWithZero M₀] :
                (↥(nonZeroDivisors M₀))ˣ ≃* M₀ˣ

                The units of the monoid of non-zero divisors of M₀ are equivalent to the units of M₀.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  @[simp]
                  @[simp]
                  @[simp]
                  theorem nonZeroDivisors.associated_coe {M₀ : Type u_1} [MonoidWithZero M₀] {a b : ↥(nonZeroDivisors M₀)} :
                  Associated ↑a ↑b ↔ Associated a b

                  The non-zero divisors of associates of a monoid with zero M₀ are isomorphic to the associates of the non-zero divisors of M₀ under the map ⟨⟦a⟧, _⟩ ↦ ⟦⟨a, _⟩⟧.

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