ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- finprod_cond_nonneg
theorem finprod_cond_nonneg {R : Type*} [OrderedCommSemiring R] {p : α → Prop} {f : α → R}
    (hf : ∀ x, p x → 0 ≤ f x) : 0 ≤ ∏ᶠ (x) (_ : p x), f x 
Arguments: {α : Type u_1} {R : Type u_7} [OrderedCommSemiring R] {p : α → Prop} {f : α → R} (hf : ∀ (x : α), p x → 0 ≤ f x)
Goal: 0 ≤ ∏ᶠ (x : α) (_ : p x), f x
-- single_le_finsum
@[to_additive]
theorem single_le_finprod {M : Type*} [OrderedCommMonoid M] (i : α) {f : α → M}
    (hf : (mulSupport f).Finite) (h : ∀ j, 1 ≤ f j) : f i ≤ ∏ᶠ j, f j 
Arguments: {α : Type u_1} {M : Type u_7} [OrderedAddCommMonoid M] (i : α) {f : α → M} (hf : (Function.support f).Finite) (h : ∀ (j : α), 0 ≤ f j)
Goal: f i ≤ ∑ᶠ (j : α), f j
-- single_le_finprod
@[to_additive]
theorem single_le_finprod {M : Type*} [OrderedCommMonoid M] (i : α) {f : α → M}
    (hf : (mulSupport f).Finite) (h : ∀ j, 1 ≤ f j) : f i ≤ ∏ᶠ j, f j 
Arguments: {α : Type u_1} {M : Type u_7} [OrderedCommMonoid M] (i : α) {f : α → M} (hf : (Function.mulSupport f).Finite) (h : ∀ (j : α), 1 ≤ f j)
Goal: f i ≤ ∏ᶠ (j : α), f j
-- finprod_eq_zero
theorem finprod_eq_zero {M₀ : Type*} [CommMonoidWithZero M₀] (f : α → M₀) (x : α) (hx : f x = 0)
    (hf : (mulSupport f).Finite) : ∏ᶠ x, f x = 0 
Arguments: {α : Type u_1} {M₀ : Type u_7} [CommMonoidWithZero M₀] (f : α → M₀) (x : α) (hx : f x = 0) (hf : (Function.mulSupport f).Finite)
Goal: ∏ᶠ (x : α), f x = 0
-- finsum_sum_comm
@[to_additive]
theorem finprod_prod_comm (s : Finset β) (f : α → β → M)
    (h : ∀ b ∈ s, (mulSupport fun a => f a b).Finite) :
    (∏ᶠ a : α, ∏ b ∈ s, f a b) = ∏ b ∈ s, ∏ᶠ a : α, f a b 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [AddCommMonoid M] (s : Finset β) (f : α → β → M) (h : ∀ b ∈ s, (Function.support fun a => f a b).Finite)
Goal: ∑ᶠ (a : α), ∑ b ∈ s, f a b = ∑ b ∈ s, ∑ᶠ (a : α), f a b
-- finprod_prod_comm
@[to_additive]
theorem finprod_prod_comm (s : Finset β) (f : α → β → M)
    (h : ∀ b ∈ s, (mulSupport fun a => f a b).Finite) :
    (∏ᶠ a : α, ∏ b ∈ s, f a b) = ∏ b ∈ s, ∏ᶠ a : α, f a b 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [CommMonoid M] (s : Finset β) (f : α → β → M) (h : ∀ b ∈ s, (Function.mulSupport fun a => f a b).Finite)
Goal: ∏ᶠ (a : α), ∏ b ∈ s, f a b = ∏ b ∈ s, ∏ᶠ (a : α), f a b
-- prod_finprod_comm
@[to_additive]
theorem prod_finprod_comm (s : Finset α) (f : α → β → M) (h : ∀ a ∈ s, (mulSupport (f a)).Finite) :
    (∏ a ∈ s, ∏ᶠ b : β, f a b) = ∏ᶠ b : β, ∏ a ∈ s, f a b 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [CommMonoid M] (s : Finset α) (f : α → β → M) (h : ∀ a ∈ s, (Function.mulSupport (f a)).Finite)
Goal: ∏ a ∈ s, ∏ᶠ (b : β), f a b = ∏ᶠ (b : β), ∏ a ∈ s, f a b
-- sum_finsum_comm
@[to_additive]
theorem prod_finprod_comm (s : Finset α) (f : α → β → M) (h : ∀ a ∈ s, (mulSupport (f a)).Finite) :
    (∏ a ∈ s, ∏ᶠ b : β, f a b) = ∏ᶠ b : β, ∏ a ∈ s, f a b 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [AddCommMonoid M] (s : Finset α) (f : α → β → M) (h : ∀ a ∈ s, (Function.support (f a)).Finite)
