File: Mathlib/Algebra/Squarefree/Basic.lean

full_name: Squarefree
code: /-- An element of a monoid is squarefree if the only squares that
  divide it are the squares of units. -/
def Squarefree [Monoid R] (r : R) : Prop 
goal: Prop

full_name: IsRelPrime.of_squarefree_mul
code: theorem IsRelPrime.of_squarefree_mul [CommMonoid R] {m n : R} (h : Squarefree (m * n)) :
    IsRelPrime m n 
goal: IsRelPrime m n

full_name: IsUnit.squarefree
code: @[simp]
theorem IsUnit.squarefree [CommMonoid R] {x : R} (h : IsUnit x) : Squarefree x 
goal: Squarefree x

full_name: squarefree_one
code: theorem squarefree_one [CommMonoid R] : Squarefree (1 : R) 
goal: Squarefree 1

full_name: not_squarefree_zero
code: @[simp]
theorem not_squarefree_zero [MonoidWithZero R] [Nontrivial R] : ¬Squarefree (0 : R) 
goal: ¬Squarefree 0

full_name: Squarefree.ne_zero
code: theorem Squarefree.ne_zero [MonoidWithZero R] [Nontrivial R] {m : R} (hm : Squarefree (m : R)) :
    m ≠ 0 
goal: m ≠ 0

full_name: Irreducible.squarefree
code: @[simp]
theorem Irreducible.squarefree [CommMonoid R] {x : R} (h : Irreducible x) : Squarefree x 
goal: Squarefree x

full_name: Prime.squarefree
code: @[simp]
theorem Prime.squarefree [CancelCommMonoidWithZero R] {x : R} (h : Prime x) : Squarefree x 
goal: Squarefree x

full_name: Squarefree.of_mul_left
code: theorem Squarefree.of_mul_left [CommMonoid R] {m n : R} (hmn : Squarefree (m * n)) : Squarefree m 
goal: Squarefree m

full_name: Squarefree.of_mul_right
code: theorem Squarefree.of_mul_right [CommMonoid R] {m n : R} (hmn : Squarefree (m * n)) :
    Squarefree n 
goal: Squarefree n

full_name: Squarefree.squarefree_of_dvd
code: theorem Squarefree.squarefree_of_dvd [CommMonoid R] {x y : R} (hdvd : x ∣ y) (hsq : Squarefree y) :
    Squarefree x 
goal: Squarefree x

