ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Rat.cast_mkRat_of_ne_zero
@[norm_cast]
lemma cast_mkRat_of_ne_zero (a : ℤ) {b : ℕ} (hb : (b : α) ≠ 0) : (mkRat a b : α) = a / b 
Arguments: {α : Type u_3} [DivisionRing α] (a : ℤ) {b : ℕ} (hb : ↑b ≠ 0)
Goal: ↑(mkRat a b) = ↑a / ↑b
-- Rat.cast_add_of_ne_zero
@[norm_cast]
lemma cast_add_of_ne_zero {q r : ℚ} (hq : (q.den : α) ≠ 0) (hr : (r.den : α) ≠ 0) :
    (q + r : ℚ) = (q + r : α) 
Arguments: {α : Type u_3} [DivisionRing α] {q r : ℚ} (hq : ↑q.den ≠ 0) (hr : ↑r.den ≠ 0)
Goal: ↑(q + r) = ↑q + ↑r
-- Rat.cast_neg
@[simp, norm_cast] lemma cast_neg (q : ℚ) : ↑(-q) = (-q : α) 
Arguments: {α : Type u_3} [DivisionRing α] (q : ℚ)
Goal: ↑(-q) = -↑q
-- Rat.cast_sub_of_ne_zero
@[norm_cast] lemma cast_sub_of_ne_zero (hp : (p.den : α) ≠ 0) (hq : (q.den : α) ≠ 0) :
    ↑(p - q) = (p - q : α) 
Arguments: {α : Type u_3} [DivisionRing α] {p q : ℚ} (hp : ↑p.den ≠ 0) (hq : ↑q.den ≠ 0)
Goal: ↑(p - q) = ↑p - ↑q
-- Rat.cast_mul_of_ne_zero
@[norm_cast] lemma cast_mul_of_ne_zero (hp : (p.den : α) ≠ 0) (hq : (q.den : α) ≠ 0) :
    ↑(p * q) = (p * q : α) 
Arguments: {α : Type u_3} [DivisionRing α] {p q : ℚ} (hp : ↑p.den ≠ 0) (hq : ↑q.den ≠ 0)
Goal: ↑(p * q) = ↑p * ↑q
-- Rat.cast_inv_of_ne_zero
@[norm_cast]
lemma cast_inv_of_ne_zero (hq : (q.num : α) ≠ 0) : ↑(q⁻¹) = (q⁻¹ : α) 
Arguments: {α : Type u_3} [DivisionRing α] {q : ℚ} (hq : ↑q.num ≠ 0)
Goal: ↑q⁻¹ = (↑q)⁻¹
-- Rat.cast_div_of_ne_zero
@[norm_cast] lemma cast_div_of_ne_zero (hp : (p.den : α) ≠ 0) (hq : (q.num : α) ≠ 0) :
    ↑(p / q) = (p / q : α) 
Arguments: {α : Type u_3} [DivisionRing α] {p q : ℚ} (hp : ↑p.den ≠ 0) (hq : ↑q.num ≠ 0)
Goal: ↑(p / q) = ↑p / ↑q
-- map_nnratCast
@[simp] lemma map_nnratCast [DivisionSemiring α] [DivisionSemiring β] [RingHomClass F α β] (f : F)
    (q : ℚ≥0) : f q = q 
Arguments: {F : Type u_1} {α : Type u_3} {β : Type u_4} [FunLike F α β] [DivisionSemiring α] [DivisionSemiring β] [RingHomClass F α β] (f : F) (q : ℚ≥0)
Goal: f ↑q = ↑q
-- eq_nnratCast
@[simp]
lemma eq_nnratCast [DivisionSemiring α] [FunLike F ℚ≥0 α] [RingHomClass F ℚ≥0 α] (f : F) (q : ℚ≥0) :
    f q = q 
Arguments: {F : Type u_1} {α : Type u_3} [DivisionSemiring α] [FunLike F ℚ≥0 α] [RingHomClass F ℚ≥0 α] (f : F) (q : ℚ≥0)
Goal: f q = ↑q
-- map_ratCast
@[simp]
theorem map_ratCast [DivisionRing α] [DivisionRing β] [RingHomClass F α β] (f : F) (q : ℚ) :
    f q = q 