Goal: ∑ a ∈ s, ∑ᶠ (b : β), f a b = ∑ᶠ (b : β), ∑ a ∈ s, f a b
-- mul_finsum
theorem mul_finsum {R : Type*} [Semiring R] (f : α → R) (r : R) (h : (support f).Finite) :
    (r * ∑ᶠ a : α, f a) = ∑ᶠ a : α, r * f a 
Arguments: {α : Type u_1} {R : Type u_7} [Semiring R] (f : α → R) (r : R) (h : (Function.support f).Finite)
Goal: r * ∑ᶠ (a : α), f a = ∑ᶠ (a : α), r * f a
-- finsum_mul
theorem finsum_mul {R : Type*} [Semiring R] (f : α → R) (r : R) (h : (support f).Finite) :
    (∑ᶠ a : α, f a) * r = ∑ᶠ a : α, f a * r 
Arguments: {α : Type u_1} {R : Type u_7} [Semiring R] (f : α → R) (r : R) (h : (Function.support f).Finite)
Goal: (∑ᶠ (a : α), f a) * r = ∑ᶠ (a : α), f a * r
-- Finset.support_of_fiberwise_sum_subset_image
@[to_additive]
theorem Finset.mulSupport_of_fiberwise_prod_subset_image [DecidableEq β] (s : Finset α) (f : α → M)
    (g : α → β) : (mulSupport fun b => (s.filter fun a => g a = b).prod f) ⊆ s.image g 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [AddCommMonoid M] [DecidableEq β] (s : Finset α) (f : α → M) (g : α → β)
Goal: (Function.support fun b => (Finset.filter (fun a => g a = b) s).sum f) ⊆ ↑(Finset.image g s)
-- Finset.mulSupport_of_fiberwise_prod_subset_image
@[to_additive]
theorem Finset.mulSupport_of_fiberwise_prod_subset_image [DecidableEq β] (s : Finset α) (f : α → M)
    (g : α → β) : (mulSupport fun b => (s.filter fun a => g a = b).prod f) ⊆ s.image g 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [CommMonoid M] [DecidableEq β] (s : Finset α) (f : α → M) (g : α → β)
