ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Polynomial.smeval_neg_nat
File: Mathlib/Algebra/Polynomial/Smeval.lean

Proof steps:
state_before: R : Type u_1
inst✝⁶ : Ring R
S✝ : Type u_2
inst✝⁵ : AddCommGroup S✝
inst✝⁴ : Pow S✝ ℕ
inst✝³ : Module R S✝
p q✝ : R[X]
x : S✝
S : Type u_3
inst✝² : NonAssocRing S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
q : ℕ[X]
n : ℕ
⊢ q.smeval (-↑n) = ↑(q.smeval (-↑n))
state_after: R : Type u_1
inst✝⁶ : Ring R
S✝ : Type u_2
inst✝⁵ : AddCommGroup S✝
inst✝⁴ : Pow S✝ ℕ
inst✝³ : Module R S✝
p q✝ : R[X]
x : S✝
S : Type u_3
inst✝² : NonAssocRing S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
q : ℕ[X]
n : ℕ
⊢ q.sum (smul_pow (-↑n)) = ↑(q.sum (smul_pow (-↑n)))
tactic: rw [smeval_eq_sum, smeval_eq_sum]
state_before: R : Type u_1
inst✝⁶ : Ring R
S✝ : Type u_2
inst✝⁵ : AddCommGroup S✝
inst✝⁴ : Pow S✝ ℕ
inst✝³ : Module R S✝
p q✝ : R[X]
x : S✝
S : Type u_3
inst✝² : NonAssocRing S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
q : ℕ[X]
n : ℕ
⊢ q.sum (smul_pow (-↑n)) = ↑(q.sum (smul_pow (-↑n)))
state_after: R : Type u_1
inst✝⁶ : Ring R
S✝ : Type u_2
inst✝⁵ : AddCommGroup S✝
inst✝⁴ : Pow S✝ ℕ
inst✝³ : Module R S✝
p q✝ : R[X]
x : S✝
S : Type u_3
inst✝² : NonAssocRing S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
q : ℕ[X]
n : ℕ
⊢ ∑ x ∈ q.support, q.coeff x • (-↑n) ^ x = ∑ x ∈ q.support, ↑(q.coeff x • (-↑n) ^ x)
tactic: simp only [Polynomial.smul_pow, sum_def, Int.cast_sum, Int.cast_mul, Int.cast_npow]
state_before: R : Type u_1
inst✝⁶ : Ring R
S✝ : Type u_2
inst✝⁵ : AddCommGroup S✝
inst✝⁴ : Pow S✝ ℕ
inst✝³ : Module R S✝
p q✝ : R[X]
x : S✝
S : Type u_3
inst✝² : NonAssocRing S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
q : ℕ[X]
n : ℕ
⊢ ∑ x ∈ q.support, q.coeff x • (-↑n) ^ x = ∑ x ∈ q.support, ↑(q.coeff x • (-↑n) ^ x)
state_after: R : Type u_1
inst✝⁶ : Ring R
S✝ : Type u_2
inst✝⁵ : AddCommGroup S✝
inst✝⁴ : Pow S✝ ℕ
inst✝³ : Module R S✝
p q✝ : R[X]
x : S✝
S : Type u_3
inst✝² : NonAssocRing S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
q : ℕ[X]
n : ℕ
⊢ ∀ x ∈ q.support, q.coeff x • (-↑n) ^ x = ↑(q.coeff x • (-↑n) ^ x)
tactic: refine Finset.sum_congr rfl ?_
state_before: R : Type u_1
inst✝⁶ : Ring R
S✝ : Type u_2
inst✝⁵ : AddCommGroup S✝
inst✝⁴ : Pow S✝ ℕ
inst✝³ : Module R S✝
p q✝ : R[X]
x : S✝
S : Type u_3
inst✝² : NonAssocRing S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
q : ℕ[X]
n : ℕ
⊢ ∀ x ∈ q.support, q.coeff x • (-↑n) ^ x = ↑(q.coeff x • (-↑n) ^ x)
state_after: R : Type u_1
inst✝⁶ : Ring R
S✝ : Type u_2
inst✝⁵ : AddCommGroup S✝
inst✝⁴ : Pow S✝ ℕ
inst✝³ : Module R S✝
p q✝ : R[X]
x : S✝
S : Type u_3
inst✝² : NonAssocRing S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
q : ℕ[X]
n k : ℕ
a✝ : k ∈ q.support
⊢ q.coeff k • (-↑n) ^ k = ↑(q.coeff k • (-↑n) ^ k)
tactic: intro k _
state_before: R : Type u_1
inst✝⁶ : Ring R
S✝ : Type u_2
inst✝⁵ : AddCommGroup S✝
inst✝⁴ : Pow S✝ ℕ
inst✝³ : Module R S✝
p q✝ : R[X]
x : S✝
S : Type u_3
inst✝² : NonAssocRing S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
q : ℕ[X]
n k : ℕ
a✝ : k ∈ q.support
⊢ q.coeff k • (-↑n) ^ k = ↑(q.coeff k • (-↑n) ^ k)
state_after: no goals
tactic: rw [show -(n : S) = (-n : ℤ) by simp only [Int.cast_neg, Int.cast_natCast], nsmul_eq_mul,
    ← AddGroupWithOne.intCast_ofNat, ← Int.cast_npow, ← Int.cast_mul, ← nsmul_eq_mul]