Arguments: {F : Type u_1} {α : Type u_3} {β : Type u_4} [FunLike F α β] [DivisionRing α] [DivisionRing β] [RingHomClass F α β] (f : F) (q : ℚ)
Goal: f ↑q = ↑q
-- eq_ratCast
@[simp] lemma eq_ratCast [DivisionRing α] [FunLike F ℚ α] [RingHomClass F ℚ α] (f : F) (q : ℚ) :
    f q = q 
Arguments: {F : Type u_1} {α : Type u_3} [DivisionRing α] [FunLike F ℚ α] [RingHomClass F ℚ α] (f : F) (q : ℚ)
Goal: f q = ↑q
-- MonoidWithZeroHom.ext_rat'
theorem ext_rat' (h : ∀ m : ℤ, f m = g m) : f = g 
Arguments: {F : Type u_1} {M₀ : Type u_5} [MonoidWithZero M₀] [FunLike F ℚ M₀] [MonoidWithZeroHomClass F ℚ M₀] {f g : F} (h : ∀ (m : ℤ), f ↑m = g ↑m)
Goal: f = g
-- MonoidWithZeroHom.ext_rat
@[ext]
theorem ext_rat {f g : ℚ →*₀ M₀}
    (h : f.comp (Int.castRingHom ℚ : ℤ →*₀ ℚ) = g.comp (Int.castRingHom ℚ)) : f = g 
Arguments: {M₀ : Type u_5} [MonoidWithZero M₀] {f g : ℚ →*₀ M₀} (h : f.comp ↑(Int.castRingHom ℚ) = g.comp ↑(Int.castRingHom ℚ))
Goal: f = g
-- MonoidWithZeroHom.ext_rat_on_pnat
theorem ext_rat_on_pnat (same_on_neg_one : f (-1) = g (-1))
    (same_on_pnat : ∀ n : ℕ, 0 < n → f n = g n) : f = g 
Arguments: {F : Type u_1} {M₀ : Type u_5} [MonoidWithZero M₀] [FunLike F ℚ M₀] [MonoidWithZeroHomClass F ℚ M₀] {f g : F} (same_on_neg_one : f (-1) = g (-1)) (same_on_pnat : ∀ (n : ℕ), 0 < n → f ↑n = g ↑n)
Goal: f = g
-- RingHom.ext_rat
theorem RingHom.ext_rat {R : Type*} [Semiring R] [FunLike F ℚ R] [RingHomClass F ℚ R] (f g : F) :
    f = g 
Arguments: {F : Type u_1} {R : Type u_5} [Semiring R] [FunLike F ℚ R] [RingHomClass F ℚ R] (f g : F)
Goal: f = g
-- Finsupp.mem_support_toFun
structure Finsupp (α : Type*) (M : Type*) [Zero M] where
    support : Finset α
    toFun : α → M
    mem_support_toFun : ∀ a, a ∈ support ↔ toFun a ≠ 0
