File: Mathlib/Algebra/Divisibility/Basic.lean

full_name: semigroupDvd
code: /-- There are two possible conventions for divisibility, which coincide in a `CommMonoid`.
    This matches the convention for ordinals. -/
instance (priority := 100) semigroupDvd : Dvd α 
goal: Dvd α

full_name: Dvd.intro
code: theorem Dvd.intro (c : α) (h : a * c = b) : a ∣ b 
goal: a ∣ b

full_name: exists_eq_mul_right_of_dvd
code: theorem exists_eq_mul_right_of_dvd (h : a ∣ b) : ∃ c, b = a * c 
goal: ∃ c, b = a * c

full_name: dvd_def
code: theorem dvd_def : a ∣ b ↔ ∃ c, b = a * c 
goal: a ∣ b ↔ ∃ c, b = a * c

full_name: Dvd.elim
code: theorem Dvd.elim {P : Prop} {a b : α} (H₁ : a ∣ b) (H₂ : ∀ c, b = a * c → P) : P 
goal: P

full_name: dvd_trans
code: @[trans]
theorem dvd_trans : a ∣ b → b ∣ c → a ∣ c
  
goal: a ∣ b → b ∣ c → a ∣ c

full_name: instIsTransDvd
code: /-- Transitivity of `|` for use in `calc` blocks. -/
instance : IsTrans α Dvd.dvd 
goal: IsTrans α Dvd.dvd

full_name: dvd_mul_right
code: @[simp]
theorem dvd_mul_right (a b : α) : a ∣ a * b 
goal: a ∣ a * b

full_name: dvd_mul_of_dvd_left
code: theorem dvd_mul_of_dvd_left (h : a ∣ b) (c : α) : a ∣ b * c 
goal: a ∣ b * c

full_name: dvd_of_mul_right_dvd
code: theorem dvd_of_mul_right_dvd (h : a * b ∣ c) : a ∣ c 
goal: a ∣ c

full_name: map_dvd
code: theorem map_dvd [Semigroup M] [Semigroup N] {F : Type*} [FunLike F M N] [MulHomClass F M N]
    (f : F) {a b} : a ∣ b → f a ∣ f b
  
goal: a ∣ b → f a ∣ f b

full_name: MulHom.map_dvd
code: theorem MulHom.map_dvd [Semigroup M] [Semigroup N] (f : M →ₙ* N) {a b} : a ∣ b → f a ∣ f b 
goal: a ∣ b → f a ∣ f b

full_name: MonoidHom.map_dvd
code: theorem MonoidHom.map_dvd [Monoid M] [Monoid N] (f : M →* N) {a b} : a ∣ b → f a ∣ f b 
goal: a ∣ b → f a ∣ f b

full_name: IsPrimal
code: /-- An element `a` in a semigroup is primal if whenever `a` is a divisor of `b * c`, it can be
factored as the product of a divisor of `b` and a divisor of `c`. -/
def IsPrimal (a : α) : Prop 
goal: Prop

full_name: decompositionMonoid_iff
code: /-- A monoid is a decomposition monoid if every element is primal. An integral domain whose
multiplicative monoid is a decomposition monoid, is called a pre-Schreier domain; it is a
Schreier domain if it is moreover integrally closed. -/
@[mk_iff] class DecompositionMonoid : Prop where
  primal (a : α) : IsPrimal a
goal: DecompositionMonoid α ↔ ∀ (a : α), IsPrimal a

full_name: DecompositionMonoid.primal
code: /-- A monoid is a decomposition monoid if every element is primal. An integral domain whose
multiplicative monoid is a decomposition monoid, is called a pre-Schreier domain; it is a
Schreier domain if it is moreover integrally closed. -/
@[mk_iff] class DecompositionMonoid : Prop where
  primal (a : α) : IsPrimal a
goal: IsPrimal a

full_name: DecompositionMonoid
code: /-- A monoid is a decomposition monoid if every element is primal. An integral domain whose
multiplicative monoid is a decomposition monoid, is called a pre-Schreier domain; it is a
Schreier domain if it is moreover integrally closed. -/
@[mk_iff] class DecompositionMonoid : Prop where
  primal (a : α) : IsPrimal a
goal: Prop