Theorem: tsum_subtype_le
File: Mathlib/Topology/Algebra/InfiniteSum/Order.lean

Proof steps:
state_before: ι : Type u_1
κ✝ : Type u_2
α : Type u_3
inst✝⁷ : OrderedCommMonoid α
inst✝⁶ : TopologicalSpace α
inst✝⁵ : OrderClosedTopology α
f✝ g : ι → α
a a₁ a₂ : α
κ : Type u_4
γ : Type u_5
inst✝⁴ : OrderedCommGroup γ
inst✝³ : UniformSpace γ
inst✝² : UniformGroup γ
inst✝¹ : OrderClosedTopology γ
inst✝ : CompleteSpace γ
f : κ → γ
β : Set κ
h : ∀ (a : κ), 1 ≤ f a
hf : Multipliable f
⊢ ∏' (b : ↑β), f ↑b ≤ ∏' (a : κ), f a
state_after: ι : Type u_1
κ✝ : Type u_2
α : Type u_3
inst✝⁷ : OrderedCommMonoid α
inst✝⁶ : TopologicalSpace α
inst✝⁵ : OrderClosedTopology α
f✝ g : ι → α
a a₁ a₂ : α
κ : Type u_4
γ : Type u_5
inst✝⁴ : OrderedCommGroup γ
inst✝³ : UniformSpace γ
inst✝² : UniformGroup γ
inst✝¹ : OrderClosedTopology γ
inst✝ : CompleteSpace γ
f : κ → γ
β : Set κ
h : ∀ (a : κ), 1 ≤ f a
hf : Multipliable f
⊢ Multipliable fun a => f a
tactic: apply tprod_le_tprod_of_inj _
    (Subtype.coe_injective)
    (by simp only [Subtype.range_coe_subtype, Set.setOf_mem_eq, h, implies_true])
    (by simp only [le_refl, Subtype.forall, implies_true])
    (by apply hf.subtype)
state_before: ι : Type u_1
κ✝ : Type u_2
α : Type u_3
inst✝⁷ : OrderedCommMonoid α
inst✝⁶ : TopologicalSpace α
inst✝⁵ : OrderClosedTopology α
f✝ g : ι → α
a a₁ a₂ : α
κ : Type u_4
γ : Type u_5
inst✝⁴ : OrderedCommGroup γ
inst✝³ : UniformSpace γ
inst✝² : UniformGroup γ
inst✝¹ : OrderClosedTopology γ
inst✝ : CompleteSpace γ
f : κ → γ
β : Set κ
h : ∀ (a : κ), 1 ≤ f a
hf : Multipliable f
⊢ Multipliable fun a => f a
state_after: no goals
tactic: apply hf
Theorem: MvPolynomial.map_leftInverse
File: Mathlib/Algebra/MvPolynomial/Basic.lean