Arguments: {α : Type u_13} {M : Type u_14} [Zero M] (self : α →₀ M) (a : α)
Goal: a ∈ self.support ↔ self.toFun a ≠ 0
-- Finsupp.ext
@[ext]
theorem ext {f g : α →₀ M} (h : ∀ a, f a = g a) : f = g 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f g : α →₀ M} (h : ∀ (a : α), f a = g a)
Goal: f = g
-- Finsupp.ne_iff
lemma ne_iff {f g : α →₀ M} : f ≠ g ↔ ∃ a, f a ≠ g a 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f g : α →₀ M}
Goal: f ≠ g ↔ ∃ a, f a ≠ g a
-- Finsupp.coe_mk
@[simp, norm_cast]
theorem coe_mk (f : α → M) (s : Finset α) (h : ∀ a, a ∈ s ↔ f a ≠ 0) : ⇑(⟨s, f, h⟩ : α →₀ M) = f 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (f : α → M) (s : Finset α) (h : ∀ (a : α), a ∈ s ↔ f a ≠ 0)
Goal: ⇑{ support := s, toFun := f, mem_support_toFun := h } = f
-- Finsupp.coe_zero
@[simp, norm_cast] lemma coe_zero : ⇑(0 : α →₀ M) = 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M]
Goal: ⇑0 = 0
-- Finsupp.zero_apply
theorem zero_apply {a : α} : (0 : α →₀ M) a = 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a : α}
Goal: 0 a = 0
-- Finsupp.support_zero
@[simp]
theorem support_zero : (0 : α →₀ M).support = ∅ 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M]
Goal: Finsupp.support 0 = ∅
-- Finsupp.mem_support_iff
@[simp]
theorem mem_support_iff {f : α →₀ M} : ∀ {a : α}, a ∈ f.support ↔ f a ≠ 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f : α →₀ M} {a : α}
Goal: a ∈ f.support ↔ f a ≠ 0
-- Finsupp.fun_support_eq
@[simp, norm_cast]
theorem fun_support_eq (f : α →₀ M) : Function.support f = f.support 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (f : α →₀ M)
Goal: Function.support ⇑f = ↑f.support
-- Finsupp.not_mem_support_iff
theorem not_mem_support_iff {f : α →₀ M} {a} : a ∉ f.support ↔ f a = 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f : α →₀ M} {a : α}
Goal: a ∉ f.support ↔ f a = 0
-- Finsupp.coe_eq_zero
@[simp, norm_cast]
theorem coe_eq_zero {f : α →₀ M} : (f : α → M) = 0 ↔ f = 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f : α →₀ M}
Goal: ⇑f = 0 ↔ f = 0
-- Finsupp.ext_iff'
theorem ext_iff' {f g : α →₀ M} : f = g ↔ f.support = g.support ∧ ∀ x ∈ f.support, f x = g x 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f g : α →₀ M}
Goal: f = g ↔ f.support = g.support ∧ ∀ x ∈ f.support, f x = g x
-- Finsupp.support_eq_empty
@[simp]
theorem support_eq_empty {f : α →₀ M} : f.support = ∅ ↔ f = 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f : α →₀ M}
Goal: f.support = ∅ ↔ f = 0
-- Finsupp.support_nonempty_iff
theorem support_nonempty_iff {f : α →₀ M} : f.support.Nonempty ↔ f ≠ 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f : α →₀ M}
Goal: f.support.Nonempty ↔ f ≠ 0
-- Finsupp.card_support_eq_zero
theorem card_support_eq_zero {f : α →₀ M} : card f.support = 0 ↔ f = 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f : α →₀ M}
Goal: f.support.card = 0 ↔ f = 0
-- Finsupp.finite_support
theorem finite_support (f : α →₀ M) : Set.Finite (Function.support f) 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (f : α →₀ M)
Goal: (Function.support ⇑f).Finite
-- Finsupp.support_subset_iff
theorem support_subset_iff {s : Set α} {f : α →₀ M} :
    ↑f.support ⊆ s ↔ ∀ a ∉ s, f a = 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {s : Set α} {f : α →₀ M}