Goal: (Function.mulSupport fun b => (Finset.filter (fun a => g a = b) s).prod f) ⊆ ↑(Finset.image g s)
-- finprod_mem_finset_product'
@[to_additive
      "Note that `b ∈ (s.filter (fun ab => Prod.fst ab = a)).image Prod.snd` iff `(a, b) ∈ s` so
      we can simplify the right hand side of this lemma. However the form stated here is more
      useful for iterating this lemma, e.g., if we have `f : α × β × γ → M`."]
theorem finprod_mem_finset_product' [DecidableEq α] [DecidableEq β] (s : Finset (α × β))
    (f : α × β → M) :
    (∏ᶠ (ab) (_ : ab ∈ s), f ab) =
      ∏ᶠ (a) (b) (_ : b ∈ (s.filter fun ab => Prod.fst ab = a).image Prod.snd), f (a, b) 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [CommMonoid M] [DecidableEq α] [DecidableEq β] (s : Finset (α × β)) (f : α × β → M)
Goal: ∏ᶠ (ab : α × β) (_ : ab ∈ s), f ab =
  ∏ᶠ (a : α) (b : β) (_ : b ∈ Finset.image Prod.snd (Finset.filter (fun ab => ab.1 = a) s)), f (a, b)
-- finsum_mem_finset_product'
@[to_additive
      "Note that `b ∈ (s.filter (fun ab => Prod.fst ab = a)).image Prod.snd` iff `(a, b) ∈ s` so
      we can simplify the right hand side of this lemma. However the form stated here is more
      useful for iterating this lemma, e.g., if we have `f : α × β × γ → M`."]
theorem finprod_mem_finset_product' [DecidableEq α] [DecidableEq β] (s : Finset (α × β))
    (f : α × β → M) :
    (∏ᶠ (ab) (_ : ab ∈ s), f ab) =
      ∏ᶠ (a) (b) (_ : b ∈ (s.filter fun ab => Prod.fst ab = a).image Prod.snd), f (a, b) 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [AddCommMonoid M] [DecidableEq α] [DecidableEq β] (s : Finset (α × β)) (f : α × β → M)
Goal: ∑ᶠ (ab : α × β) (_ : ab ∈ s), f ab =
  ∑ᶠ (a : α) (b : β) (_ : b ∈ Finset.image Prod.snd (Finset.filter (fun ab => ab.1 = a) s)), f (a, b)
-- finsum_mem_finset_product
@[to_additive "See also `finsum_mem_finset_product'`."]
theorem finprod_mem_finset_product (s : Finset (α × β)) (f : α × β → M) :
    (∏ᶠ (ab) (_ : ab ∈ s), f ab) = ∏ᶠ (a) (b) (_ : (a, b) ∈ s), f (a, b) 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [AddCommMonoid M] (s : Finset (α × β)) (f : α × β → M)
Goal: ∑ᶠ (ab : α × β) (_ : ab ∈ s), f ab = ∑ᶠ (a : α) (b : β) (_ : (a, b) ∈ s), f (a, b)
-- finprod_mem_finset_product
@[to_additive "See also `finsum_mem_finset_product'`."]
theorem finprod_mem_finset_product (s : Finset (α × β)) (f : α × β → M) :
    (∏ᶠ (ab) (_ : ab ∈ s), f ab) = ∏ᶠ (a) (b) (_ : (a, b) ∈ s), f (a, b) 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [CommMonoid M] (s : Finset (α × β)) (f : α × β → M)
Goal: ∏ᶠ (ab : α × β) (_ : ab ∈ s), f ab = ∏ᶠ (a : α) (b : β) (_ : (a, b) ∈ s), f (a, b)
-- finsum_mem_finset_product₃
@[to_additive]
theorem finprod_mem_finset_product₃ {γ : Type*} (s : Finset (α × β × γ)) (f : α × β × γ → M) :
    (∏ᶠ (abc) (_ : abc ∈ s), f abc) = ∏ᶠ (a) (b) (c) (_ : (a, b, c) ∈ s), f (a, b, c) 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [AddCommMonoid M] {γ : Type u_7} (s : Finset (α × β × γ)) (f : α × β × γ → M)
Goal: ∑ᶠ (abc : α × β × γ) (_ : abc ∈ s), f abc = ∑ᶠ (a : α) (b : β) (c : γ) (_ : (a, b, c) ∈ s), f (a, b, c)
-- finprod_mem_finset_product₃
@[to_additive]
theorem finprod_mem_finset_product₃ {γ : Type*} (s : Finset (α × β × γ)) (f : α × β × γ → M) :
    (∏ᶠ (abc) (_ : abc ∈ s), f abc) = ∏ᶠ (a) (b) (c) (_ : (a, b, c) ∈ s), f (a, b, c) 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [CommMonoid M] {γ : Type u_7} (s : Finset (α × β × γ)) (f : α × β × γ → M)
Goal: ∏ᶠ (abc : α × β × γ) (_ : abc ∈ s), f abc = ∏ᶠ (a : α) (b : β) (c : γ) (_ : (a, b, c) ∈ s), f (a, b, c)
-- finsum_curry
@[to_additive]
theorem finprod_curry (f : α × β → M) (hf : (mulSupport f).Finite) :
    ∏ᶠ ab, f ab = ∏ᶠ (a) (b), f (a, b) 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [AddCommMonoid M] (f : α × β → M) (hf : (Function.support f).Finite)
Goal: ∑ᶠ (ab : α × β), f ab = ∑ᶠ (a : α) (b : β), f (a, b)
-- finprod_curry
@[to_additive]
theorem finprod_curry (f : α × β → M) (hf : (mulSupport f).Finite) :
    ∏ᶠ ab, f ab = ∏ᶠ (a) (b), f (a, b) 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [CommMonoid M] (f : α × β → M) (hf : (Function.mulSupport f).Finite)
Goal: ∏ᶠ (ab : α × β), f ab = ∏ᶠ (a : α) (b : β), f (a, b)
-- finprod_curry₃
@[to_additive]
theorem finprod_curry₃ {γ : Type*} (f : α × β × γ → M) (h : (mulSupport f).Finite) :
    ∏ᶠ abc, f abc = ∏ᶠ (a) (b) (c), f (a, b, c) 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [CommMonoid M] {γ : Type u_7} (f : α × β × γ → M) (h : (Function.mulSupport f).Finite)
Goal: ∏ᶠ (abc : α × β × γ), f abc = ∏ᶠ (a : α) (b : β) (c : γ), f (a, b, c)
-- finsum_curry₃
@[to_additive]
theorem finprod_curry₃ {γ : Type*} (f : α × β × γ → M) (h : (mulSupport f).Finite) :
    ∏ᶠ abc, f abc = ∏ᶠ (a) (b) (c), f (a, b, c) 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [AddCommMonoid M] {γ : Type u_7} (f : α × β × γ → M) (h : (Function.support f).Finite)
Goal: ∑ᶠ (abc : α × β × γ), f abc = ∑ᶠ (a : α) (b : β) (c : γ), f (a, b, c)
-- finprod_dmem
@[to_additive]
theorem finprod_dmem {s : Set α} [DecidablePred (· ∈ s)] (f : ∀ a : α, a ∈ s → M) :
    (∏ᶠ (a : α) (h : a ∈ s), f a h) = ∏ᶠ (a : α) (_ : a ∈ s), if h' : a ∈ s then f a h' else 1 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {s : Set α} [DecidablePred fun x => x ∈ s] (f : (a : α) → a ∈ s → M)
Goal: ∏ᶠ (a : α) (h : a ∈ s), f a h = ∏ᶠ (a : α) (_ : a ∈ s), if h' : a ∈ s then f a h' else 1
-- finsum_dmem
@[to_additive]
theorem finprod_dmem {s : Set α} [DecidablePred (· ∈ s)] (f : ∀ a : α, a ∈ s → M) :
    (∏ᶠ (a : α) (h : a ∈ s), f a h) = ∏ᶠ (a : α) (_ : a ∈ s), if h' : a ∈ s then f a h' else 1 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {s : Set α} [DecidablePred fun x => x ∈ s] (f : (a : α) → a ∈ s → M)
Goal: ∑ᶠ (a : α) (h : a ∈ s), f a h = ∑ᶠ (a : α) (_ : a ∈ s), if h' : a ∈ s then f a h' else 0
-- finprod_emb_domain'
@[to_additive]
theorem finprod_emb_domain' {f : α → β} (hf : Injective f) [DecidablePred (· ∈ Set.range f)]
    (g : α → M) :
    (∏ᶠ b : β, if h : b ∈ Set.range f then g (Classical.choose h) else 1) = ∏ᶠ a : α, g a 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [CommMonoid M] {f : α → β} (hf : Function.Injective f) [DecidablePred fun x => x ∈ Set.range f] (g : α → M)
Goal: (∏ᶠ (b : β), if h : b ∈ Set.range f then g (Classical.choose h) else 1) = ∏ᶠ (a : α), g a
-- finsum_emb_domain'
@[to_additive]
theorem finprod_emb_domain' {f : α → β} (hf : Injective f) [DecidablePred (· ∈ Set.range f)]
    (g : α → M) :
    (∏ᶠ b : β, if h : b ∈ Set.range f then g (Classical.choose h) else 1) = ∏ᶠ a : α, g a 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [AddCommMonoid M] {f : α → β} (hf : Function.Injective f) [DecidablePred fun x => x ∈ Set.range f] (g : α → M)
Goal: (∑ᶠ (b : β), if h : b ∈ Set.range f then g (Classical.choose h) else 0) = ∑ᶠ (a : α), g a
-- finprod_emb_domain
@[to_additive]
theorem finprod_emb_domain (f : α ↪ β) [DecidablePred (· ∈ Set.range f)] (g : α → M) :
    (∏ᶠ b : β, if h : b ∈ Set.range f then g (Classical.choose h) else 1) = ∏ᶠ a : α, g a 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [CommMonoid M] (f : α ↪ β) [DecidablePred fun x => x ∈ Set.range ⇑f] (g : α → M)
Goal: (∏ᶠ (b : β), if h : b ∈ Set.range ⇑f then g (Classical.choose h) else 1) = ∏ᶠ (a : α), g a
-- finsum_emb_domain
@[to_additive]
theorem finprod_emb_domain (f : α ↪ β) [DecidablePred (· ∈ Set.range f)] (g : α → M) :
    (∏ᶠ b : β, if h : b ∈ Set.range f then g (Classical.choose h) else 1) = ∏ᶠ a : α, g a 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [AddCommMonoid M] (f : α ↪ β) [DecidablePred fun x => x ∈ Set.range ⇑f] (g : α → M)
Goal: (∑ᶠ (b : β), if h : b ∈ Set.range ⇑f then g (Classical.choose h) else 0) = ∑ᶠ (a : α), g a
-- Prime.ne_zero
theorem ne_zero : p ≠ 0 
Arguments: {α : Type u_1} [CommMonoidWithZero α] {p : α} (hp : Prime p)
Goal: p ≠ 0
-- Prime.not_unit
theorem not_unit : ¬IsUnit p 
Arguments: {α : Type u_1} [CommMonoidWithZero α] {p : α} (hp : Prime p)
Goal: ¬IsUnit p
-- Prime.not_dvd_one
theorem not_dvd_one : ¬p ∣ 1 
Arguments: {α : Type u_1} [CommMonoidWithZero α] {p : α} (hp : Prime p)
Goal: ¬p ∣ 1
-- Prime.ne_one
theorem ne_one : p ≠ 1 
Arguments: {α : Type u_1} [CommMonoidWithZero α] {p : α} (hp : Prime p)
Goal: p ≠ 1
-- Prime.dvd_or_dvd
theorem dvd_or_dvd (hp : Prime p) {a b : α} (h : p ∣ a * b) : p ∣ a ∨ p ∣ b 
Arguments: {α : Type u_1} [CommMonoidWithZero α] {p : α} (hp : Prime p) {a b : α} (h : p ∣ a * b)
Goal: p ∣ a ∨ p ∣ b
-- Prime.dvd_mul
theorem dvd_mul {a b : α} : p ∣ a * b ↔ p ∣ a ∨ p ∣ b 
Arguments: {α : Type u_1} [CommMonoidWithZero α] {p : α} (hp : Prime p) {a b : α}
Goal: p ∣ a * b ↔ p ∣ a ∨ p ∣ b
-- Prime.isPrimal
theorem isPrimal (hp : Prime p) : IsPrimal p 
Arguments: {α : Type u_1} [CommMonoidWithZero α] {p : α} (hp : Prime p)
Goal: IsPrimal p
-- Prime.not_dvd_mul
theorem not_dvd_mul {a b : α} (ha : ¬ p ∣ a) (hb : ¬ p ∣ b) : ¬ p ∣ a * b 
Arguments: {α : Type u_1} [CommMonoidWithZero α] {p : α} (hp : Prime p) {a b : α} (ha : ¬p ∣ a) (hb : ¬p ∣ b)
Goal: ¬p ∣ a * b
-- Prime.dvd_of_dvd_pow
theorem dvd_of_dvd_pow (hp : Prime p) {a : α} {n : ℕ} (h : p ∣ a ^ n) : p ∣ a 
Arguments: {α : Type u_1} [CommMonoidWithZero α] {p : α} (hp : Prime p) {a : α} {n : ℕ} (h : p ∣ a ^ n)
Goal: p ∣ a
-- Prime.dvd_pow_iff_dvd
theorem dvd_pow_iff_dvd {a : α} {n : ℕ} (hn : n ≠ 0) : p ∣ a ^ n ↔ p ∣ a 
Arguments: {α : Type u_1} [CommMonoidWithZero α] {p : α} (hp : Prime p) {a : α} {n : ℕ} (hn : n ≠ 0)
Goal: p ∣ a ^ n ↔ p ∣ a
-- not_prime_zero
@[simp]
theorem not_prime_zero : ¬Prime (0 : α) 
Arguments: {α : Type u_1} [CommMonoidWithZero α]
Goal: ¬Prime 0
-- not_prime_one
@[simp]
theorem not_prime_one : ¬Prime (1 : α) 
Arguments: {α : Type u_1} [CommMonoidWithZero α]
Goal: ¬Prime 1
-- comap_prime
theorem comap_prime (hinv : ∀ a, g (f a : β) = a) (hp : Prime (f p)) : Prime p 
Arguments: {α : Type u_1} {β : Type u_2} [CommMonoidWithZero α] [CommMonoidWithZero β] {F : Type u_5} {G : Type u_6} [FunLike F α β] [MonoidWithZeroHomClass F α β] [FunLike G β α] [MulHomClass G β α] (f : F) (g : G) {p : α} (hinv : ∀ (a : α), g (f a) = a) (hp : Prime (f p))
Goal: Prime p
-- MulEquiv.prime_iff
theorem MulEquiv.prime_iff (e : α ≃* β) : Prime p ↔ Prime (e p) 
Arguments: {α : Type u_1} {β : Type u_2} [CommMonoidWithZero α] [CommMonoidWithZero β] {p : α} (e : α ≃* β)
Goal: Prime p ↔ Prime (e p)
-- Prime.left_dvd_or_dvd_right_of_dvd_mul
theorem Prime.left_dvd_or_dvd_right_of_dvd_mul [CancelCommMonoidWithZero α] {p : α} (hp : Prime p)
    {a b : α} : a ∣ p * b → p ∣ a ∨ a ∣ b 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] {p : α} (hp : Prime p) {a b : α}
Goal: a ∣ p * b → p ∣ a ∨ a ∣ b
-- Prime.pow_dvd_of_dvd_mul_left
theorem Prime.pow_dvd_of_dvd_mul_left [CancelCommMonoidWithZero α] {p a b : α} (hp : Prime p)
    (n : ℕ) (h : ¬p ∣ a) (h' : p ^ n ∣ a * b) : p ^ n ∣ b 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] {p a b : α} (hp : Prime p) (n : ℕ) (h : ¬p ∣ a) (h' : p ^ n ∣ a * b)
Goal: p ^ n ∣ b
-- Prime.pow_dvd_of_dvd_mul_right
theorem Prime.pow_dvd_of_dvd_mul_right [CancelCommMonoidWithZero α] {p a b : α} (hp : Prime p)
    (n : ℕ) (h : ¬p ∣ b) (h' : p ^ n ∣ a * b) : p ^ n ∣ a 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] {p a b : α} (hp : Prime p) (n : ℕ) (h : ¬p ∣ b) (h' : p ^ n ∣ a * b)
Goal: p ^ n ∣ a
-- Prime.dvd_of_pow_dvd_pow_mul_pow_of_square_not_dvd
theorem Prime.dvd_of_pow_dvd_pow_mul_pow_of_square_not_dvd [CancelCommMonoidWithZero α] {p a b : α}
    {n : ℕ} (hp : Prime p) (hpow : p ^ n.succ ∣ a ^ n.succ * b ^ n) (hb : ¬p ^ 2 ∣ b) : p ∣ a 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] {p a b : α} {n : ℕ} (hp : Prime p) (hpow : p ^ n.succ ∣ a ^ n.succ * b ^ n) (hb : ¬p ^ 2 ∣ b)
