File: Mathlib/RingTheory/Nilpotent/Defs.lean

full_name: IsNilpotent
code: /-- An element is said to be nilpotent if some natural-number-power of it equals zero.

Note that we require only the bare minimum assumptions for the definition to make sense. Even
`MonoidWithZero` is too strong since nilpotency is important in the study of rings that are only
power-associative. -/
def IsNilpotent [Zero R] [Pow R ℕ] (x : R) : Prop 
goal: Prop

full_name: IsNilpotent.mk
code: theorem IsNilpotent.mk [Zero R] [Pow R ℕ] (x : R) (n : ℕ) (e : x ^ n = 0) : IsNilpotent x 
goal: IsNilpotent x

full_name: isNilpotent_of_subsingleton
code: @[simp] lemma isNilpotent_of_subsingleton [Zero R] [Pow R ℕ] [Subsingleton R] : IsNilpotent x 
goal: IsNilpotent x

full_name: IsNilpotent.zero
code: @[simp] theorem IsNilpotent.zero [MonoidWithZero R] : IsNilpotent (0 : R) 
goal: IsNilpotent 0

full_name: not_isNilpotent_one
code: theorem not_isNilpotent_one [MonoidWithZero R] [Nontrivial R] :
    ¬ IsNilpotent (1 : R) 
goal: ¬IsNilpotent 1

full_name: IsNilpotent.pow_succ
code: lemma IsNilpotent.pow_succ (n : ℕ) {S : Type*} [MonoidWithZero S] {x : S}
    (hx : IsNilpotent x) : IsNilpotent (x ^ n.succ) 
goal: IsNilpotent (x ^ n.succ)

full_name: IsNilpotent.of_pow
code: theorem  IsNilpotent.of_pow [MonoidWithZero R] {x : R} {m : ℕ}
    (h : IsNilpotent (x ^ m)) : IsNilpotent x 
goal: IsNilpotent x

full_name: IsNilpotent.pow_of_pos
code: lemma IsNilpotent.pow_of_pos {n} {S : Type*} [MonoidWithZero S] {x : S}
    (hx : IsNilpotent x) (hn : n ≠ 0) : IsNilpotent (x ^ n) 
goal: IsNilpotent (x ^ n)

full_name: IsNilpotent.pow_iff_pos
code: @[simp]
lemma IsNilpotent.pow_iff_pos {n} {S : Type*} [MonoidWithZero S] {x : S}
    (hn : n ≠ 0) : IsNilpotent (x ^ n) ↔ IsNilpotent x 
goal: IsNilpotent (x ^ n) ↔ IsNilpotent x

full_name: IsNilpotent.map
code: theorem IsNilpotent.map [MonoidWithZero R] [MonoidWithZero S] {r : R} {F : Type*}
    [FunLike F R S] [MonoidWithZeroHomClass F R S] (hr : IsNilpotent r) (f : F) :
    IsNilpotent (f r) 
goal: IsNilpotent (f r)

full_name: IsNilpotent.map_iff
code: lemma IsNilpotent.map_iff [MonoidWithZero R] [MonoidWithZero S] {r : R} {F : Type*}
    [FunLike F R S] [MonoidWithZeroHomClass F R S] {f : F} (hf : Function.Injective f) :
    IsNilpotent (f r) ↔ IsNilpotent r 
goal: IsNilpotent (f r) ↔ IsNilpotent r

full_name: IsUnit.isNilpotent_mul_unit_of_commute_iff
code: theorem IsUnit.isNilpotent_mul_unit_of_commute_iff [MonoidWithZero R] {r u : R}
    (hu : IsUnit u) (h_comm : Commute r u) :
    IsNilpotent (r * u) ↔ IsNilpotent r 
goal: IsNilpotent (r * u) ↔ IsNilpotent r

full_name: IsUnit.isNilpotent_unit_mul_of_commute_iff
code: theorem IsUnit.isNilpotent_unit_mul_of_commute_iff [MonoidWithZero R] {r u : R}
    (hu : IsUnit u) (h_comm : Commute r u) :
    IsNilpotent (u * r) ↔ IsNilpotent r 
goal: IsNilpotent (u * r) ↔ IsNilpotent r

full_name: nilpotencyClass
code: /-- If `x` is nilpotent, the nilpotency class is the smallest natural number `k` such that
`x ^ k = 0`. If `x` is not nilpotent, the nilpotency class takes the junk value `0`. -/
noncomputable def nilpotencyClass : ℕ 
goal: ℕ

full_name: nilpotencyClass_eq_zero_of_subsingleton
code: @[simp] lemma nilpotencyClass_eq_zero_of_subsingleton [Subsingleton R] :
    nilpotencyClass x = 0 
goal: nilpotencyClass x = 0

full_name: isNilpotent_of_pos_nilpotencyClass
code: lemma isNilpotent_of_pos_nilpotencyClass (hx : 0 < nilpotencyClass x) :
    IsNilpotent x 
goal: IsNilpotent x

full_name: pow_nilpotencyClass
code: lemma pow_nilpotencyClass (hx : IsNilpotent x) : x ^ (nilpotencyClass x) = 0 
goal: x ^ nilpotencyClass x = 0

full_name: nilpotencyClass_eq_succ_iff
code: lemma nilpotencyClass_eq_succ_iff {k : ℕ} :
    nilpotencyClass x = k + 1 ↔ x ^ (k + 1) = 0 ∧ x ^ k ≠ 0 