Goal: ↑f.support ⊆ s ↔ ∀ a ∉ s, f a = 0
-- Finsupp.equivFunOnFinite_symm_apply_support
@[simps]
def equivFunOnFinite [Finite α] : (α →₀ M) ≃ (α → M) 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] [Finite α] (f : α → M)
Goal: (Finsupp.equivFunOnFinite.symm f).support = ⋯.toFinset
-- Finsupp.equivFunOnFinite_apply
@[simps]
def equivFunOnFinite [Finite α] : (α →₀ M) ≃ (α → M) 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] [Finite α]
Goal: ∀ (a : α →₀ M) (a_1 : α), Finsupp.equivFunOnFinite a a_1 = a a_1
-- Finsupp.equivFunOnFinite_symm_apply_toFun
@[simps]
def equivFunOnFinite [Finite α] : (α →₀ M) ≃ (α → M) 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] [Finite α] (f : α → M)
Goal: ∀ (a : α), (Finsupp.equivFunOnFinite.symm f) a = f a
-- Finsupp.equivFunOnFinite_symm_coe
@[simp]
theorem equivFunOnFinite_symm_coe {α} [Finite α] (f : α →₀ M) : equivFunOnFinite.symm f = f 
Arguments: {M : Type u_5} [Zero M] {α : Type u_13} [Finite α] (f : α →₀ M)
Goal: Finsupp.equivFunOnFinite.symm ⇑f = f
-- Equiv.finsuppUnique_apply
@[simps!]
noncomputable def _root_.Equiv.finsuppUnique {ι : Type*} [Unique ι] : (ι →₀ M) ≃ M 
Arguments: {M : Type u_5} [Zero M] {ι : Type u_13} [Unique ι]
Goal: ∀ (a : ι →₀ M), Equiv.finsuppUnique a = a default
-- Equiv.finsuppUnique_symm_apply_support_val
@[simps!]
noncomputable def _root_.Equiv.finsuppUnique {ι : Type*} [Unique ι] : (ι →₀ M) ≃ M 
Arguments: {M : Type u_5} [Zero M] {ι : Type u_13} [Unique ι]
Goal: ∀ (a : M), (Equiv.finsuppUnique.symm a).support.val = Multiset.map Subtype.val Finset.univ.val
-- Equiv.finsuppUnique_symm_apply_toFun
@[simps!]
noncomputable def _root_.Equiv.finsuppUnique {ι : Type*} [Unique ι] : (ι →₀ M) ≃ M 
Arguments: {M : Type u_5} [Zero M] {ι : Type u_13} [Unique ι]
Goal: ∀ (a : M) (a_1 : ι), (Equiv.finsuppUnique.symm a) a_1 = a
-- Finsupp.unique_ext
@[ext]
theorem unique_ext [Unique α] {f g : α →₀ M} (h : f default = g default) : f = g 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] [Unique α] {f g : α →₀ M} (h : f default = g default)
Goal: f = g
-- Finsupp.unique_ext_iff
protected theorem unique_ext_iff [Unique α] {f g : α →₀ M} : f = g ↔ f default = g default 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] [Unique α] {f g : α →₀ M}
Goal: f = g ↔ f default = g default
-- Finsupp.single_apply
theorem single_apply [Decidable (a = a')] : single a b a' = if a = a' then b else 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a a' : α} {b : M} [Decidable (a = a')]
Goal: (Finsupp.single a b) a' = if a = a' then b else 0
-- Finsupp.single_apply_left
theorem single_apply_left {f : α → β} (hf : Function.Injective f) (x z : α) (y : M) :
    single (f x) y (f z) = single x y z 
Arguments: {α : Type u_1} {β : Type u_2} {M : Type u_5} [Zero M] {f : α → β} (hf : Function.Injective f) (x z : α) (y : M)
Goal: (Finsupp.single (f x) y) (f z) = (Finsupp.single x y) z
-- Finsupp.single_eq_set_indicator
theorem single_eq_set_indicator : ⇑(single a b) = Set.indicator {a} fun _ => b 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a : α} {b : M}
Goal: ⇑(Finsupp.single a b) = {a}.indicator fun x => b
-- Finsupp.single_eq_same
@[simp]
theorem single_eq_same : (single a b : α →₀ M) a = b 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a : α} {b : M}
Goal: (Finsupp.single a b) a = b
-- Finsupp.single_eq_of_ne
@[simp]
theorem single_eq_of_ne (h : a ≠ a') : (single a b : α →₀ M) a' = 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a a' : α} {b : M} (h : a ≠ a')
Goal: (Finsupp.single a b) a' = 0
-- Finsupp.single_eq_update
theorem single_eq_update [DecidableEq α] (a : α) (b : M) :
    ⇑(single a b) = Function.update (0 : _) a b 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] [DecidableEq α] (a : α) (b : M)
