mathlib3 documentation

ring_theory.non_zero_divisors

Non-zero divisors #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

In this file we define the submonoid non_zero_divisors of a monoid_with_zero.

Notations #

This file declares the notation R⁰ for the submonoid of non-zero-divisors of R, in the locale non_zero_divisors. Use the statement open_locale non_zero_divisors to access this notation in your own code.

theorem mem_non_zero_divisors_iff {M : Type u_1} [monoid_with_zero M] {r : M} :
r non_zero_divisors M (x : M), x * r = 0 x = 0
theorem mul_right_mem_non_zero_divisors_eq_zero_iff {M : Type u_1} [monoid_with_zero M] {x r : M} (hr : r non_zero_divisors M) :
x * r = 0 x = 0
@[simp]
theorem mul_right_coe_non_zero_divisors_eq_zero_iff {M : Type u_1} [monoid_with_zero M] {x : M} {c : (non_zero_divisors M)} :
x * c = 0 x = 0
theorem mul_left_mem_non_zero_divisors_eq_zero_iff {M₁ : Type u_3} [comm_monoid_with_zero M₁] {r x : M₁} (hr : r non_zero_divisors M₁) :
r * x = 0 x = 0
@[simp]
theorem mul_left_coe_non_zero_divisors_eq_zero_iff {M₁ : Type u_3} [comm_monoid_with_zero M₁] {c : (non_zero_divisors M₁)} {x : M₁} :
c * x = 0 x = 0
theorem mul_cancel_right_mem_non_zero_divisor {R : Type u_4} [ring R] {x y r : R} (hr : r non_zero_divisors R) :
x * r = y * r x = y
theorem mul_cancel_right_coe_non_zero_divisor {R : Type u_4} [ring R] {x y : R} {c : (non_zero_divisors R)} :
x * c = y * c x = y
@[simp]
theorem mul_cancel_left_mem_non_zero_divisor {R' : Type u_5} [comm_ring R'] {x y r : R'} (hr : r non_zero_divisors R') :
r * x = r * y x = y
theorem mul_cancel_left_coe_non_zero_divisor {R' : Type u_5} [comm_ring R'] {x y : R'} {c : (non_zero_divisors R')} :
c * x = c * y x = y
theorem non_zero_divisors.ne_zero {M : Type u_1} [monoid_with_zero M] [nontrivial M] {x : M} (hx : x non_zero_divisors M) :
x 0
theorem is_unit_of_mem_non_zero_divisors {G₀ : Type u_1} [group_with_zero G₀] {x : G₀} (hx : x non_zero_divisors G₀) :
theorem eq_zero_of_ne_zero_of_mul_right_eq_zero {M : Type u_1} [monoid_with_zero M] [no_zero_divisors M] {x y : M} (hnx : x 0) (hxy : y * x = 0) :
y = 0
theorem eq_zero_of_ne_zero_of_mul_left_eq_zero {M : Type u_1} [monoid_with_zero M] [no_zero_divisors M] {x y : M} (hnx : x 0) (hxy : x * y = 0) :
y = 0
theorem map_ne_zero_of_mem_non_zero_divisors {M : Type u_1} {M' : Type u_2} {F : Type u_6} [monoid_with_zero M] [monoid_with_zero M'] [nontrivial M] [zero_hom_class F M M'] (g : F) (hg : function.injective g) {x : M} (h : x non_zero_divisors M) :
g x 0
theorem map_mem_non_zero_divisors {M : Type u_1} {M' : Type u_2} {F : Type u_6} [monoid_with_zero M] [monoid_with_zero M'] [nontrivial M] [no_zero_divisors M'] [zero_hom_class F M M'] (g : F) (hg : function.injective g) {x : M} (h : x non_zero_divisors M) :
theorem prod_zero_iff_exists_zero {M₁ : Type u_3} [comm_monoid_with_zero M₁] [no_zero_divisors M₁] [nontrivial M₁] {s : multiset M₁} :
s.prod = 0 (r : M₁) (hr : r s), r = 0