Goal: p ∣ a
-- prime_pow_succ_dvd_mul
theorem prime_pow_succ_dvd_mul {α : Type*} [CancelCommMonoidWithZero α] {p x y : α} (h : Prime p)
    {i : ℕ} (hxy : p ^ (i + 1) ∣ x * y) : p ^ (i + 1) ∣ x ∨ p ∣ y 
Arguments: {α : Type u_5} [CancelCommMonoidWithZero α] {p x y : α} (h : Prime p) {i : ℕ} (hxy : p ^ (i + 1) ∣ x * y)
Goal: p ^ (i + 1) ∣ x ∨ p ∣ y
-- Irreducible.isUnit_or_isUnit'
structure Irreducible [Monoid α] (p : α) : Prop where
    not_unit : ¬IsUnit p
    isUnit_or_isUnit' : ∀ a b, p = a * b → IsUnit a ∨ IsUnit b
Arguments: {α : Type u_1} [Monoid α] {p : α} (self : Irreducible p) (a b : α)
Goal: p = a * b → IsUnit a ∨ IsUnit b
-- Irreducible.not_unit
structure Irreducible [Monoid α] (p : α) : Prop where
    not_unit : ¬IsUnit p
    isUnit_or_isUnit' : ∀ a b, p = a * b → IsUnit a ∨ IsUnit b