Goal: ⇑(Finsupp.single a b) = Function.update 0 a b
-- Finsupp.single_eq_pi_single
theorem single_eq_pi_single [DecidableEq α] (a : α) (b : M) : ⇑(single a b) = Pi.single a b 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] [DecidableEq α] (a : α) (b : M)
Goal: ⇑(Finsupp.single a b) = Pi.single a b
-- Finsupp.single_zero
@[simp]
theorem single_zero (a : α) : (single a 0 : α →₀ M) = 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (a : α)
Goal: Finsupp.single a 0 = 0
-- Finsupp.single_of_single_apply
theorem single_of_single_apply (a a' : α) (b : M) :
    single a ((single a' b) a) = single a' (single a' b) a 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (a a' : α) (b : M)
Goal: Finsupp.single a ((Finsupp.single a' b) a) = (Finsupp.single a' (Finsupp.single a' b)) a
-- Finsupp.support_single_ne_zero
theorem support_single_ne_zero (a : α) (hb : b ≠ 0) : (single a b).support = {a} 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {b : M} (a : α) (hb : b ≠ 0)
Goal: (Finsupp.single a b).support = {a}
-- Finsupp.support_single_subset
theorem support_single_subset : (single a b).support ⊆ {a} 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a : α} {b : M}
Goal: (Finsupp.single a b).support ⊆ {a}
-- Finsupp.single_apply_mem
theorem single_apply_mem (x) : single a b x ∈ ({0, b} : Set M) 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a : α} {b : M} (x : α)
Goal: (Finsupp.single a b) x ∈ {0, b}
-- Finsupp.range_single_subset
theorem range_single_subset : Set.range (single a b) ⊆ {0, b} 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a : α} {b : M}
Goal: Set.range ⇑(Finsupp.single a b) ⊆ {0, b}
-- Finsupp.single_injective
theorem single_injective (a : α) : Function.Injective (single a : M → α →₀ M) 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (a : α)
Goal: Function.Injective (Finsupp.single a)
-- Finsupp.single_apply_eq_zero
theorem single_apply_eq_zero {a x : α} {b : M} : single a b x = 0 ↔ x = a → b = 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a x : α} {b : M}
Goal: (Finsupp.single a b) x = 0 ↔ x = a → b = 0
-- Finsupp.single_apply_ne_zero
theorem single_apply_ne_zero {a x : α} {b : M} : single a b x ≠ 0 ↔ x = a ∧ b ≠ 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a x : α} {b : M}
Goal: (Finsupp.single a b) x ≠ 0 ↔ x = a ∧ b ≠ 0
-- Finsupp.mem_support_single
theorem mem_support_single (a a' : α) (b : M) : a ∈ (single a' b).support ↔ a = a' ∧ b ≠ 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (a a' : α) (b : M)
Goal: a ∈ (Finsupp.single a' b).support ↔ a = a' ∧ b ≠ 0
-- Finsupp.eq_single_iff
theorem eq_single_iff {f : α →₀ M} {a b} : f = single a b ↔ f.support ⊆ {a} ∧ f a = b 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f : α →₀ M} {a : α} {b : M}
Goal: f = Finsupp.single a b ↔ f.support ⊆ {a} ∧ f a = b
-- Finsupp.single_eq_single_iff
theorem single_eq_single_iff (a₁ a₂ : α) (b₁ b₂ : M) :
    single a₁ b₁ = single a₂ b₂ ↔ a₁ = a₂ ∧ b₁ = b₂ ∨ b₁ = 0 ∧ b₂ = 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (a₁ a₂ : α) (b₁ b₂ : M)
