ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Finset.mem_inv'
@[to_additive (attr := simp)]
lemma mem_inv' : a ∈ s⁻¹ ↔ a⁻¹ ∈ s 
Arguments: {α : Type u_2} [DecidableEq α] [InvolutiveInv α] {s : Finset α} {a : α}
Goal: a ∈ s⁻¹ ↔ a⁻¹ ∈ s
-- Finset.mem_neg'
@[to_additive (attr := simp)]
lemma mem_inv' : a ∈ s⁻¹ ↔ a⁻¹ ∈ s 
Arguments: {α : Type u_2} [DecidableEq α] [InvolutiveNeg α] {s : Finset α} {a : α}
Goal: a ∈ -s ↔ -a ∈ s
-- Finset.coe_neg
@[to_additive (attr := simp, norm_cast)]
theorem coe_inv (s : Finset α) : ↑s⁻¹ = (s : Set α)⁻¹ 
Arguments: {α : Type u_2} [DecidableEq α] [InvolutiveNeg α] (s : Finset α)
Goal: ↑(-s) = -↑s
-- Finset.coe_inv
@[to_additive (attr := simp, norm_cast)]
theorem coe_inv (s : Finset α) : ↑s⁻¹ = (s : Set α)⁻¹ 
Arguments: {α : Type u_2} [DecidableEq α] [InvolutiveInv α] (s : Finset α)
Goal: ↑s⁻¹ = (↑s)⁻¹
-- Finset.card_neg
@[to_additive (attr := simp)]
theorem card_inv (s : Finset α) : s⁻¹.card = s.card 
Arguments: {α : Type u_2} [DecidableEq α] [InvolutiveNeg α] (s : Finset α)
Goal: (-s).card = s.card
-- Finset.card_inv
@[to_additive (attr := simp)]
theorem card_inv (s : Finset α) : s⁻¹.card = s.card 
Arguments: {α : Type u_2} [DecidableEq α] [InvolutiveInv α] (s : Finset α)
Goal: s⁻¹.card = s.card
-- Finset.preimage_inv
@[to_additive (attr := simp)]
theorem preimage_inv (s : Finset α) : s.preimage (·⁻¹) inv_injective.injOn = s⁻¹ 
Arguments: {α : Type u_2} [DecidableEq α] [InvolutiveInv α] (s : Finset α)
Goal: s.preimage (fun x => x⁻¹) ⋯ = s⁻¹
-- Finset.preimage_neg
@[to_additive (attr := simp)]
theorem preimage_inv (s : Finset α) : s.preimage (·⁻¹) inv_injective.injOn = s⁻¹ 
Arguments: {α : Type u_2} [DecidableEq α] [InvolutiveNeg α] (s : Finset α)
Goal: s.preimage (fun x => -x) ⋯ = -s
-- Finset.inv_univ
@[to_additive (attr := simp)]
lemma inv_univ [Fintype α] : (univ : Finset α)⁻¹ = univ 
Arguments: {α : Type u_2} [DecidableEq α] [InvolutiveInv α] [Fintype α]
Goal: Finset.univ⁻¹ = Finset.univ
-- Finset.neg_univ
@[to_additive (attr := simp)]
lemma inv_univ [Fintype α] : (univ : Finset α)⁻¹ = univ 
Arguments: {α : Type u_2} [DecidableEq α] [InvolutiveNeg α] [Fintype α]
Goal: -Finset.univ = Finset.univ
-- Finset.neg_inter
@[to_additive (attr := simp)]
lemma inv_inter (s t : Finset α) : (s ∩ t)⁻¹ = s⁻¹ ∩ t⁻¹ 
Arguments: {α : Type u_2} [DecidableEq α] [InvolutiveNeg α] (s t : Finset α)
Goal: -(s ∩ t) = -s ∩ -t
-- Finset.inv_inter
@[to_additive (attr := simp)]
lemma inv_inter (s t : Finset α) : (s ∩ t)⁻¹ = s⁻¹ ∩ t⁻¹ 
Arguments: {α : Type u_2} [DecidableEq α] [InvolutiveInv α] (s t : Finset α)
Goal: (s ∩ t)⁻¹ = s⁻¹ ∩ t⁻¹
-- Finset.add_def
@[to_additive]
theorem mul_def : s * t = (s ×ˢ t).image fun p : α × α => p.1 * p.2 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s t : Finset α}
Goal: s + t = Finset.image (fun p => p.1 + p.2) (s ×ˢ t)
-- Finset.mul_def
@[to_additive]
theorem mul_def : s * t = (s ×ˢ t).image fun p : α × α => p.1 * p.2 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s t : Finset α}
Goal: s * t = Finset.image (fun p => p.1 * p.2) (s ×ˢ t)
-- Finset.image_add_product
@[to_additive]
theorem image_mul_product : ((s ×ˢ t).image fun x : α × α => x.fst * x.snd) = s * t 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s t : Finset α}
Goal: Finset.image (fun x => x.1 + x.2) (s ×ˢ t) = s + t
-- Finset.image_mul_product
@[to_additive]
theorem image_mul_product : ((s ×ˢ t).image fun x : α × α => x.fst * x.snd) = s * t 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s t : Finset α}
Goal: Finset.image (fun x => x.1 * x.2) (s ×ˢ t) = s * t
-- Finset.mem_mul
@[to_additive]
theorem mem_mul {x : α} : x ∈ s * t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s t : Finset α} {x : α}
Goal: x ∈ s * t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x
-- Finset.mem_add
@[to_additive]
theorem mem_mul {x : α} : x ∈ s * t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s t : Finset α} {x : α}
Goal: x ∈ s + t ↔ ∃ y ∈ s, ∃ z ∈ t, y + z = x
-- Finset.coe_add
@[to_additive (attr := simp, norm_cast)]
theorem coe_mul (s t : Finset α) : (↑(s * t) : Set α) = ↑s * ↑t 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] (s t : Finset α)
Goal: ↑(s + t) = ↑s + ↑t
-- Finset.coe_mul
@[to_additive (attr := simp, norm_cast)]
theorem coe_mul (s t : Finset α) : (↑(s * t) : Set α) = ↑s * ↑t 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] (s t : Finset α)
Goal: ↑(s * t) = ↑s * ↑t
-- Finset.mul_mem_mul
@[to_additive]
theorem mul_mem_mul : a ∈ s → b ∈ t → a * b ∈ s * t 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s t : Finset α} {a b : α}
Goal: a ∈ s → b ∈ t → a * b ∈ s * t
-- Finset.add_mem_add
@[to_additive]
theorem mul_mem_mul : a ∈ s → b ∈ t → a * b ∈ s * t 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s t : Finset α} {a b : α}
Goal: a ∈ s → b ∈ t → a + b ∈ s + t
-- Finset.card_mul_le
@[to_additive]
theorem card_mul_le : (s * t).card ≤ s.card * t.card 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s t : Finset α}
Goal: (s * t).card ≤ s.card * t.card
-- Finset.card_add_le
@[to_additive]
theorem card_mul_le : (s * t).card ≤ s.card * t.card 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s t : Finset α}
Goal: (s + t).card ≤ s.card * t.card
-- Finset.card_add_iff
@[to_additive]
theorem card_mul_iff :
    (s * t).card = s.card * t.card ↔ (s ×ˢ t : Set (α × α)).InjOn fun p => p.1 * p.2 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s t : Finset α}