full_name: Squarefree.eq_zero_or_one_of_pow_of_not_isUnit
code: theorem Squarefree.eq_zero_or_one_of_pow_of_not_isUnit [CommMonoid R] {x : R} {n : ℕ}
    (h : Squarefree (x ^ n)) (h' : ¬ IsUnit x) :
    n = 0 ∨ n = 1 
goal: n = 0 ∨ n = 1

full_name: Squarefree.gcd_right
code: theorem Squarefree.gcd_right (a : α) {b : α} (hb : Squarefree b) : Squarefree (gcd a b) 
goal: Squarefree (gcd a b)

full_name: Squarefree.gcd_left
code: theorem Squarefree.gcd_left {a : α} (b : α) (ha : Squarefree a) : Squarefree (gcd a b) 
goal: Squarefree (gcd a b)

full_name: multiplicity.squarefree_iff_multiplicity_le_one
code: theorem squarefree_iff_multiplicity_le_one (r : R) :
    Squarefree r ↔ ∀ x : R, multiplicity x r ≤ 1 ∨ IsUnit x 
goal: Squarefree r ↔ ∀ (x : R), multiplicity x r ≤ 1 ∨ IsUnit x

full_name: multiplicity.finite_prime_left
code: theorem finite_prime_left {a b : R} (ha : Prime a) (hb : b ≠ 0) : multiplicity.Finite a b 
goal: multiplicity.Finite a b

full_name: squarefree_iff_no_irreducibles
code: theorem squarefree_iff_no_irreducibles {x : R} (hx₀ : x ≠ 0) :
    Squarefree x ↔ ∀ p, Irreducible p → ¬ (p * p ∣ x) 
goal: Squarefree x ↔ ∀ (p : R), Irreducible p → ¬p * p ∣ x

full_name: irreducible_sq_not_dvd_iff_eq_zero_and_no_irreducibles_or_squarefree
code: theorem irreducible_sq_not_dvd_iff_eq_zero_and_no_irreducibles_or_squarefree (r : R) :
    (∀ x : R, Irreducible x → ¬x * x ∣ r) ↔ (r = 0 ∧ ∀ x : R, ¬Irreducible x) ∨ Squarefree r 
goal: (∀ (x : R), Irreducible x → ¬x * x ∣ r) ↔ (r = 0 ∧ ∀ (x : R), ¬Irreducible x) ∨ Squarefree r

full_name: squarefree_iff_irreducible_sq_not_dvd_of_ne_zero
code: theorem squarefree_iff_irreducible_sq_not_dvd_of_ne_zero {r : R} (hr : r ≠ 0) :
    Squarefree r ↔ ∀ x : R, Irreducible x → ¬x * x ∣ r 
goal: Squarefree r ↔ ∀ (x : R), Irreducible x → ¬x * x ∣ r

full_name: squarefree_iff_irreducible_sq_not_dvd_of_exists_irreducible
code: theorem squarefree_iff_irreducible_sq_not_dvd_of_exists_irreducible {r : R}
    (hr : ∃ x : R, Irreducible x) : Squarefree r ↔ ∀ x : R, Irreducible x → ¬x * x ∣ r 
goal: Squarefree r ↔ ∀ (x : R), Irreducible x → ¬x * x ∣ r

full_name: Squarefree.isRadical
code: theorem Squarefree.isRadical {x : R} (hx : Squarefree x) : IsRadical x 
goal: IsRadical x

full_name: Squarefree.dvd_pow_iff_dvd
code: theorem Squarefree.dvd_pow_iff_dvd {x y : R} {n : ℕ} (hsq : Squarefree x) (h0 : n ≠ 0) :
    x ∣ y ^ n ↔ x ∣ y 
goal: x ∣ y ^ n ↔ x ∣ y

full_name: IsRadical.squarefree
code: theorem IsRadical.squarefree (h0 : x ≠ 0) (h : IsRadical x) : Squarefree x 
goal: Squarefree x

full_name: Squarefree.pow_dvd_of_squarefree_of_pow_succ_dvd_mul_right
code: theorem pow_dvd_of_squarefree_of_pow_succ_dvd_mul_right {k : ℕ}
    (hx : Squarefree x) (hp : Prime p) (h : p ^ (k + 1) ∣ x * y) :
    p ^ k ∣ y 
goal: p ^ k ∣ y

full_name: Squarefree.pow_dvd_of_squarefree_of_pow_succ_dvd_mul_left
code: theorem pow_dvd_of_squarefree_of_pow_succ_dvd_mul_left {k : ℕ}
    (hy : Squarefree y) (hp : Prime p) (h : p ^ (k + 1) ∣ x * y) :
    p ^ k ∣ x 
goal: p ^ k ∣ x

full_name: Squarefree.dvd_of_squarefree_of_mul_dvd_mul_right
code: theorem dvd_of_squarefree_of_mul_dvd_mul_right (hx : Squarefree x) (h : d * d ∣ x * y) : d ∣ y 
goal: d ∣ y

full_name: Squarefree.dvd_of_squarefree_of_mul_dvd_mul_left
code: theorem dvd_of_squarefree_of_mul_dvd_mul_left (hy : Squarefree y) (h : d * d ∣ x * y) : d ∣ x 
goal: d ∣ x

full_name: squarefree_mul_iff
code: /-- `x * y` is square-free iff `x` and `y` have no common factors and are themselves square-free. -/
theorem squarefree_mul_iff : Squarefree (x * y) ↔ IsRelPrime x y ∧ Squarefree x ∧ Squarefree y 
goal: Squarefree (x * y) ↔ IsRelPrime x y ∧ Squarefree x ∧ Squarefree y

full_name: isRadical_iff_squarefree_or_zero
code: theorem isRadical_iff_squarefree_or_zero : IsRadical x ↔ Squarefree x ∨ x = 0 
goal: IsRadical x ↔ Squarefree x ∨ x = 0

full_name: isRadical_iff_squarefree_of_ne_zero
code: theorem isRadical_iff_squarefree_of_ne_zero (h : x ≠ 0) : IsRadical x ↔ Squarefree x 
goal: IsRadical x ↔ Squarefree x

full_name: exists_squarefree_dvd_pow_of_ne_zero
code: lemma _root_.exists_squarefree_dvd_pow_of_ne_zero {x : R} (hx : x ≠ 0) :
    ∃ (y : R) (n : ℕ), Squarefree y ∧ y ∣ x ∧ x ∣ y ^ n 
goal: ∃ y n, Squarefree y ∧ y ∣ x ∧ x ∣ y ^ n

full_name: UniqueFactorizationMonoid.squarefree_iff_nodup_normalizedFactors
code: theorem squarefree_iff_nodup_normalizedFactors [NormalizationMonoid R] {x : R}
    (x0 : x ≠ 0) : Squarefree x ↔ Multiset.Nodup (normalizedFactors x) 
goal: Squarefree x ↔ (UniqueFactorizationMonoid.normalizedFactors x).Nodup

full_name: Int.squarefree_natAbs
code: @[simp]
theorem squarefree_natAbs {n : ℤ} : Squarefree n.natAbs ↔ Squarefree n 
goal: Squarefree n.natAbs ↔ Squarefree n

full_name: Int.squarefree_natCast
code: @[simp]
theorem squarefree_natCast {n : ℕ} : Squarefree (n : ℤ) ↔ Squarefree n 
goal: Squarefree ↑n ↔ Squarefree n