Goal: Finsupp.single a₁ b₁ = Finsupp.single a₂ b₂ ↔ a₁ = a₂ ∧ b₁ = b₂ ∨ b₁ = 0 ∧ b₂ = 0
-- Finsupp.single_left_injective
theorem single_left_injective (h : b ≠ 0) : Function.Injective fun a : α => single a b 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {b : M} (h : b ≠ 0)
Goal: Function.Injective fun a => Finsupp.single a b
-- Finsupp.single_left_inj
theorem single_left_inj (h : b ≠ 0) : single a b = single a' b ↔ a = a' 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a a' : α} {b : M} (h : b ≠ 0)
Goal: Finsupp.single a b = Finsupp.single a' b ↔ a = a'
-- Finsupp.support_single_ne_bot
theorem support_single_ne_bot (i : α) (h : b ≠ 0) : (single i b).support ≠ ⊥ 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {b : M} (i : α) (h : b ≠ 0)
Goal: (Finsupp.single i b).support ≠ ⊥
-- Finsupp.support_single_disjoint
theorem support_single_disjoint {b' : M} (hb : b ≠ 0) (hb' : b' ≠ 0) {i j : α} :
    Disjoint (single i b).support (single j b').support ↔ i ≠ j 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {b b' : M} (hb : b ≠ 0) (hb' : b' ≠ 0) {i j : α}
Goal: Disjoint (Finsupp.single i b).support (Finsupp.single j b').support ↔ i ≠ j
-- Finsupp.single_eq_zero
@[simp]
theorem single_eq_zero : single a b = 0 ↔ b = 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a : α} {b : M}
Goal: Finsupp.single a b = 0 ↔ b = 0
-- Finsupp.single_swap
theorem single_swap (a₁ a₂ : α) (b : M) : single a₁ b a₂ = single a₂ b a₁ 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (a₁ a₂ : α) (b : M)
Goal: (Finsupp.single a₁ b) a₂ = (Finsupp.single a₂ b) a₁
-- Finsupp.unique_single
theorem unique_single [Unique α] (x : α →₀ M) : x = single default (x default) 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] [Unique α] (x : α →₀ M)
Goal: x = Finsupp.single default (x default)
-- Finsupp.unique_single_eq_iff
@[simp]
theorem unique_single_eq_iff [Unique α] {b' : M} : single a b = single a' b' ↔ b = b' 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a a' : α} {b : M} [Unique α] {b' : M}
Goal: Finsupp.single a b = Finsupp.single a' b' ↔ b = b'
-- Finsupp.apply_single
lemma apply_single [AddCommMonoid N] [AddCommMonoid P]
    {F : Type*} [FunLike F N P] [AddMonoidHomClass F N P] (e : F)
    (a : α) (n : N) (b : α) :
    e ((single a n) b) = single a (e n) b 
Arguments: {α : Type u_1} {N : Type u_7} {P : Type u_8} [AddCommMonoid N] [AddCommMonoid P] {F : Type u_13} [FunLike F N P] [AddMonoidHomClass F N P] (e : F) (a : α) (n : N) (b : α)
Goal: e ((Finsupp.single a n) b) = (Finsupp.single a (e n)) b
-- Finsupp.support_eq_singleton
theorem support_eq_singleton {f : α →₀ M} {a : α} :
    f.support = {a} ↔ f a ≠ 0 ∧ f = single a (f a) 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f : α →₀ M} {a : α}
Goal: f.support = {a} ↔ f a ≠ 0 ∧ f = Finsupp.single a (f a)
-- Finsupp.support_eq_singleton'
theorem support_eq_singleton' {f : α →₀ M} {a : α} :
    f.support = {a} ↔ ∃ b ≠ 0, f = single a b 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f : α →₀ M} {a : α}
Goal: f.support = {a} ↔ ∃ b, b ≠ 0 ∧ f = Finsupp.single a b
-- Finsupp.card_support_eq_one
theorem card_support_eq_one {f : α →₀ M} :
    card f.support = 1 ↔ ∃ a, f a ≠ 0 ∧ f = single a (f a) 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f : α →₀ M}
Goal: f.support.card = 1 ↔ ∃ a, f a ≠ 0 ∧ f = Finsupp.single a (f a)
-- Finsupp.card_support_eq_one'
theorem card_support_eq_one' {f : α →₀ M} :
    card f.support = 1 ↔ ∃ a, ∃ b ≠ 0, f = single a b 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f : α →₀ M}