Goal: (s + t).card = s.card * t.card ↔ Set.InjOn (fun p => p.1 + p.2) (↑s ×ˢ ↑t)
-- Finset.card_mul_iff
@[to_additive]
theorem card_mul_iff :
    (s * t).card = s.card * t.card ↔ (s ×ˢ t : Set (α × α)).InjOn fun p => p.1 * p.2 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s t : Finset α}
Goal: (s * t).card = s.card * t.card ↔ Set.InjOn (fun p => p.1 * p.2) (↑s ×ˢ ↑t)
-- Finset.empty_add
@[to_additive (attr := simp)]
theorem empty_mul (s : Finset α) : ∅ * s = ∅ 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] (s : Finset α)
Goal: ∅ + s = ∅
-- Finset.empty_mul
@[to_additive (attr := simp)]
theorem empty_mul (s : Finset α) : ∅ * s = ∅ 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] (s : Finset α)
Goal: ∅ * s = ∅
-- Finset.add_empty
@[to_additive (attr := simp)]
theorem mul_empty (s : Finset α) : s * ∅ = ∅ 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] (s : Finset α)
Goal: s + ∅ = ∅
-- Finset.mul_empty
@[to_additive (attr := simp)]
theorem mul_empty (s : Finset α) : s * ∅ = ∅ 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] (s : Finset α)
Goal: s * ∅ = ∅
-- Finset.mul_eq_empty
@[to_additive (attr := simp)]
theorem mul_eq_empty : s * t = ∅ ↔ s = ∅ ∨ t = ∅ 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s t : Finset α}
Goal: s * t = ∅ ↔ s = ∅ ∨ t = ∅
-- Finset.add_eq_empty
@[to_additive (attr := simp)]
theorem mul_eq_empty : s * t = ∅ ↔ s = ∅ ∨ t = ∅ 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s t : Finset α}
Goal: s + t = ∅ ↔ s = ∅ ∨ t = ∅
-- Finset.add_nonempty
@[to_additive (attr := simp, aesop safe apply (rule_sets := [finsetNonempty]))]
theorem mul_nonempty : (s * t).Nonempty ↔ s.Nonempty ∧ t.Nonempty 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s t : Finset α}
Goal: (s + t).Nonempty ↔ s.Nonempty ∧ t.Nonempty
-- Finset.mul_nonempty
@[to_additive (attr := simp, aesop safe apply (rule_sets := [finsetNonempty]))]
theorem mul_nonempty : (s * t).Nonempty ↔ s.Nonempty ∧ t.Nonempty 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s t : Finset α}
Goal: (s * t).Nonempty ↔ s.Nonempty ∧ t.Nonempty
-- Finset.Nonempty.mul
@[to_additive]
theorem Nonempty.mul : s.Nonempty → t.Nonempty → (s * t).Nonempty 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s t : Finset α}
Goal: s.Nonempty → t.Nonempty → (s * t).Nonempty
-- Finset.Nonempty.add
@[to_additive]
theorem Nonempty.mul : s.Nonempty → t.Nonempty → (s * t).Nonempty 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s t : Finset α}
Goal: s.Nonempty → t.Nonempty → (s + t).Nonempty
-- Finset.Nonempty.of_mul_left
@[to_additive]
theorem Nonempty.of_mul_left : (s * t).Nonempty → s.Nonempty 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s t : Finset α}
Goal: (s * t).Nonempty → s.Nonempty
-- Finset.Nonempty.of_add_left
@[to_additive]
theorem Nonempty.of_mul_left : (s * t).Nonempty → s.Nonempty 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s t : Finset α}
Goal: (s + t).Nonempty → s.Nonempty
-- Finset.Nonempty.of_mul_right
@[to_additive]
theorem Nonempty.of_mul_right : (s * t).Nonempty → t.Nonempty 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s t : Finset α}
Goal: (s * t).Nonempty → t.Nonempty
-- Finset.Nonempty.of_add_right
@[to_additive]
theorem Nonempty.of_mul_right : (s * t).Nonempty → t.Nonempty 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s t : Finset α}
Goal: (s + t).Nonempty → t.Nonempty
-- Finset.add_singleton
@[to_additive]
theorem mul_singleton (a : α) : s * {a} = s.image (· * a) 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s : Finset α} (a : α)
Goal: s + {a} = Finset.image (fun x => x + a) s
-- Finset.mul_singleton
@[to_additive]
theorem mul_singleton (a : α) : s * {a} = s.image (· * a) 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s : Finset α} (a : α)
Goal: s * {a} = Finset.image (fun x => x * a) s
-- Finset.singleton_add
@[to_additive]
theorem singleton_mul (a : α) : {a} * s = s.image (a * ·) 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s : Finset α} (a : α)
Goal: {a} + s = Finset.image (fun x => a + x) s
-- Finset.singleton_mul
@[to_additive]
theorem singleton_mul (a : α) : {a} * s = s.image (a * ·) 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s : Finset α} (a : α)
Goal: {a} * s = Finset.image (fun x => a * x) s
-- Finset.singleton_mul_singleton
@[to_additive (attr := simp)]
theorem singleton_mul_singleton (a b : α) : ({a} : Finset α) * {b} = {a * b} 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] (a b : α)
Goal: {a} * {b} = {a * b}
-- Finset.singleton_add_singleton
@[to_additive (attr := simp)]
theorem singleton_mul_singleton (a b : α) : ({a} : Finset α) * {b} = {a * b} 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] (a b : α)
Goal: {a} + {b} = {a + b}
-- Finset.mul_subset_mul
@[to_additive (attr := mono)]
theorem mul_subset_mul : s₁ ⊆ s₂ → t₁ ⊆ t₂ → s₁ * t₁ ⊆ s₂ * t₂ 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s₁ s₂ t₁ t₂ : Finset α}
Goal: s₁ ⊆ s₂ → t₁ ⊆ t₂ → s₁ * t₁ ⊆ s₂ * t₂
-- Finset.add_subset_add
@[to_additive (attr := mono)]
theorem mul_subset_mul : s₁ ⊆ s₂ → t₁ ⊆ t₂ → s₁ * t₁ ⊆ s₂ * t₂ 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s₁ s₂ t₁ t₂ : Finset α}
Goal: s₁ ⊆ s₂ → t₁ ⊆ t₂ → s₁ + t₁ ⊆ s₂ + t₂
-- Finset.mul_subset_mul_left
@[to_additive]
theorem mul_subset_mul_left : t₁ ⊆ t₂ → s * t₁ ⊆ s * t₂ 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s t₁ t₂ : Finset α}
Goal: t₁ ⊆ t₂ → s * t₁ ⊆ s * t₂
-- Finset.add_subset_add_left
@[to_additive]
theorem mul_subset_mul_left : t₁ ⊆ t₂ → s * t₁ ⊆ s * t₂ 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s t₁ t₂ : Finset α}
Goal: t₁ ⊆ t₂ → s + t₁ ⊆ s + t₂
-- Finset.mul_subset_mul_right
@[to_additive]
theorem mul_subset_mul_right : s₁ ⊆ s₂ → s₁ * t ⊆ s₂ * t 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s₁ s₂ t : Finset α}
Goal: s₁ ⊆ s₂ → s₁ * t ⊆ s₂ * t
-- Finset.add_subset_add_right
@[to_additive]
theorem mul_subset_mul_right : s₁ ⊆ s₂ → s₁ * t ⊆ s₂ * t 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s₁ s₂ t : Finset α}
Goal: s₁ ⊆ s₂ → s₁ + t ⊆ s₂ + t
-- Finset.mul_subset_iff
@[to_additive]
theorem mul_subset_iff : s * t ⊆ u ↔ ∀ x ∈ s, ∀ y ∈ t, x * y ∈ u 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s t u : Finset α}
Goal: s * t ⊆ u ↔ ∀ x ∈ s, ∀ y ∈ t, x * y ∈ u
-- Finset.add_subset_iff
@[to_additive]
theorem mul_subset_iff : s * t ⊆ u ↔ ∀ x ∈ s, ∀ y ∈ t, x * y ∈ u 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s t u : Finset α}
Goal: s + t ⊆ u ↔ ∀ x ∈ s, ∀ y ∈ t, x + y ∈ u
-- Finset.union_mul
@[to_additive]
theorem union_mul : (s₁ ∪ s₂) * t = s₁ * t ∪ s₂ * t 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s₁ s₂ t : Finset α}
Goal: (s₁ ∪ s₂) * t = s₁ * t ∪ s₂ * t
-- Finset.union_add
@[to_additive]
theorem union_mul : (s₁ ∪ s₂) * t = s₁ * t ∪ s₂ * t 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s₁ s₂ t : Finset α}
Goal: s₁ ∪ s₂ + t = s₁ + t ∪ (s₂ + t)
-- Finset.add_union
@[to_additive]
theorem mul_union : s * (t₁ ∪ t₂) = s * t₁ ∪ s * t₂ 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s t₁ t₂ : Finset α}
Goal: s + (t₁ ∪ t₂) = s + t₁ ∪ (s + t₂)
-- Finset.mul_union
@[to_additive]
theorem mul_union : s * (t₁ ∪ t₂) = s * t₁ ∪ s * t₂ 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s t₁ t₂ : Finset α}
Goal: s * (t₁ ∪ t₂) = s * t₁ ∪ s * t₂
-- Finset.inter_add_subset
@[to_additive]
theorem inter_mul_subset : s₁ ∩ s₂ * t ⊆ s₁ * t ∩ (s₂ * t) 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s₁ s₂ t : Finset α}
Goal: s₁ ∩ s₂ + t ⊆ (s₁ + t) ∩ (s₂ + t)
-- Finset.inter_mul_subset
@[to_additive]
theorem inter_mul_subset : s₁ ∩ s₂ * t ⊆ s₁ * t ∩ (s₂ * t) 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s₁ s₂ t : Finset α}
Goal: s₁ ∩ s₂ * t ⊆ s₁ * t ∩ (s₂ * t)
-- Finset.add_inter_subset
@[to_additive]
theorem mul_inter_subset : s * (t₁ ∩ t₂) ⊆ s * t₁ ∩ (s * t₂) 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s t₁ t₂ : Finset α}
Goal: s + t₁ ∩ t₂ ⊆ (s + t₁) ∩ (s + t₂)
-- Finset.mul_inter_subset
@[to_additive]
theorem mul_inter_subset : s * (t₁ ∩ t₂) ⊆ s * t₁ ∩ (s * t₂) 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s t₁ t₂ : Finset α}
Goal: s * (t₁ ∩ t₂) ⊆ s * t₁ ∩ (s * t₂)
-- Finset.inter_mul_union_subset_union
@[to_additive]
theorem inter_mul_union_subset_union : s₁ ∩ s₂ * (t₁ ∪ t₂) ⊆ s₁ * t₁ ∪ s₂ * t₂ 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s₁ s₂ t₁ t₂ : Finset α}
Goal: s₁ ∩ s₂ * (t₁ ∪ t₂) ⊆ s₁ * t₁ ∪ s₂ * t₂
-- Finset.inter_add_union_subset_union
@[to_additive]
theorem inter_mul_union_subset_union : s₁ ∩ s₂ * (t₁ ∪ t₂) ⊆ s₁ * t₁ ∪ s₂ * t₂ 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s₁ s₂ t₁ t₂ : Finset α}
Goal: s₁ ∩ s₂ + (t₁ ∪ t₂) ⊆ s₁ + t₁ ∪ (s₂ + t₂)
-- Finset.union_add_inter_subset_union
@[to_additive]
theorem union_mul_inter_subset_union : (s₁ ∪ s₂) * (t₁ ∩ t₂) ⊆ s₁ * t₁ ∪ s₂ * t₂ 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {s₁ s₂ t₁ t₂ : Finset α}
Goal: s₁ ∪ s₂ + t₁ ∩ t₂ ⊆ s₁ + t₁ ∪ (s₂ + t₂)
-- Finset.union_mul_inter_subset_union
@[to_additive]
theorem union_mul_inter_subset_union : (s₁ ∪ s₂) * (t₁ ∩ t₂) ⊆ s₁ * t₁ ∪ s₂ * t₂ 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {s₁ s₂ t₁ t₂ : Finset α}
Goal: (s₁ ∪ s₂) * (t₁ ∩ t₂) ⊆ s₁ * t₁ ∪ s₂ * t₂
-- Finset.subset_add
@[to_additive
      "If a finset `u` is contained in the sum of two sets `s + t`, we can find two finsets
      `s'`, `t'` such that `s' ⊆ s`, `t' ⊆ t` and `u ⊆ s' + t'`."]
theorem subset_mul {s t : Set α} :
    ↑u ⊆ s * t → ∃ s' t' : Finset α, ↑s' ⊆ s ∧ ↑t' ⊆ t ∧ u ⊆ s' * t' 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] {u : Finset α} {s t : Set α}
