Non-zero divisors #
In this file we define the submonoid nonZeroDivisors
of a MonoidWithZero
.
Notations #
This file declares the notation R⁰
for the submonoid of non-zero-divisors of R
,
in the locale nonZeroDivisors
.
Use the statement open nonZeroDivisors
to access this notation in your own code.
The submonoid of non-zero-divisors of a MonoidWithZero
R
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The notation for the submonoid of non-zerodivisors.
Equations
- nonZeroDivisors.«term_⁰» = Lean.ParserDescr.trailingNode `nonZeroDivisors.term_⁰ 9000 0 (Lean.ParserDescr.symbol "⁰")
Instances For
theorem
mul_right_mem_nonZeroDivisors_eq_zero_iff
{M : Type u_1}
[MonoidWithZero M]
{x : M}
{r : M}
(hr : r ∈ nonZeroDivisors M)
:
@[simp]
theorem
mul_right_coe_nonZeroDivisors_eq_zero_iff
{M : Type u_1}
[MonoidWithZero M]
{x : M}
{c : { x // x ∈ nonZeroDivisors M }}
:
theorem
mul_left_mem_nonZeroDivisors_eq_zero_iff
{M₁ : Type u_3}
[CommMonoidWithZero M₁]
{r : M₁}
{x : M₁}
(hr : r ∈ nonZeroDivisors M₁)
:
@[simp]
theorem
mul_left_coe_nonZeroDivisors_eq_zero_iff
{M₁ : Type u_3}
[CommMonoidWithZero M₁]
{c : { x // x ∈ nonZeroDivisors M₁ }}
{x : M₁}
:
theorem
nonZeroDivisors.ne_zero
{M : Type u_1}
[MonoidWithZero M]
[Nontrivial M]
{x : M}
(hx : x ∈ nonZeroDivisors M)
:
x ≠ 0
theorem
nonZeroDivisors.coe_ne_zero
{M : Type u_1}
[MonoidWithZero M]
[Nontrivial M]
(x : { x // x ∈ nonZeroDivisors M })
:
↑x ≠ 0
theorem
mul_mem_nonZeroDivisors
{M₁ : Type u_3}
[CommMonoidWithZero M₁]
{a : M₁}
{b : M₁}
:
a * b ∈ nonZeroDivisors M₁ ↔ a ∈ nonZeroDivisors M₁ ∧ b ∈ nonZeroDivisors M₁
theorem
isUnit_of_mem_nonZeroDivisors
{G₀ : Type u_7}
[GroupWithZero G₀]
{x : G₀}
(hx : x ∈ nonZeroDivisors G₀)
:
IsUnit x
theorem
eq_zero_of_ne_zero_of_mul_right_eq_zero
{M : Type u_1}
[MonoidWithZero M]
[NoZeroDivisors M]
{x : M}
{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}
[MonoidWithZero M]
[NoZeroDivisors M]
{x : M}
{y : M}
(hnx : x ≠ 0)
(hxy : x * y = 0)
:
y = 0
theorem
mem_nonZeroDivisors_of_ne_zero
{M : Type u_1}
[MonoidWithZero M]
[NoZeroDivisors M]
{x : M}
(hx : x ≠ 0)
:
x ∈ nonZeroDivisors M
theorem
mem_nonZeroDivisors_iff_ne_zero
{M : Type u_1}
[MonoidWithZero M]
[NoZeroDivisors M]
[Nontrivial M]
{x : M}
:
x ∈ nonZeroDivisors M ↔ x ≠ 0
theorem
map_ne_zero_of_mem_nonZeroDivisors
{M : Type u_1}
{M' : Type u_2}
{F : Type u_6}
[MonoidWithZero M]
[MonoidWithZero 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
{M : Type u_1}
{M' : Type u_2}
{F : Type u_6}
[MonoidWithZero M]
[MonoidWithZero M']
[Nontrivial M]
[NoZeroDivisors M']
[ZeroHomClass F M M']
(g : F)
(hg : Function.Injective ↑g)
{x : M}
(h : x ∈ nonZeroDivisors M)
:
↑g x ∈ nonZeroDivisors M'
theorem
le_nonZeroDivisors_of_noZeroDivisors
{M : Type u_1}
[MonoidWithZero M]
[NoZeroDivisors M]
{S : Submonoid M}
(hS : ¬0 ∈ S)
:
S ≤ nonZeroDivisors M
theorem
powers_le_nonZeroDivisors_of_noZeroDivisors
{M : Type u_1}
[MonoidWithZero M]
[NoZeroDivisors M]
{a : M}
(ha : a ≠ 0)
:
theorem
map_le_nonZeroDivisors_of_injective
{M : Type u_1}
{M' : Type u_2}
{F : Type u_6}
[MonoidWithZero M]
[MonoidWithZero M']
[NoZeroDivisors M']
[MonoidWithZeroHomClass F M M']
(f : F)
(hf : Function.Injective ↑f)
{S : Submonoid M}
(hS : S ≤ nonZeroDivisors M)
:
Submonoid.map f S ≤ nonZeroDivisors M'
theorem
nonZeroDivisors_le_comap_nonZeroDivisors_of_injective
{M : Type u_1}
{M' : Type u_2}
{F : Type u_6}
[MonoidWithZero M]
[MonoidWithZero M']
[NoZeroDivisors M']
[MonoidWithZeroHomClass F M M']
(f : F)
(hf : Function.Injective ↑f)
:
nonZeroDivisors M ≤ Submonoid.comap f (nonZeroDivisors M')
theorem
prod_zero_iff_exists_zero
{M₁ : Type u_3}
[CommMonoidWithZero M₁]
[NoZeroDivisors M₁]
[Nontrivial M₁]
{s : Multiset M₁}
:
Multiset.prod s = 0 ↔ ∃ r x, r = 0