Arguments: {α : Type u_1} [Monoid α] {p : α} (self : Irreducible p)
Goal: ¬IsUnit p
-- Irreducible.not_dvd_one
theorem not_dvd_one [CommMonoid α] {p : α} (hp : Irreducible p) : ¬p ∣ 1 
Arguments: {α : Type u_1} [CommMonoid α] {p : α} (hp : Irreducible p)
Goal: ¬p ∣ 1
-- Irreducible.isUnit_or_isUnit
theorem isUnit_or_isUnit [Monoid α] {p : α} (hp : Irreducible p) {a b : α} (h : p = a * b) :
    IsUnit a ∨ IsUnit b 
Arguments: {α : Type u_1} [Monoid α] {p : α} (hp : Irreducible p) {a b : α} (h : p = a * b)
Goal: IsUnit a ∨ IsUnit b
-- irreducible_iff
theorem irreducible_iff [Monoid α] {p : α} :
    Irreducible p ↔ ¬IsUnit p ∧ ∀ a b, p = a * b → IsUnit a ∨ IsUnit b 
Arguments: {α : Type u_1} [Monoid α] {p : α}
Goal: Irreducible p ↔ ¬IsUnit p ∧ ∀ (a b : α), p = a * b → IsUnit a ∨ IsUnit b
-- not_irreducible_one
@[simp]
theorem not_irreducible_one [Monoid α] : ¬Irreducible (1 : α) 
Arguments: {α : Type u_1} [Monoid α]
Goal: ¬Irreducible 1
-- Irreducible.ne_one
theorem Irreducible.ne_one [Monoid α] : ∀ {p : α}, Irreducible p → p ≠ 1
  