Proof steps:
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p q : MvPolynomial σ R
f✝ f : R →+* S₁
g : S₁ →+* R
hf : LeftInverse ⇑f ⇑g
X : MvPolynomial σ S₁
⊢ (map f) ((map g) X) = X
state_after: no goals
tactic: rw [map_map, (RingHom.ext hf : f.comp g = RingHom.id _), map_id]
Theorem: FreeAddGroup.freeAddGroupCongr_apply
File: Mathlib/GroupTheory/FreeGroup/Basic.lean

Proof steps:
state_before: α✝ : Type u
L L₁ L₂ L₃ L₄ : List (α✝ × Bool)
β✝ : Type v
f : α✝ → β✝
x✝ y : FreeGroup α✝
α : Type ?u.60273
β : Type ?u.60274
e : α ≃ β
x : FreeGroup α
⊢ (map ⇑e.symm) ((map ⇑e) x) = x
state_after: no goals
tactic: simp [Function.comp, map.comp]
state_before: α✝ : Type u
L L₁ L₂ L₃ L₄ : List (α✝ × Bool)
β✝ : Type v
f : α✝ → β✝
x✝ y : FreeGroup α✝
α : Type ?u.60273
β : Type ?u.60274
e : α ≃ β
x : FreeGroup β
⊢ (map ⇑e) ((map ⇑e.symm) x) = x
state_after: no goals
tactic: simp [Function.comp, map.comp]
Theorem: Basis.toDual_apply_left
File: Mathlib/LinearAlgebra/Dual.lean

Proof steps:
state_before: R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : DecidableEq ι
b : Basis ι R M
m : M
i : ι
⊢ (b.toDual m) (b i) = (b.repr m) i
state_after: no goals
tactic: rw [← b.toDual_total_left, b.total_repr]
Theorem: Equiv.finsetCongr_trans
File: Mathlib/Data/Finset/Image.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
e : α ≃ β
e' : β ≃ γ
⊢ e.finsetCongr.trans e'.finsetCongr = (e.trans e').finsetCongr
state_after: case H.a
α : Type u_1
β : Type u_2
γ : Type u_3
e : α ≃ β
e' : β ≃ γ
x✝ : Finset α
a✝ : γ
⊢ a✝ ∈ (e.finsetCongr.trans e'.finsetCongr) x✝ ↔ a✝ ∈ (e.trans e').finsetCongr x✝
tactic: ext
state_before: case H.a
α : Type u_1
β : Type u_2
γ : Type u_3
e : α ≃ β
e' : β ≃ γ
x✝ : Finset α
a✝ : γ
⊢ a✝ ∈ (e.finsetCongr.trans e'.finsetCongr) x✝ ↔ a✝ ∈ (e.trans e').finsetCongr x✝
state_after: no goals
tactic: simp [-Finset.mem_map, -Equiv.trans_toEmbedding]
Theorem: CategoryTheory.Pretriangulated.Triangle.mor₃_eq_zero_iff_epi₂
File: Mathlib/CategoryTheory/Triangulated/Pretriangulated.lean

Proof steps:
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
⊢ T.mor₃ = 0 ↔ Epi T.mor₂
state_after: case mp
C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
⊢ T.mor₃ = 0 → Epi T.mor₂

case mpr
C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
⊢ Epi T.mor₂ → T.mor₃ = 0
tactic: constructor
Theorem: CategoryTheory.MonoidalOpposite.mopBraidedFunctor_ε_unmop
File: Mathlib/CategoryTheory/Monoidal/Braided/Basic.lean

Proof steps:
state_before: C : Type u₁
inst✝⁸ : Category.{v₁, u₁} C
inst✝⁷ : MonoidalCategory C
inst✝⁶ : BraidedCategory C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
inst✝⁴ : MonoidalCategory D
inst✝³ : BraidedCategory D
E : Type u₃
inst✝² : Category.{v₃, u₃} E
inst✝¹ : MonoidalCategory E
inst✝ : BraidedCategory E
X Y Z : C
⊢ (fun X Y => (β_ { unmop := X } { unmop := Y }).hom) X Y ▷ __spread✝⁻⁰.obj Z ≫
      (fun X Y => (β_ { unmop := X } { unmop := Y }).hom) (X ⊗ Y) Z ≫ __spread✝⁻⁰.map (α_ X Y Z).hom =
    (α_ (__spread✝⁻⁰.obj X) (__spread✝⁻⁰.obj Y) (__spread✝⁻⁰.obj Z)).hom ≫
      __spread✝⁻⁰.obj X ◁ (fun X Y => (β_ { unmop := X } { unmop := Y }).hom) Y Z ≫
        (fun X Y => (β_ { unmop := X } { unmop := Y }).hom) X (Y ⊗ Z)