Goal: ↑u ⊆ s + t → ∃ s' t', ↑s' ⊆ s ∧ ↑t' ⊆ t ∧ u ⊆ s' + t'
-- Finset.subset_mul
@[to_additive
      "If a finset `u` is contained in the sum of two sets `s + t`, we can find two finsets
      `s'`, `t'` such that `s' ⊆ s`, `t' ⊆ t` and `u ⊆ s' + t'`."]
theorem subset_mul {s t : Set α} :
    ↑u ⊆ s * t → ∃ s' t' : Finset α, ↑s' ⊆ s ∧ ↑t' ⊆ t ∧ u ⊆ s' * t' 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] {u : Finset α} {s t : Set α}
Goal: ↑u ⊆ s * t → ∃ s' t', ↑s' ⊆ s ∧ ↑t' ⊆ t ∧ u ⊆ s' * t'
-- Finset.image_mul
@[to_additive]
theorem image_mul : (s * t).image (f : α → β) = s.image f * t.image f 
Arguments: {F : Type u_1} {α : Type u_2} {β : Type u_3} [DecidableEq α] [DecidableEq β] [Mul α] [Mul β] [FunLike F α β] [MulHomClass F α β] (f : F) {s t : Finset α}
Goal: Finset.image (⇑f) (s * t) = Finset.image (⇑f) s * Finset.image (⇑f) t
-- Finset.image_add
@[to_additive]
theorem image_mul : (s * t).image (f : α → β) = s.image f * t.image f 
Arguments: {F : Type u_1} {α : Type u_2} {β : Type u_3} [DecidableEq α] [DecidableEq β] [Add α] [Add β] [FunLike F α β] [AddHomClass F α β] (f : F) {s t : Finset α}
Goal: Finset.image (⇑f) (s + t) = Finset.image (⇑f) s + Finset.image (⇑f) t
-- Finset.coe_singletonMulHom
@[to_additive (attr := simp)]
theorem coe_singletonMulHom : (singletonMulHom : α → Finset α) = singleton 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α]
Goal: ⇑Finset.singletonMulHom = singleton
-- Finset.coe_singletonAddHom
@[to_additive (attr := simp)]
theorem coe_singletonMulHom : (singletonMulHom : α → Finset α) = singleton 
Arguments: {α : Type u_2} [DecidableEq α] [Add α]
Goal: ⇑Finset.singletonAddHom = singleton
-- Finset.singletonMulHom_apply
@[to_additive (attr := simp)]
theorem singletonMulHom_apply (a : α) : singletonMulHom a = {a} 
Arguments: {α : Type u_2} [DecidableEq α] [Mul α] (a : α)
Goal: Finset.singletonMulHom a = {a}
-- Finset.singletonAddHom_apply
@[to_additive (attr := simp)]
theorem singletonMulHom_apply (a : α) : singletonMulHom a = {a} 
Arguments: {α : Type u_2} [DecidableEq α] [Add α] (a : α)
Goal: Finset.singletonAddHom a = {a}
-- Finset.imageMulHom_apply
@[to_additive (attr := simps) "Lift an `AddHom` to `Finset` via `image`"]
def imageMulHom : Finset α →ₙ* Finset β 
Arguments: {F : Type u_1} {α : Type u_2} {β : Type u_3} [DecidableEq α] [DecidableEq β] [Mul α] [Mul β] [FunLike F α β] [MulHomClass F α β] (f : F) (s : Finset α)
Goal: (Finset.imageMulHom f) s = Finset.image (⇑f) s
-- Finset.imageAddHom_apply
@[to_additive (attr := simps) "Lift an `AddHom` to `Finset` via `image`"]
def imageMulHom : Finset α →ₙ* Finset β 
Arguments: {F : Type u_1} {α : Type u_2} {β : Type u_3} [DecidableEq α] [DecidableEq β] [Add α] [Add β] [FunLike F α β] [AddHomClass F α β] (f : F) (s : Finset α)
Goal: (Finset.imageAddHom f) s = Finset.image (⇑f) s
-- Finset.sup_mul_le
@[to_additive (attr := simp (default + 1))]
lemma sup_mul_le [SemilatticeSup β] [OrderBot β] {s t : Finset α} {f : α → β} {a : β} :
    sup (s * t) f ≤ a ↔ ∀ x ∈ s, ∀ y ∈ t, f (x * y) ≤ a 