Arguments: {α : Type u_1} [Monoid α] {p : α}
Goal: Irreducible p → p ≠ 1
-- not_irreducible_zero
@[simp]
theorem not_irreducible_zero [MonoidWithZero α] : ¬Irreducible (0 : α)
  
Arguments: {α : Type u_1} [MonoidWithZero α]
Goal: ¬Irreducible 0
-- Irreducible.ne_zero
theorem Irreducible.ne_zero [MonoidWithZero α] : ∀ {p : α}, Irreducible p → p ≠ 0
  
Arguments: {α : Type u_1} [MonoidWithZero α] {p : α}
Goal: Irreducible p → p ≠ 0
-- of_irreducible_mul
theorem of_irreducible_mul {α} [Monoid α] {x y : α} : Irreducible (x * y) → IsUnit x ∨ IsUnit y
  
Arguments: {α : Type u_5} [Monoid α] {x y : α}
Goal: Irreducible (x * y) → IsUnit x ∨ IsUnit y
-- not_irreducible_pow
theorem not_irreducible_pow {α} [Monoid α] {x : α} {n : ℕ} (hn : n ≠ 1) :
    ¬ Irreducible (x ^ n) 
Arguments: {α : Type u_5} [Monoid α] {x : α} {n : ℕ} (hn : n ≠ 1)
Goal: ¬Irreducible (x ^ n)
-- irreducible_or_factor
theorem irreducible_or_factor {α} [Monoid α] (x : α) (h : ¬IsUnit x) :
    Irreducible x ∨ ∃ a b, ¬IsUnit a ∧ ¬IsUnit b ∧ a * b = x 