Goal: f.support.card = 1 ↔ ∃ a b, b ≠ 0 ∧ f = Finsupp.single a b
-- Finsupp.support_subset_singleton
theorem support_subset_singleton {f : α →₀ M} {a : α} : f.support ⊆ {a} ↔ f = single a (f a) 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f : α →₀ M} {a : α}
Goal: f.support ⊆ {a} ↔ f = Finsupp.single a (f a)
-- Finsupp.support_subset_singleton'
theorem support_subset_singleton' {f : α →₀ M} {a : α} : f.support ⊆ {a} ↔ ∃ b, f = single a b 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f : α →₀ M} {a : α}
Goal: f.support ⊆ {a} ↔ ∃ b, f = Finsupp.single a b
-- Finsupp.card_support_le_one
theorem card_support_le_one [Nonempty α] {f : α →₀ M} :
    card f.support ≤ 1 ↔ ∃ a, f = single a (f a) 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] [Nonempty α] {f : α →₀ M}
Goal: f.support.card ≤ 1 ↔ ∃ a, f = Finsupp.single a (f a)
-- Finsupp.card_support_le_one'
theorem card_support_le_one' [Nonempty α] {f : α →₀ M} :
    card f.support ≤ 1 ↔ ∃ a b, f = single a b 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] [Nonempty α] {f : α →₀ M}
Goal: f.support.card ≤ 1 ↔ ∃ a b, f = Finsupp.single a b
-- Finsupp.equivFunOnFinite_single
@[simp]
theorem equivFunOnFinite_single [DecidableEq α] [Finite α] (x : α) (m : M) :
    Finsupp.equivFunOnFinite (Finsupp.single x m) = Pi.single x m 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] [DecidableEq α] [Finite α] (x : α) (m : M)
Goal: Finsupp.equivFunOnFinite (Finsupp.single x m) = Pi.single x m
-- Finsupp.equivFunOnFinite_symm_single
@[simp]
theorem equivFunOnFinite_symm_single [DecidableEq α] [Finite α] (x : α) (m : M) :
    Finsupp.equivFunOnFinite.symm (Pi.single x m) = Finsupp.single x m 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] [DecidableEq α] [Finite α] (x : α) (m : M)
Goal: Finsupp.equivFunOnFinite.symm (Pi.single x m) = Finsupp.single x m
-- Finsupp.coe_update
@[simp, norm_cast]
theorem coe_update [DecidableEq α] : (f.update a b : α → M) = Function.update f a b 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (f : α →₀ M) (a : α) (b : M) [DecidableEq α]
Goal: ⇑(f.update a b) = Function.update (⇑f) a b
-- Finsupp.update_self
@[simp]
theorem update_self : f.update a (f a) = f 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (f : α →₀ M) (a : α)
Goal: f.update a (f a) = f
-- Finsupp.zero_update
@[simp]
theorem zero_update : update 0 a b = single a b 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (a : α) (b : M)
Goal: Finsupp.update 0 a b = Finsupp.single a b
-- Finsupp.support_update
theorem support_update [DecidableEq α] [DecidableEq M] :
    support (f.update a b) = if b = 0 then f.support.erase a else insert a f.support 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (f : α →₀ M) (a : α) (b : M) [DecidableEq α] [DecidableEq M]
Goal: (f.update a b).support = if b = 0 then f.support.erase a else insert a f.support
-- Finsupp.support_update_zero
@[simp]
theorem support_update_zero [DecidableEq α] : support (f.update a 0) = f.support.erase a 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (f : α →₀ M) (a : α) [DecidableEq α]
Goal: (f.update a 0).support = f.support.erase a
-- Finsupp.support_update_ne_zero
theorem support_update_ne_zero [DecidableEq α] (h : b ≠ 0) :
    support (f.update a b) = insert a f.support 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (f : α →₀ M) (a : α) {b : M} [DecidableEq α] (h : b ≠ 0)
Goal: (f.update a b).support = insert a f.support
-- Finsupp.support_update_subset
theorem support_update_subset [DecidableEq α] [DecidableEq M] :
    support (f.update a b) ⊆ insert a f.support 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (f : α →₀ M) (a : α) {b : M} [DecidableEq α] [DecidableEq M]