Arguments: {α : Type u_2} {β : Type u_3} [DecidableEq α] [Mul α] [SemilatticeSup β] [OrderBot β] {s t : Finset α} {f : α → β} {a : β}
Goal: (s * t).sup f ≤ a ↔ ∀ x ∈ s, ∀ y ∈ t, f (x * y) ≤ a
-- Finset.sup_add_le
@[to_additive (attr := simp (default + 1))]
lemma sup_mul_le [SemilatticeSup β] [OrderBot β] {s t : Finset α} {f : α → β} {a : β} :
    sup (s * t) f ≤ a ↔ ∀ x ∈ s, ∀ y ∈ t, f (x * y) ≤ a 
Arguments: {α : Type u_2} {β : Type u_3} [DecidableEq α] [Add α] [SemilatticeSup β] [OrderBot β] {s t : Finset α} {f : α → β} {a : β}
Goal: (s + t).sup f ≤ a ↔ ∀ x ∈ s, ∀ y ∈ t, f (x + y) ≤ a
-- Finset.sup_add_left
@[to_additive]
lemma sup_mul_left [SemilatticeSup β] [OrderBot β] (s t : Finset α) (f : α → β) :
    sup (s * t) f = sup s fun x ↦ sup t (f <| x * ·) 
Arguments: {α : Type u_2} {β : Type u_3} [DecidableEq α] [Add α] [SemilatticeSup β] [OrderBot β] (s t : Finset α) (f : α → β)
Goal: (s + t).sup f = s.sup fun x => t.sup fun x_1 => f (x + x_1)
-- Finset.sup_mul_left
@[to_additive]
lemma sup_mul_left [SemilatticeSup β] [OrderBot β] (s t : Finset α) (f : α → β) :
    sup (s * t) f = sup s fun x ↦ sup t (f <| x * ·) 