state_after: no goals
tactic: simp [← yang_baxter_assoc]
Theorem: Mathlib.Meta.NormNum.isRat_eq_true
File: Mathlib/Tactic/NormNum/Basic.lean

Proof steps:
state_before: α : Type u
inst✝ : Ring α
num✝ : ℤ
denom✝ : ℕ
inv✝¹ inv✝ : Invertible ↑denom✝
⊢ ↑num✝ * ⅟↑denom✝ = ↑num✝ * ⅟↑denom✝
state_after: case e_a.h.e_5.h
α : Type u
inst✝ : Ring α
num✝ : ℤ
denom✝ : ℕ
inv✝¹ inv✝ : Invertible ↑denom✝
⊢ inv✝¹ = inv✝
tactic: congr
state_before: case e_a.h.e_5.h
α : Type u
inst✝ : Ring α
num✝ : ℤ
denom✝ : ℕ
inv✝¹ inv✝ : Invertible ↑denom✝
⊢ inv✝¹ = inv✝
state_after: no goals
tactic: apply Subsingleton.elim
Theorem: ZMod.cast_zmod_eq_zero_iff_of_le
File: Mathlib/Data/ZMod/Basic.lean

Proof steps:
state_before: m✝ n✝ m n : ℕ
inst✝ : NeZero m
h : m ≤ n
a : ZMod m
⊢ a.cast = 0 ↔ a = 0
state_after: m✝ n✝ m n : ℕ
inst✝ : NeZero m
h : m ≤ n
a : ZMod m
⊢ a.cast = cast 0 ↔ a = 0
tactic: rw [← ZMod.cast_zero (n := m)]
state_before: m✝ n✝ m n : ℕ
inst✝ : NeZero m
h : m ≤ n
a : ZMod m
⊢ a.cast = cast 0 ↔ a = 0
state_after: no goals
tactic: exact Injective.eq_iff' (cast_injective_of_le h) rfl
Theorem: Matrix.vecMul_conjTranspose_mul_self_eq_zero
File: Mathlib/LinearAlgebra/Matrix/DotProduct.lean

Proof steps:
state_before: m : Type u_1
n : Type u_2
p : Type u_3
R : Type u_4
inst✝⁷ : Fintype m
inst✝⁶ : Fintype n
inst✝⁵ : Fintype p
inst✝⁴ : PartialOrder R
inst✝³ : NonUnitalRing R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : NoZeroDivisors R
A : Matrix m n R
v : n → R
⊢ v ᵥ* (Aᴴ * A) = 0 ↔ v ᵥ* Aᴴ = 0
state_after: no goals
tactic: simpa only [← Matrix.row_vecMul, row_eq_zero] using
    mul_conjTranspose_mul_self_eq_zero A (row (Fin 1) v)
Theorem: ENNReal.div_le_of_le_mul
File: Mathlib/Data/ENNReal/Inv.lean

Proof steps:
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
h : a ≤ b * c
⊢ a / c ≤ b
state_after: case pos
a b c d : ℝ≥0∞
r p q : ℝ≥0
h : a ≤ b * c
h0 : c = 0
⊢ a / c ≤ b

case neg
a b c d : ℝ≥0∞
r p q : ℝ≥0
h : a ≤ b * c
h0 : ¬c = 0
⊢ a / c ≤ b
tactic: by_cases h0 : c = 0
state_before: case neg
a b c d : ℝ≥0∞
r p q : ℝ≥0
h : a ≤ b * c
h0 : ¬c = 0
⊢ a / c ≤ b
state_after: case pos
a b c d : ℝ≥0∞
r p q : ℝ≥0
h : a ≤ b * c
h0 : ¬c = 0
hinf : c = ⊤
⊢ a / c ≤ b