Arguments: {α : Type u_5} [Monoid α] (x : α) (h : ¬IsUnit x)
Goal: Irreducible x ∨ ∃ a b, ¬IsUnit a ∧ ¬IsUnit b ∧ a * b = x
-- Irreducible.dvd_symm
theorem Irreducible.dvd_symm [Monoid α] {p q : α} (hp : Irreducible p) (hq : Irreducible q) :
    p ∣ q → q ∣ p 
Arguments: {α : Type u_1} [Monoid α] {p q : α} (hp : Irreducible p) (hq : Irreducible q)
Goal: p ∣ q → q ∣ p
-- Irreducible.dvd_comm
theorem Irreducible.dvd_comm [Monoid α] {p q : α} (hp : Irreducible p) (hq : Irreducible q) :
    p ∣ q ↔ q ∣ p 
Arguments: {α : Type u_1} [Monoid α] {p q : α} (hp : Irreducible p) (hq : Irreducible q)
Goal: p ∣ q ↔ q ∣ p
-- irreducible_units_mul
theorem irreducible_units_mul (a : αˣ) (b : α) : Irreducible (↑a * b) ↔ Irreducible b 
Arguments: {α : Type u_1} [Monoid α] (a : αˣ) (b : α)
Goal: Irreducible (↑a * b) ↔ Irreducible b
-- irreducible_isUnit_mul
theorem irreducible_isUnit_mul {a b : α} (h : IsUnit a) : Irreducible (a * b) ↔ Irreducible b 
Arguments: {α : Type u_1} [Monoid α] {a b : α} (h : IsUnit a)
Goal: Irreducible (a * b) ↔ Irreducible b
-- irreducible_mul_units
theorem irreducible_mul_units (a : αˣ) (b : α) : Irreducible (b * ↑a) ↔ Irreducible b 
Arguments: {α : Type u_1} [Monoid α] (a : αˣ) (b : α)
Goal: Irreducible (b * ↑a) ↔ Irreducible b
-- irreducible_mul_isUnit
theorem irreducible_mul_isUnit {a b : α} (h : IsUnit a) : Irreducible (b * a) ↔ Irreducible b 
Arguments: {α : Type u_1} [Monoid α] {a b : α} (h : IsUnit a)
Goal: Irreducible (b * a) ↔ Irreducible b
-- irreducible_mul_iff
theorem irreducible_mul_iff {a b : α} :
    Irreducible (a * b) ↔ Irreducible a ∧ IsUnit b ∨ Irreducible b ∧ IsUnit a 
Arguments: {α : Type u_1} [Monoid α] {a b : α}
Goal: Irreducible (a * b) ↔ Irreducible a ∧ IsUnit b ∨ Irreducible b ∧ IsUnit a
-- Irreducible.not_square
theorem Irreducible.not_square (ha : Irreducible a) : ¬IsSquare a 
Arguments: {α : Type u_1} [CommMonoid α] {a : α} (ha : Irreducible a)
Goal: ¬IsSquare a
-- IsSquare.not_irreducible
theorem IsSquare.not_irreducible (ha : IsSquare a) : ¬Irreducible a 
Arguments: {α : Type u_1} [CommMonoid α] {a : α} (ha : IsSquare a)
Goal: ¬Irreducible a
-- Irreducible.prime_of_isPrimal
theorem Irreducible.prime_of_isPrimal {a : α}
    (irr : Irreducible a) (primal : IsPrimal a) : Prime a 