Arguments: {α : Type u_2} {β : Type u_3} [DecidableEq α] [Mul α] [SemilatticeSup β] [OrderBot β] (s t : Finset α) (f : α → β)
Goal: (s * t).sup f = s.sup fun x => t.sup fun x_1 => f (x * x_1)
-- Finset.sup_mul_right
@[to_additive]
lemma sup_mul_right [SemilatticeSup β] [OrderBot β] (s t : Finset α) (f : α → β) :
    sup (s * t) f = sup t fun y ↦ sup s (f <| · * y) 
Arguments: {α : Type u_2} {β : Type u_3} [DecidableEq α] [Mul α] [SemilatticeSup β] [OrderBot β] (s t : Finset α) (f : α → β)
Goal: (s * t).sup f = t.sup fun y => s.sup fun x => f (x * y)
-- Finset.sup_add_right
@[to_additive]
lemma sup_mul_right [SemilatticeSup β] [OrderBot β] (s t : Finset α) (f : α → β) :
    sup (s * t) f = sup t fun y ↦ sup s (f <| · * y) 
Arguments: {α : Type u_2} {β : Type u_3} [DecidableEq α] [Add α] [SemilatticeSup β] [OrderBot β] (s t : Finset α) (f : α → β)
Goal: (s + t).sup f = t.sup fun y => s.sup fun x => f (x + y)
-- Finset.le_inf_add
@[to_additive (attr := simp (default + 1))]
lemma le_inf_mul [SemilatticeInf β] [OrderTop β] {s t : Finset α} {f : α → β} {a : β} :
    a ≤ inf (s * t) f ↔ ∀ x ∈ s, ∀ y ∈ t, a ≤ f (x * y) 