case neg
a b c d : ℝ≥0∞
r p q : ℝ≥0
h : a ≤ b * c
h0 : ¬c = 0
hinf : ¬c = ⊤
⊢ a / c ≤ b
tactic: by_cases hinf : c = ∞
state_before: case neg
a b c d : ℝ≥0∞
r p q : ℝ≥0
h : a ≤ b * c
h0 : ¬c = 0
hinf : ¬c = ⊤
⊢ a / c ≤ b
state_after: no goals
tactic: exact (ENNReal.div_le_iff_le_mul (Or.inl h0) (Or.inl hinf)).2 h
Theorem: Multiset.bind_powerset_len
File: Mathlib/Data/Multiset/Powerset.lean

Proof steps:
state_before: α✝ : Type u_1
α : Type u_2
S : Multiset α
⊢ ((range (card S + 1)).bind fun k => powersetCard k S) = S.powerset
state_after: case h
α✝ : Type u_1
α : Type u_2
a✝ : List α
⊢ ((range (card ⟦a✝⟧ + 1)).bind fun k => powersetCard k ⟦a✝⟧) = powerset ⟦a✝⟧
tactic: induction S using Quotient.inductionOn
state_before: case h
α✝ : Type u_1
α : Type u_2
a✝ : List α
⊢ ((range (card ⟦a✝⟧ + 1)).bind fun k => powersetCard k ⟦a✝⟧) = powerset ⟦a✝⟧
state_after: case h
α✝ : Type u_1
α : Type u_2
a✝ : List α
⊢ ↑(List.map ofList ((List.range (a✝.length + 1)).bind fun a => sublistsLen a a✝)) = ↑(List.map ofList a✝.sublists')
tactic: simp_rw [quot_mk_to_coe, powerset_coe', powersetCard_coe, ← coe_range, coe_bind, ← List.map_bind,
    coe_card]
state_before: case h
α✝ : Type u_1
α : Type u_2
a✝ : List α
⊢ ↑(List.map ofList ((List.range (a✝.length + 1)).bind fun a => sublistsLen a a✝)) = ↑(List.map ofList a✝.sublists')
state_after: no goals
tactic: exact coe_eq_coe.mpr ((List.range_bind_sublistsLen_perm _).map _)
Theorem: AddCon.quotientKerEquivOfRightInverse_symm_apply
File: Mathlib/GroupTheory/Congruence/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x✝ y : M
f✝ f : M →* P
g : P → M
hf : Function.RightInverse g ⇑f
x : (ker f).Quotient
⊢ (kerLift f) ((toQuotient ∘ g) ((kerLift f) x)) = (kerLift f) x
state_after: no goals
tactic: rw [Function.comp_apply, kerLift_mk, hf]
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x✝ y : M
f✝ f : M →* P
g : P → M
hf : Function.RightInverse g ⇑f
x : P
⊢ (kerLift f) ((toQuotient ∘ g) x) = x
state_after: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x✝ y : M
f✝ f : M →* P
g : P → M
hf : Function.RightInverse g ⇑f
x : P
⊢ (kerLift f) ((toQuotient ∘ g) x) = f (g x)
tactic: (conv_rhs => rw [← hf x])
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x✝ y : M
f✝ f : M →* P
g : P → M
hf : Function.RightInverse g ⇑f
x : P
⊢ (kerLift f) ((toQuotient ∘ g) x) = f (g x)
state_after: no goals
tactic: rfl
Theorem: hnot_symmDiff_self
File: Mathlib/Order/SymmDiff.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : CoheytingAlgebra α
a : α
⊢ (￢a) ∆ a = ⊤
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : CoheytingAlgebra α
a : α
⊢ ⊤ ≤ ￢a ⊔ a
tactic: rw [eq_top_iff, symmDiff, hnot_sdiff, sup_sdiff_self]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : CoheytingAlgebra α
a : α
⊢ ⊤ ≤ ￢a ⊔ a
state_after: no goals
tactic: exact Codisjoint.top_le codisjoint_hnot_left
Theorem: CategoryTheory.ShortComplex.ab_zero_apply
File: Mathlib/Algebra/Homology/ShortComplex/Ab.lean

Proof steps:
state_before: S : ShortComplex Ab
x : ↑S.X₁
⊢ S.g (S.f x) = 0
state_after: S : ShortComplex Ab
x : ↑S.X₁
⊢ 0 x = 0
tactic: erw [← comp_apply, S.zero]
state_before: S : ShortComplex Ab
x : ↑S.X₁
⊢ 0 x = 0
state_after: no goals
tactic: rfl
Theorem: MeasureTheory.SimpleFunc.FinMeasSupp.mul
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

Proof steps:
state_before: α : Type u_1
β✝ : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
inst✝² : Zero β✝
inst✝¹ : Zero γ
μ : Measure α
f✝ : α →ₛ β✝
β : Type u_5
inst✝ : MonoidWithZero β
f g : α →ₛ β
hf : f.FinMeasSupp μ
hg : g.FinMeasSupp μ
⊢ (f * g).FinMeasSupp μ
state_after: α : Type u_1
β✝ : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
inst✝² : Zero β✝
inst✝¹ : Zero γ
μ : Measure α
f✝ : α →ₛ β✝
β : Type u_5
inst✝ : MonoidWithZero β
f g : α →ₛ β
hf : f.FinMeasSupp μ
hg : g.FinMeasSupp μ
⊢ (map (fun p => p.1 * p.2) (f.pair g)).FinMeasSupp μ
tactic: rw [mul_eq_map₂]
state_before: α : Type u_1
β✝ : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
inst✝² : Zero β✝
inst✝¹ : Zero γ
μ : Measure α
f✝ : α →ₛ β✝
β : Type u_5
inst✝ : MonoidWithZero β
f g : α →ₛ β
hf : f.FinMeasSupp μ
hg : g.FinMeasSupp μ
⊢ (map (fun p => p.1 * p.2) (f.pair g)).FinMeasSupp μ
state_after: no goals
tactic: exact hf.map₂ hg (zero_mul 0)
Theorem: MeasureTheory.LocallyIntegrable.aestronglyMeasurable
File: Mathlib/MeasureTheory/Function/LocallyIntegrable.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝⁶ : MeasurableSpace X
inst✝⁵ : TopologicalSpace X
inst✝⁴ : MeasurableSpace Y
inst✝³ : TopologicalSpace Y
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
f g : X → E
μ : Measure X
s : Set X
inst✝ : SecondCountableTopology X
hf : LocallyIntegrable f μ
⊢ AEStronglyMeasurable f μ
state_after: no goals
tactic: simpa only [restrict_univ] using (locallyIntegrableOn_univ.mpr hf).aestronglyMeasurable
Theorem: WeierstrassCurve.Affine.equation_add_iff
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
W : Affine R
x₁ x₂ y₁ L : R
⊢ W.Equation (W.addX x₁ x₂ L) (W.negAddY x₁ x₂ y₁ L) ↔ eval (W.addX x₁ x₂ L) (W.addPolynomial x₁ y₁ L) = 0
state_after: R : Type u
inst✝ : CommRing R
W : Affine R
x₁ x₂ y₁ L : R
⊢ evalEval (W.addX x₁ x₂ L) (L * (W.addX x₁ x₂ L - x₁) + y₁)
        (Y ^ 2 + C (C W.a₁ * X + C W.a₃) * Y - C (X ^ 3 + C W.a₂ * X ^ 2 + C W.a₄ * X + C W.a₆)) =
      0 ↔
    eval (W.addX x₁ x₂ L)
        (eval (C L * (X - C x₁) + C y₁)
          (Y ^ 2 + C (C W.a₁ * X + C W.a₃) * Y - C (X ^ 3 + C W.a₂ * X ^ 2 + C W.a₄ * X + C W.a₆))) =
      0
tactic: rw [Equation, negAddY, addPolynomial, linePolynomial, polynomial]
state_before: R : Type u
inst✝ : CommRing R
W : Affine R
x₁ x₂ y₁ L : R
⊢ evalEval (W.addX x₁ x₂ L) (L * (W.addX x₁ x₂ L - x₁) + y₁)
        (Y ^ 2 + C (C W.a₁ * X + C W.a₃) * Y - C (X ^ 3 + C W.a₂ * X ^ 2 + C W.a₄ * X + C W.a₆)) =
      0 ↔
    eval (W.addX x₁ x₂ L)
        (eval (C L * (X - C x₁) + C y₁)
          (Y ^ 2 + C (C W.a₁ * X + C W.a₃) * Y - C (X ^ 3 + C W.a₂ * X ^ 2 + C W.a₄ * X + C W.a₆))) =
      0
state_after: no goals
tactic: eval_simp
Theorem: TensorAlgebra.ι_eq_zero_iff
File: Mathlib/LinearAlgebra/TensorAlgebra/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝² : CommSemiring R
M : Type u_2
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
x : M
⊢ (ι R) x = 0 ↔ x = 0
state_after: no goals
tactic: rw [← ι_inj R x 0, LinearMap.map_zero]
Theorem: DFinsupp.support_update_ne_zero
File: Mathlib/Data/DFinsupp/Basic.lean

Proof steps:
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
inst✝ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
f : Π₀ (i : ι), β i
i : ι
b : β i
h : b ≠ 0
⊢ (update i f b).support = insert i f.support
state_after: case a
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
inst✝ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
f : Π₀ (i : ι), β i
i : ι
b : β i
h : b ≠ 0
j : ι
⊢ j ∈ (update i f b).support ↔ j ∈ insert i f.support
tactic: ext j
state_before: case a
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
inst✝ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
f : Π₀ (i : ι), β i
i : ι
b : β i
h : b ≠ 0
j : ι
⊢ j ∈ (update i f b).support ↔ j ∈ insert i f.support
state_after: case a.inl
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
inst✝ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
f : Π₀ (i : ι), β i
i : ι
b : β i
h : b ≠ 0
⊢ i ∈ (update i f b).support ↔ i ∈ insert i f.support

case a.inr
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
inst✝ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
f : Π₀ (i : ι), β i
i : ι
b : β i
h : b ≠ 0
j : ι
hi : i ≠ j
⊢ j ∈ (update i f b).support ↔ j ∈ insert i f.support
tactic: rcases eq_or_ne i j with (rfl | hi)
Theorem: Function.Antiperiodic.add_zsmul_eq
File: Mathlib/Algebra/Periodic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝¹ : AddGroup α
inst✝ : AddGroup β
h : Antiperiodic f c
n : ℤ
⊢ f (x + n • c) = ↑n.negOnePow • f x
state_after: case intro.inl
α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝¹ : AddGroup α
inst✝ : AddGroup β
h : Antiperiodic f c
k : ℤ
⊢ f (x + (2 * k) • c) = ↑(2 * k).negOnePow • f x

case intro.inr
α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝¹ : AddGroup α
inst✝ : AddGroup β
h : Antiperiodic f c
k : ℤ
⊢ f (x + (2 * k + 1) • c) = ↑(2 * k + 1).negOnePow • f x
tactic: rcases Int.even_or_odd' n with ⟨k, rfl | rfl⟩
Theorem: CategoryTheory.μ_naturalityₗ
File: Mathlib/CategoryTheory/Monoidal/End.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
M : Type u_1
inst✝¹ : Category.{u_2, u_1} M
inst✝ : MonoidalCategory M
F : MonoidalFunctor M (C ⥤ C)
m n m' : M
f : m ⟶ m'
X : C
⊢ (F.obj n).map ((F.map f).app X) ≫ (F.μ m' n).app X = (F.μ m n).app X ≫ (F.map (f ▷ n)).app X
state_after: C : Type u
inst✝² : Category.{v, u} C
M : Type u_1
inst✝¹ : Category.{u_2, u_1} M
inst✝ : MonoidalCategory M
F : MonoidalFunctor M (C ⥤ C)
m n m' : M
f : m ⟶ m'
X : C
⊢ (F.obj n).map ((F.map f).app X) ≫ (F.μ m' n).app X =
    (F.map (𝟙 n)).app ((F.obj m).obj X) ≫ (F.obj n).map ((F.map f).app X) ≫ (F.μ m' n).app X
tactic: rw [← tensorHom_id, ← μ_naturality₂ F f (𝟙 n) X]
state_before: C : Type u
inst✝² : Category.{v, u} C
M : Type u_1
inst✝¹ : Category.{u_2, u_1} M
inst✝ : MonoidalCategory M
F : MonoidalFunctor M (C ⥤ C)
m n m' : M
f : m ⟶ m'
X : C
⊢ (F.obj n).map ((F.map f).app X) ≫ (F.μ m' n).app X =
    (F.map (𝟙 n)).app ((F.obj m).obj X) ≫ (F.obj n).map ((F.map f).app X) ≫ (F.μ m' n).app X
state_after: no goals
tactic: simp
Theorem: Polynomial.eval₂_eq_smeval
File: Mathlib/Algebra/Polynomial/Smeval.lean

Proof steps:
state_before: R✝ : Type u_1
inst✝⁵ : Semiring R✝
r : R✝
p✝ : R✝[X]
S✝ : Type u_2
inst✝⁴ : AddCommMonoid S✝
inst✝³ : Pow S✝ ℕ
inst✝² : MulActionWithZero R✝ S✝
x✝ : S✝
R : Type u_3
inst✝¹ : Semiring R
S : Type u_4
inst✝ : Semiring S
f : R →+* S
p : R[X]
x : S
⊢ eval₂ f x p = p.smeval x
state_after: R✝ : Type u_1
inst✝⁵ : Semiring R✝
r : R✝
p✝ : R✝[X]
S✝ : Type u_2
inst✝⁴ : AddCommMonoid S✝
inst✝³ : Pow S✝ ℕ
inst✝² : MulActionWithZero R✝ S✝
x✝ : S✝
R : Type u_3
inst✝¹ : Semiring R
S : Type u_4
inst✝ : Semiring S
f : R →+* S
p : R[X]
x : S
this : Module R S := f.toModule
⊢ eval₂ f x p = p.smeval x
tactic: letI : Module R S := RingHom.toModule f
state_before: R✝ : Type u_1
inst✝⁵ : Semiring R✝
r : R✝
p✝ : R✝[X]
S✝ : Type u_2
inst✝⁴ : AddCommMonoid S✝
inst✝³ : Pow S✝ ℕ
inst✝² : MulActionWithZero R✝ S✝
x✝ : S✝
R : Type u_3
inst✝¹ : Semiring R
S : Type u_4
inst✝ : Semiring S
f : R →+* S
p : R[X]
x : S
this : Module R S := f.toModule
⊢ eval₂ f x p = p.smeval x
state_after: R✝ : Type u_1
inst✝⁵ : Semiring R✝
r : R✝
p✝ : R✝[X]
S✝ : Type u_2
inst✝⁴ : AddCommMonoid S✝
inst✝³ : Pow S✝ ℕ
inst✝² : MulActionWithZero R✝ S✝
x✝ : S✝
R : Type u_3
inst✝¹ : Semiring R
S : Type u_4
inst✝ : Semiring S
f : R →+* S
p : R[X]
x : S
this : Module R S := f.toModule
⊢ (p.sum fun e a => f a * x ^ e) = p.sum (smul_pow x)
tactic: rw [smeval_eq_sum, eval₂_eq_sum]
state_before: R✝ : Type u_1
inst✝⁵ : Semiring R✝
r : R✝
p✝ : R✝[X]
S✝ : Type u_2
inst✝⁴ : AddCommMonoid S✝
inst✝³ : Pow S✝ ℕ
inst✝² : MulActionWithZero R✝ S✝
x✝ : S✝
R : Type u_3
inst✝¹ : Semiring R
S : Type u_4
inst✝ : Semiring S
f : R →+* S
p : R[X]
x : S
this : Module R S := f.toModule
⊢ (p.sum fun e a => f a * x ^ e) = p.sum (smul_pow x)
state_after: no goals
tactic: rfl