Arguments: {α : Type u_1} [CommMonoidWithZero α] {a : α} (irr : Irreducible a) (primal : IsPrimal a)
Goal: Prime a
-- Irreducible.prime
theorem Irreducible.prime [DecompositionMonoid α] {a : α} (irr : Irreducible a) : Prime a 
Arguments: {α : Type u_1} [CommMonoidWithZero α] [DecompositionMonoid α] {a : α} (irr : Irreducible a)
Goal: Prime a
-- Prime.irreducible
protected theorem Prime.irreducible (hp : Prime p) : Irreducible p 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] {p : α} (hp : Prime p)
Goal: Irreducible p
-- irreducible_iff_prime
theorem irreducible_iff_prime [DecompositionMonoid α] {a : α} : Irreducible a ↔ Prime a 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [DecompositionMonoid α] {a : α}
Goal: Irreducible a ↔ Prime a
-- succ_dvd_or_succ_dvd_of_succ_sum_dvd_mul
theorem succ_dvd_or_succ_dvd_of_succ_sum_dvd_mul (hp : Prime p) {a b : α} {k l : ℕ} :
    p ^ k ∣ a → p ^ l ∣ b → p ^ (k + l + 1) ∣ a * b → p ^ (k + 1) ∣ a ∨ p ^ (l + 1) ∣ b 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] {p : α} (hp : Prime p) {a b : α} {k l : ℕ}
Goal: p ^ k ∣ a → p ^ l ∣ b → p ^ (k + l + 1) ∣ a * b → p ^ (k + 1) ∣ a ∨ p ^ (l + 1) ∣ b
-- Prime.not_square
theorem Prime.not_square (hp : Prime p) : ¬IsSquare p 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] {p : α} (hp : Prime p)
Goal: ¬IsSquare p
-- IsSquare.not_prime
theorem IsSquare.not_prime (ha : IsSquare a) : ¬Prime a 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] {a : α} (ha : IsSquare a)
Goal: ¬Prime a
-- not_prime_pow
theorem not_prime_pow {n : ℕ} (hn : n ≠ 1) : ¬Prime (a ^ n) 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] {a : α} {n : ℕ} (hn : n ≠ 1)
Goal: ¬Prime (a ^ n)
-- Associated.refl
@[refl]
protected theorem refl [Monoid α] (x : α) : x ~ᵤ x 
Arguments: {α : Type u_1} [Monoid α] (x : α)
Goal: x ~ᵤ x
-- Associated.rfl
protected theorem rfl [Monoid α] {x : α} : x ~ᵤ x 
Arguments: {α : Type u_1} [Monoid α] {x : α}
Goal: x ~ᵤ x
-- Associated.symm
@[symm]
protected theorem symm [Monoid α] : ∀ {x y : α}, x ~ᵤ y → y ~ᵤ x
  
Arguments: {α : Type u_1} [Monoid α] {x y : α}
Goal: x ~ᵤ y → y ~ᵤ x
-- Associated.comm
protected theorem comm [Monoid α] {x y : α} : x ~ᵤ y ↔ y ~ᵤ x 
Arguments: {α : Type u_1} [Monoid α] {x y : α}
Goal: x ~ᵤ y ↔ y ~ᵤ x
-- Associated.trans
@[trans]
protected theorem trans [Monoid α] : ∀ {x y z : α}, x ~ᵤ y → y ~ᵤ z → x ~ᵤ z
  
Arguments: {α : Type u_1} [Monoid α] {x y z : α}
Goal: x ~ᵤ y → y ~ᵤ z → x ~ᵤ z
-- Associated.map
theorem map {M N : Type*} [Monoid M] [Monoid N] {F : Type*} [FunLike F M N] [MonoidHomClass F M N]
    (f : F) {x y : M} (ha : Associated x y) : Associated (f x) (f y) 
Arguments: {M : Type u_5} {N : Type u_6} [Monoid M] [Monoid N] {F : Type u_7} [FunLike F M N] [MonoidHomClass F M N] (f : F) {x y : M} (ha : x ~ᵤ y)
Goal: f x ~ᵤ f y
-- unit_associated_one
theorem unit_associated_one [Monoid α] {u : αˣ} : (u : α) ~ᵤ 1 
Arguments: {α : Type u_1} [Monoid α] {u : αˣ}
Goal: ↑u ~ᵤ 1