Arguments: {α : Type u_2} {β : Type u_3} [DecidableEq α] [Add α] [SemilatticeInf β] [OrderTop β] {s t : Finset α} {f : α → β} {a : β}
Goal: a ≤ (s + t).inf f ↔ ∀ x ∈ s, ∀ y ∈ t, a ≤ f (x + y)
-- Finset.le_inf_mul
@[to_additive (attr := simp (default + 1))]
lemma le_inf_mul [SemilatticeInf β] [OrderTop β] {s t : Finset α} {f : α → β} {a : β} :
    a ≤ inf (s * t) f ↔ ∀ x ∈ s, ∀ y ∈ t, a ≤ f (x * y) 
Arguments: {α : Type u_2} {β : Type u_3} [DecidableEq α] [Mul α] [SemilatticeInf β] [OrderTop β] {s t : Finset α} {f : α → β} {a : β}
Goal: a ≤ (s * t).inf f ↔ ∀ x ∈ s, ∀ y ∈ t, a ≤ f (x * y)
-- Finset.inf_add_left
@[to_additive]
lemma inf_mul_left [SemilatticeInf β] [OrderTop β] (s t : Finset α) (f : α → β) :
    inf (s * t) f = inf s fun x ↦ inf t (f <| x * ·) 
Arguments: {α : Type u_2} {β : Type u_3} [DecidableEq α] [Add α] [SemilatticeInf β] [OrderTop β] (s t : Finset α) (f : α → β)
Goal: (s + t).inf f = s.inf fun x => t.inf fun x_1 => f (x + x_1)
-- Finset.inf_mul_left
@[to_additive]
lemma inf_mul_left [SemilatticeInf β] [OrderTop β] (s t : Finset α) (f : α → β) :
    inf (s * t) f = inf s fun x ↦ inf t (f <| x * ·) 