Goal: (f.update a b).support ⊆ insert a f.support
-- Finsupp.update_comm
theorem update_comm (f : α →₀ M) {a₁ a₂ : α} (h : a₁ ≠ a₂) (m₁ m₂ : M) :
    update (update f a₁ m₁) a₂ m₂ = update (update f a₂ m₂) a₁ m₁ 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (f : α →₀ M) {a₁ a₂ : α} (h : a₁ ≠ a₂) (m₁ m₂ : M)
Goal: (f.update a₁ m₁).update a₂ m₂ = (f.update a₂ m₂).update a₁ m₁
-- Finsupp.update_idem
@[simp] theorem update_idem (f : α →₀ M) (a : α) (b c : M) :
    update (update f a b) a c = update f a c 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (f : α →₀ M) (a : α) (b c : M)
Goal: (f.update a b).update a c = f.update a c
-- Finsupp.support_erase
@[simp]
theorem support_erase [DecidableEq α] {a : α} {f : α →₀ M} :
    (f.erase a).support = f.support.erase a 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] [DecidableEq α] {a : α} {f : α →₀ M}
Goal: (Finsupp.erase a f).support = f.support.erase a
-- Finsupp.erase_same
@[simp]
theorem erase_same {a : α} {f : α →₀ M} : (f.erase a) a = 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a : α} {f : α →₀ M}
Goal: (Finsupp.erase a f) a = 0
-- Finsupp.erase_ne
@[simp]
theorem erase_ne {a a' : α} {f : α →₀ M} (h : a' ≠ a) : (f.erase a) a' = f a' 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a a' : α} {f : α →₀ M} (h : a' ≠ a)
Goal: (Finsupp.erase a f) a' = f a'
-- Finsupp.erase_apply
theorem erase_apply [DecidableEq α] {a a' : α} {f : α →₀ M} :
    f.erase a a' = if a' = a then 0 else f a' 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] [DecidableEq α] {a a' : α} {f : α →₀ M}
Goal: (Finsupp.erase a f) a' = if a' = a then 0 else f a'
-- Finsupp.erase_single
@[simp]
theorem erase_single {a : α} {b : M} : erase a (single a b) = 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a : α} {b : M}
Goal: Finsupp.erase a (Finsupp.single a b) = 0
-- Finsupp.erase_single_ne
theorem erase_single_ne {a a' : α} {b : M} (h : a ≠ a') : erase a (single a' b) = single a' b 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {a a' : α} {b : M} (h : a ≠ a')
Goal: Finsupp.erase a (Finsupp.single a' b) = Finsupp.single a' b
-- Finsupp.erase_of_not_mem_support
@[simp]
theorem erase_of_not_mem_support {f : α →₀ M} {a} (haf : a ∉ f.support) : erase a f = f 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] {f : α →₀ M} {a : α} (haf : a ∉ f.support)
Goal: Finsupp.erase a f = f
-- Finsupp.erase_zero
@[simp, nolint simpNF] -- Porting note: simpNF linter claims simp can prove this, it can not
theorem erase_zero (a : α) : erase a (0 : α →₀ M) = 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (a : α)
Goal: Finsupp.erase a 0 = 0
-- Finsupp.erase_eq_update_zero
theorem erase_eq_update_zero (f : α →₀ M) (a : α) : f.erase a = update f a 0 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (f : α →₀ M) (a : α)
Goal: Finsupp.erase a f = f.update a 0
-- Finsupp.erase_update_of_ne
theorem erase_update_of_ne (f : α →₀ M) {a a' : α} (ha : a ≠ a') (b : M) :
    erase a (update f a' b) = update (erase a f) a' b 
Arguments: {α : Type u_1} {M : Type u_5} [Zero M] (f : α →₀ M) {a a' : α} (ha : a ≠ a') (b : M)
Goal: Finsupp.erase a (f.update a' b) = (Finsupp.erase a f).update a' b