goal: nilpotencyClass x = k + 1 ↔ x ^ (k + 1) = 0 ∧ x ^ k ≠ 0

full_name: nilpotencyClass_zero
code: @[simp] lemma nilpotencyClass_zero [Nontrivial R] :
    nilpotencyClass (0 : R) = 1 
goal: nilpotencyClass 0 = 1

full_name: pos_nilpotencyClass_iff
code: @[simp] lemma pos_nilpotencyClass_iff [Nontrivial R] :
    0 < nilpotencyClass x ↔ IsNilpotent x 
goal: 0 < nilpotencyClass x ↔ IsNilpotent x

full_name: pow_pred_nilpotencyClass
code: lemma pow_pred_nilpotencyClass [Nontrivial R] (hx : IsNilpotent x) :
    x ^ (nilpotencyClass x - 1) ≠ 0 
goal: x ^ (nilpotencyClass x - 1) ≠ 0

full_name: eq_zero_of_nilpotencyClass_eq_one
code: lemma eq_zero_of_nilpotencyClass_eq_one (hx : nilpotencyClass x = 1) :
    x = 0 
goal: x = 0

full_name: nilpotencyClass_eq_one
code: @[simp] lemma nilpotencyClass_eq_one [Nontrivial R] :
    nilpotencyClass x = 1 ↔ x = 0 
goal: nilpotencyClass x = 1 ↔ x = 0

full_name: IsReduced.eq_zero
code: /-- A structure that has zero and pow is reduced if it has no nonzero nilpotent elements. -/
@[mk_iff]
class IsReduced (R : Type*) [Zero R] [Pow R ℕ] : Prop where
  /-- A reduced structure has no nonzero nilpotent elements. -/
  eq_zero : ∀ x : R, IsNilpotent x → x = 0
goal: IsNilpotent x → x = 0

full_name: isReduced_iff
code: /-- A structure that has zero and pow is reduced if it has no nonzero nilpotent elements. -/
@[mk_iff]
class IsReduced (R : Type*) [Zero R] [Pow R ℕ] : Prop where
  /-- A reduced structure has no nonzero nilpotent elements. -/
  eq_zero : ∀ x : R, IsNilpotent x → x = 0
goal: IsReduced R ↔ ∀ (x : R), IsNilpotent x → x = 0

full_name: IsReduced
code: /-- A structure that has zero and pow is reduced if it has no nonzero nilpotent elements. -/
@[mk_iff]
class IsReduced (R : Type*) [Zero R] [Pow R ℕ] : Prop where
  /-- A reduced structure has no nonzero nilpotent elements. -/
  eq_zero : ∀ x : R, IsNilpotent x → x = 0
goal: Prop

full_name: isReduced_of_noZeroDivisors
code: instance (priority := 900) isReduced_of_noZeroDivisors [MonoidWithZero R] [NoZeroDivisors R] :
    IsReduced R 
goal: IsReduced R

full_name: isReduced_of_subsingleton
code: instance (priority := 900) isReduced_of_subsingleton [Zero R] [Pow R ℕ] [Subsingleton R] :
    IsReduced R 
goal: IsReduced R

full_name: IsNilpotent.eq_zero
code: theorem IsNilpotent.eq_zero [Zero R] [Pow R ℕ] [IsReduced R] (h : IsNilpotent x) : x = 0 
goal: x = 0

full_name: isNilpotent_iff_eq_zero
code: @[simp]
theorem isNilpotent_iff_eq_zero [MonoidWithZero R] [IsReduced R] : IsNilpotent x ↔ x = 0 
goal: IsNilpotent x ↔ x = 0

full_name: isReduced_of_injective
code: theorem isReduced_of_injective [MonoidWithZero R] [MonoidWithZero S] {F : Type*}
    [FunLike F R S] [MonoidWithZeroHomClass F R S]
    (f : F) (hf : Function.Injective f) [IsReduced S] :
    IsReduced R 
goal: IsReduced R

full_name: instIsReducedForall
code: instance (ι) (R : ι → Type*) [∀ i, Zero (R i)] [∀ i, Pow (R i) ℕ]
    [∀ i, IsReduced (R i)] : IsReduced (∀ i, R i) 
goal: IsReduced ((i : ι) → R i)

full_name: IsRadical
code: /-- An element `y` in a monoid is radical if for any element `x`, `y` divides `x` whenever it
  divides a power of `x`. -/
def IsRadical [Dvd R] [Pow R ℕ] (y : R) : Prop 
goal: Prop

full_name: isRadical_iff_pow_one_lt
code: theorem isRadical_iff_pow_one_lt [MonoidWithZero R] (k : ℕ) (hk : 1 < k) :
    IsRadical y ↔ ∀ x, y ∣ x ^ k → y ∣ x 
goal: IsRadical y ↔ ∀ (x : R), y ∣ x ^ k → y ∣ x

full_name: Commute.isNilpotent_mul_left
code: theorem isNilpotent_mul_left (h : IsNilpotent x) : IsNilpotent (x * y) 
goal: IsNilpotent (x * y)

full_name: Commute.isNilpotent_mul_right
code: theorem isNilpotent_mul_right (h : IsNilpotent y) : IsNilpotent (x * y) 
goal: IsNilpotent (x * y)