Arguments: {α : Type u_2} {β : Type u_3} [DecidableEq α] [Mul α] [SemilatticeInf β] [OrderTop β] (s t : Finset α) (f : α → β)
Goal: (s * t).inf f = s.inf fun x => t.inf fun x_1 => f (x * x_1)
-- Finset.inf_add_right
@[to_additive]
lemma inf_mul_right [SemilatticeInf β] [OrderTop β] (s t : Finset α) (f : α → β) :
    inf (s * t) f = inf t fun y ↦ inf s (f <| · * y) 
Arguments: {α : Type u_2} {β : Type u_3} [DecidableEq α] [Add α] [SemilatticeInf β] [OrderTop β] (s t : Finset α) (f : α → β)
Goal: (s + t).inf f = t.inf fun y => s.inf fun x => f (x + y)
-- Finset.inf_mul_right
@[to_additive]
lemma inf_mul_right [SemilatticeInf β] [OrderTop β] (s t : Finset α) (f : α → β) :
    inf (s * t) f = inf t fun y ↦ inf s (f <| · * y) 
Arguments: {α : Type u_2} {β : Type u_3} [DecidableEq α] [Mul α] [SemilatticeInf β] [OrderTop β] (s t : Finset α) (f : α → β)
Goal: (s * t).inf f = t.inf fun y => s.inf fun x => f (x * y)
-- Finset.div_def
@[to_additive]
theorem div_def : s / t = (s ×ˢ t).image fun p : α × α => p.1 / p.2 
Arguments: {α : Type u_2} [DecidableEq α] [Div α] {s t : Finset α}
Goal: s / t = Finset.image (fun p => p.1 / p.2) (s ×ˢ t)
-- Finset.sub_def
@[to_additive]
theorem div_def : s / t = (s ×ˢ t).image fun p : α × α => p.1 / p.2 
Arguments: {α : Type u_2} [DecidableEq α] [Sub α] {s t : Finset α}
Goal: s - t = Finset.image (fun p => p.1 - p.2) (s ×ˢ t)
-- Finset.image_sub_product
@[to_additive]
theorem image_div_product : ((s ×ˢ t).image fun x : α × α => x.fst / x.snd) = s / t 
Arguments: {α : Type u_2} [DecidableEq α] [Sub α] {s t : Finset α}
Goal: Finset.image (fun x => x.1 - x.2) (s ×ˢ t) = s - t
-- Finset.image_div_product
@[to_additive]
theorem image_div_product : ((s ×ˢ t).image fun x : α × α => x.fst / x.snd) = s / t 
Arguments: {α : Type u_2} [DecidableEq α] [Div α] {s t : Finset α}
Goal: Finset.image (fun x => x.1 / x.2) (s ×ˢ t) = s / t
-- Finset.mem_div
@[to_additive]
theorem mem_div : a ∈ s / t ↔ ∃ b ∈ s, ∃ c ∈ t, b / c = a 
Arguments: {α : Type u_2} [DecidableEq α] [Div α] {s t : Finset α} {a : α}
Goal: a ∈ s / t ↔ ∃ b ∈ s, ∃ c ∈ t, b / c = a
-- Finset.mem_sub
@[to_additive]
theorem mem_div : a ∈ s / t ↔ ∃ b ∈ s, ∃ c ∈ t, b / c = a 
Arguments: {α : Type u_2} [DecidableEq α] [Sub α] {s t : Finset α} {a : α}
Goal: a ∈ s - t ↔ ∃ b ∈ s, ∃ c ∈ t, b - c = a
-- Finset.coe_sub
@[to_additive (attr := simp, norm_cast)]
theorem coe_div (s t : Finset α) : (↑(s / t) : Set α) = ↑s / ↑t 
Arguments: {α : Type u_2} [DecidableEq α] [Sub α] (s t : Finset α)
Goal: ↑(s - t) = ↑s - ↑t
-- Finset.coe_div
@[to_additive (attr := simp, norm_cast)]
theorem coe_div (s t : Finset α) : (↑(s / t) : Set α) = ↑s / ↑t 
Arguments: {α : Type u_2} [DecidableEq α] [Div α] (s t : Finset α)
Goal: ↑(s / t) = ↑s / ↑t
-- Finset.sub_mem_sub
@[to_additive]
theorem div_mem_div : a ∈ s → b ∈ t → a / b ∈ s / t 
Arguments: {α : Type u_2} [DecidableEq α] [Sub α] {s t : Finset α} {a b : α}
Goal: a ∈ s → b ∈ t → a - b ∈ s - t
-- Finset.div_mem_div
@[to_additive]
theorem div_mem_div : a ∈ s → b ∈ t → a / b ∈ s / t 
Arguments: {α : Type u_2} [DecidableEq α] [Div α] {s t : Finset α} {a b : α}
Goal: a ∈ s → b ∈ t → a / b ∈ s / t