full_name: exists_dvd_and_dvd_of_dvd_mul
code: theorem exists_dvd_and_dvd_of_dvd_mul [DecompositionMonoid α] {b c a : α} (H : a ∣ b * c) :
    ∃ a₁ a₂, a₁ ∣ b ∧ a₂ ∣ c ∧ a = a₁ * a₂ 
goal: ∃ a₁ a₂, a₁ ∣ b ∧ a₂ ∣ c ∧ a = a₁ * a₂

full_name: dvd_refl
code: @[refl, simp]
theorem dvd_refl (a : α) : a ∣ a 
goal: a ∣ a

full_name: dvd_rfl
code: theorem dvd_rfl : ∀ {a : α}, a ∣ a 
goal: a ∣ a

full_name: instIsReflDvd
code: instance : IsRefl α (· ∣ ·) 
goal: IsRefl α fun x x_1 => x ∣ x_1

full_name: one_dvd
code: theorem one_dvd (a : α) : 1 ∣ a 
goal: 1 ∣ a

full_name: dvd_of_eq
code: theorem dvd_of_eq (h : a = b) : a ∣ b 
goal: a ∣ b

full_name: pow_dvd_pow
code: lemma pow_dvd_pow (a : α) (h : m ≤ n) : a ^ m ∣ a ^ n 
goal: a ^ m ∣ a ^ n

full_name: dvd_pow
code: lemma dvd_pow (hab : a ∣ b) : ∀ {n : ℕ} (_ : n ≠ 0), a ∣ b ^ n
  
goal: n ≠ 0 → a ∣ b ^ n

full_name: dvd_pow_self
code: lemma dvd_pow_self (a : α) {n : ℕ} (hn : n ≠ 0) : a ∣ a ^ n 
goal: a ∣ a ^ n

full_name: mul_dvd_mul_left
code: theorem mul_dvd_mul_left (a : α) (h : b ∣ c) : a * b ∣ a * c 
goal: a * b ∣ a * c

full_name: Dvd.intro_left
code: theorem Dvd.intro_left (c : α) (h : c * a = b) : a ∣ b 
goal: a ∣ b

full_name: exists_eq_mul_left_of_dvd
code: theorem exists_eq_mul_left_of_dvd (h : a ∣ b) : ∃ c, b = c * a 
goal: ∃ c, b = c * a

full_name: dvd_iff_exists_eq_mul_left
code: theorem dvd_iff_exists_eq_mul_left : a ∣ b ↔ ∃ c, b = c * a 
goal: a ∣ b ↔ ∃ c, b = c * a

full_name: Dvd.elim_left
code: theorem Dvd.elim_left {P : Prop} (h₁ : a ∣ b) (h₂ : ∀ c, b = c * a → P) : P 
goal: P

full_name: dvd_mul_left
code: @[simp]
theorem dvd_mul_left (a b : α) : a ∣ b * a 
goal: a ∣ b * a

full_name: dvd_mul_of_dvd_right
code: theorem dvd_mul_of_dvd_right (h : a ∣ b) (c : α) : a ∣ c * b 
goal: a ∣ c * b

full_name: mul_dvd_mul
code: theorem mul_dvd_mul : ∀ {a b c d : α}, a ∣ b → c ∣ d → a * c ∣ b * d
  
goal: a ∣ b → c ∣ d → a * c ∣ b * d

full_name: dvd_of_mul_left_dvd
code: theorem dvd_of_mul_left_dvd (h : a * b ∣ c) : b ∣ c 
goal: b ∣ c

full_name: dvd_mul
code: theorem dvd_mul [DecompositionMonoid α] {k m n : α} :
    k ∣ m * n ↔ ∃ d₁ d₂, d₁ ∣ m ∧ d₂ ∣ n ∧ k = d₁ * d₂ 
goal: k ∣ m * n ↔ ∃ d₁ d₂, d₁ ∣ m ∧ d₂ ∣ n ∧ k = d₁ * d₂

full_name: mul_dvd_mul_right
code: theorem mul_dvd_mul_right (h : a ∣ b) (c : α) : a * c ∣ b * c 
goal: a * c ∣ b * c

full_name: pow_dvd_pow_of_dvd
code: theorem pow_dvd_pow_of_dvd (h : a ∣ b) : ∀ n : ℕ, a ^ n ∣ b ^ n
  
goal: a ^ n ∣ b ^ n