Non-zero divisors #
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.
The submonoid of non-zero-divisors of a monoid_with_zero
R
.
theorem
mul_right_mem_non_zero_divisors_eq_zero_iff
{M : Type u_1}
[monoid_with_zero M]
{x r : M}
(hr : r ∈ M⁰) :
@[simp]
theorem
mul_right_coe_non_zero_divisors_eq_zero_iff
{M : Type u_1}
[monoid_with_zero M]
{x : M}
{c : ↥M⁰} :
theorem
mul_left_mem_non_zero_divisors_eq_zero_iff
{M₁ : Type u_3}
[comm_monoid_with_zero M₁]
{r x : M₁}
(hr : r ∈ M₁⁰) :
@[simp]
theorem
mul_left_coe_non_zero_divisors_eq_zero_iff
{M₁ : Type u_3}
[comm_monoid_with_zero M₁]
{c : ↥M₁⁰}
{x : M₁} :
theorem
non_zero_divisors.ne_zero
{M : Type u_1}
[monoid_with_zero M]
[nontrivial M]
{x : M}
(hx : x ∈ M⁰) :
x ≠ 0
theorem
non_zero_divisors.coe_ne_zero
{M : Type u_1}
[monoid_with_zero M]
[nontrivial M]
(x : ↥M⁰) :
theorem
is_unit_of_mem_non_zero_divisors
{G₀ : Type u_1}
[group_with_zero G₀]
{x : G₀}
(hx : x ∈ G₀⁰) :
is_unit x
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
mem_non_zero_divisors_of_ne_zero
{M : Type u_1}
[monoid_with_zero M]
[no_zero_divisors M]
{x : M}
(hx : x ≠ 0) :
theorem
mem_non_zero_divisors_iff_ne_zero
{M : Type u_1}
[monoid_with_zero M]
[no_zero_divisors M]
[nontrivial M]
{x : M} :
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 ∈ M⁰) :
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 ∈ M⁰) :
theorem
le_non_zero_divisors_of_no_zero_divisors
{M : Type u_1}
[monoid_with_zero M]
[no_zero_divisors M]
{S : submonoid M}
(hS : 0 ∉ S) :
theorem
powers_le_non_zero_divisors_of_no_zero_divisors
{M : Type u_1}
[monoid_with_zero M]
[no_zero_divisors M]
{a : M}
(ha : a ≠ 0) :
submonoid.powers a ≤ M⁰
theorem
map_le_non_zero_divisors_of_injective
{M : Type u_1}
{M' : Type u_2}
{F : Type u_6}
[monoid_with_zero M]
[monoid_with_zero M']
[no_zero_divisors M']
[monoid_with_zero_hom_class F M M']
(f : F)
(hf : function.injective ⇑f)
{S : submonoid M}
(hS : S ≤ M⁰) :
submonoid.map ↑f S ≤ M'⁰
theorem
non_zero_divisors_le_comap_non_zero_divisors_of_injective
{M : Type u_1}
{M' : Type u_2}
{F : Type u_6}
[monoid_with_zero M]
[monoid_with_zero M']
[no_zero_divisors M']
[monoid_with_zero_hom_class F M M']
(f : F)
(hf : function.injective ⇑f) :
M⁰ ≤ submonoid.comap ↑f 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₁} :