ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Nat.card_eq_card_finite_toFinset
File: Mathlib/SetTheory/Cardinal/Finite.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
s : Set α
hs : s.Finite
⊢ Nat.card ↑s = hs.toFinset.card
state_after: no goals
tactic: simp only [← Nat.card_eq_finsetCard, hs.mem_toFinset]
Theorem: surjOn_Ioc_of_monotone_surjective
File: Mathlib/Order/Interval/Set/SurjOn.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : PartialOrder β
f : α → β
h_mono : Monotone f
h_surj : Surjective f
a b : α
⊢ SurjOn f (Ioc a b) (Ioc (f a) (f b))
state_after: no goals
tactic: simpa using surjOn_Ico_of_monotone_surjective h_mono.dual h_surj (toDual b) (toDual a)
Theorem: Real.spectralRadius_mem_spectrum_or
File: Mathlib/Analysis/Normed/Algebra/Spectrum.lean

Proof steps:
state_before: 𝕜 : Type u_1
A✝¹ : Type u_2
A✝ : Type u_3
inst✝³ : Ring A✝
A : Type u_4
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℝ A
inst✝ : CompleteSpace A
a : A
ha : (spectrum ℝ a).Nonempty
⊢ (spectralRadius ℝ a).toReal ∈ spectrum ℝ a ∨ -(spectralRadius ℝ a).toReal ∈ spectrum ℝ a
state_after: case intro.intro
𝕜 : Type u_1
A✝¹ : Type u_2
A✝ : Type u_3
inst✝³ : Ring A✝
A : Type u_4
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℝ A
inst✝ : CompleteSpace A
a : A
ha : (spectrum ℝ a).Nonempty
x : ℝ
hx₁ : x ∈ spectrum ℝ a
hx₂ : ↑‖x‖₊ = spectralRadius ℝ a
⊢ (spectralRadius ℝ a).toReal ∈ spectrum ℝ a ∨ -(spectralRadius ℝ a).toReal ∈ spectrum ℝ a
tactic: obtain ⟨x, hx₁, hx₂⟩ := spectrum.exists_nnnorm_eq_spectralRadius_of_nonempty ha
state_before: case intro.intro
𝕜 : Type u_1
A✝¹ : Type u_2
A✝ : Type u_3
inst✝³ : Ring A✝
A : Type u_4
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℝ A
inst✝ : CompleteSpace A
a : A
ha : (spectrum ℝ a).Nonempty
x : ℝ
hx₁ : x ∈ spectrum ℝ a
hx₂ : ↑‖x‖₊ = spectralRadius ℝ a
⊢ (spectralRadius ℝ a).toReal ∈ spectrum ℝ a ∨ -(spectralRadius ℝ a).toReal ∈ spectrum ℝ a
state_after: case intro.intro
𝕜 : Type u_1
A✝¹ : Type u_2
A✝ : Type u_3
inst✝³ : Ring A✝
A : Type u_4
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℝ A
inst✝ : CompleteSpace A
a : A
ha : (spectrum ℝ a).Nonempty
x : ℝ
hx₁ : x ∈ spectrum ℝ a
hx₂ : ↑‖x‖₊ = spectralRadius ℝ a
⊢ |x| ∈ spectrum ℝ a ∨ -|x| ∈ spectrum ℝ a
tactic: simp only [← hx₂, ENNReal.coe_toReal, coe_nnnorm, Real.norm_eq_abs]
state_before: case intro.intro
𝕜 : Type u_1
A✝¹ : Type u_2
A✝ : Type u_3
inst✝³ : Ring A✝
A : Type u_4
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℝ A
inst✝ : CompleteSpace A
a : A
ha : (spectrum ℝ a).Nonempty
x : ℝ
hx₁ : x ∈ spectrum ℝ a
hx₂ : ↑‖x‖₊ = spectralRadius ℝ a
⊢ |x| ∈ spectrum ℝ a ∨ -|x| ∈ spectrum ℝ a
state_after: no goals
tactic: exact abs_choice x |>.imp (fun h ↦ by rwa [h]) (fun h ↦ by simpa [h])
Theorem: quotient_norm_add_le
File: Mathlib/Analysis/Normed/Group/Quotient.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
x y : M ⧸ S
⊢ ‖x + y‖ ≤ ‖x‖ + ‖y‖
state_after: case intro.intro.intro
M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
x y : M
⊢ ‖↑x + ↑y‖ ≤ ‖↑x‖ + ‖↑y‖
tactic: rcases And.intro (mk_surjective x) (mk_surjective y) with ⟨⟨x, rfl⟩, ⟨y, rfl⟩⟩
state_before: case intro.intro.intro
M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
x y : M
⊢ ‖↑x + ↑y‖ ≤ ‖↑x‖ + ‖↑y‖
state_after: case intro.intro.intro
M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
x y : M
⊢ ⨅ a, ‖x + y + ↑a‖ ≤ (⨅ a, ‖x + ↑a‖) + ⨅ a, ‖y + ↑a‖
tactic: simp only [← mk'_apply, ← map_add, quotient_norm_mk_eq, sInf_image']
state_before: case intro.intro.intro
M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
x y : M
⊢ ⨅ a, ‖x + y + ↑a‖ ≤ (⨅ a, ‖x + ↑a‖) + ⨅ a, ‖y + ↑a‖
state_after: case intro.intro.intro
M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
x y : M
a b : ↑↑S
⊢ ⨅ a, ‖x + y + ↑a‖ ≤ ‖x + ↑a‖ + ‖y + ↑b‖
tactic: refine le_ciInf_add_ciInf fun a b ↦ ?_
state_before: case intro.intro.intro
M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
x y : M
a b : ↑↑S
⊢ ⨅ a, ‖x + y + ↑a‖ ≤ ‖x + ↑a‖ + ‖y + ↑b‖
state_after: case intro.intro.intro
M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
x y : M
a b : ↑↑S
⊢ ‖x + y + ↑(a + b)‖ ≤ ‖x + ↑a‖ + ‖y + ↑b‖
tactic: refine ciInf_le_of_le ⟨0, forall_mem_range.2 fun _ ↦ norm_nonneg _⟩ (a + b) ?_
state_before: case intro.intro.intro
M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
x y : M
a b : ↑↑S
⊢ ‖x + y + ↑(a + b)‖ ≤ ‖x + ↑a‖ + ‖y + ↑b‖
state_after: no goals
tactic: exact (congr_arg norm (add_add_add_comm _ _ _ _)).trans_le (norm_add_le _ _)
Theorem: LowerSet.mem_map
File: Mathlib/Order/UpperLower/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f✝ : α ≃o β
s t : LowerSet α
a : α
b✝ : β
f : α ≃o β
b : β
⊢ b ∈ (map f) s ↔ f.symm b ∈ s
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f✝ : α ≃o β
s t : LowerSet α
a : α
b✝ : β
f : α ≃o β
b : β
⊢ b ∈ (map f.symm).symm s ↔ f.symm b ∈ s
tactic: rw [← f.symm_symm, ← symm_map, f.symm_symm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f✝ : α ≃o β
s t : LowerSet α
a : α
b✝ : β
f : α ≃o β
b : β
⊢ b ∈ (map f.symm).symm s ↔ f.symm b ∈ s
state_after: no goals
tactic: rfl
Theorem: Nat.Subtype.coe_comp_ofNat_range
File: Mathlib/Logic/Denumerable.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
s : Set ℕ
inst✝¹ : Infinite ↑s
inst✝ : DecidablePred fun x => x ∈ s
⊢ Set.range (Subtype.val ∘ ofNat s) = s
state_after: no goals
tactic: rw [Set.range_comp Subtype.val, ofNat_range, Set.image_univ, Subtype.range_coe]
Theorem: AddMonoid.Coprod.mrange_inl_sup_mrange_inr
File: Mathlib/GroupTheory/Coprod/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
M' : Type u_3
N' : Type u_4
P : Type u_5
inst✝⁴ : MulOneClass M
inst✝³ : MulOneClass N
inst✝² : MulOneClass M'
inst✝¹ : MulOneClass N'
inst✝ : MulOneClass P
⊢ MonoidHom.mrange inl ⊔ MonoidHom.mrange inr = ⊤
state_after: no goals
tactic: rw [← mclosure_range_inl_union_inr, Submonoid.closure_union, ← MonoidHom.coe_mrange,
    ← MonoidHom.coe_mrange, Submonoid.closure_eq, Submonoid.closure_eq]
Theorem: CategoryTheory.Localization.natTrans_ext
File: Mathlib/CategoryTheory/Localization/Predicate.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_4, u_1} C
inst✝³ : Category.{u_5, u_2} D
L✝ : C ⥤ D
W✝ : MorphismProperty C
E : Type u_3
inst✝² : Category.{u_6, u_3} E
inst✝¹ : L✝.IsLocalization W✝
L : C ⥤ D
W : MorphismProperty C
inst✝ : L.IsLocalization W
F₁ F₂ : D ⥤ E
τ τ' : F₁ ⟶ F₂
h : ∀ (X : C), τ.app (L.obj X) = τ'.app (L.obj X)
⊢ τ = τ'
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_4, u_1} C
inst✝³ : Category.{u_5, u_2} D
L✝ : C ⥤ D
W✝ : MorphismProperty C
E : Type u_3
inst✝² : Category.{u_6, u_3} E
inst✝¹ : L✝.IsLocalization W✝
L : C ⥤ D
W : MorphismProperty C
inst✝ : L.IsLocalization W
F₁ F₂ : D ⥤ E
τ τ' : F₁ ⟶ F₂
h : ∀ (X : C), τ.app (L.obj X) = τ'.app (L.obj X)
this : L.EssSurj
⊢ τ = τ'
tactic: haveI := essSurj L W
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_4, u_1} C
inst✝³ : Category.{u_5, u_2} D
L✝ : C ⥤ D
W✝ : MorphismProperty C
E : Type u_3
inst✝² : Category.{u_6, u_3} E
inst✝¹ : L✝.IsLocalization W✝
L : C ⥤ D
W : MorphismProperty C
inst✝ : L.IsLocalization W
F₁ F₂ : D ⥤ E
τ τ' : F₁ ⟶ F₂
h : ∀ (X : C), τ.app (L.obj X) = τ'.app (L.obj X)
this : L.EssSurj
⊢ τ = τ'
state_after: case w.h
C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_4, u_1} C
inst✝³ : Category.{u_5, u_2} D
L✝ : C ⥤ D
W✝ : MorphismProperty C
E : Type u_3
inst✝² : Category.{u_6, u_3} E
inst✝¹ : L✝.IsLocalization W✝
L : C ⥤ D
W : MorphismProperty C
inst✝ : L.IsLocalization W
F₁ F₂ : D ⥤ E
τ τ' : F₁ ⟶ F₂
h : ∀ (X : C), τ.app (L.obj X) = τ'.app (L.obj X)
this : L.EssSurj
Y : D
⊢ τ.app Y = τ'.app Y
tactic: ext Y
state_before: case w.h
C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_4, u_1} C
inst✝³ : Category.{u_5, u_2} D
L✝ : C ⥤ D
W✝ : MorphismProperty C
E : Type u_3
inst✝² : Category.{u_6, u_3} E
inst✝¹ : L✝.IsLocalization W✝
L : C ⥤ D
W : MorphismProperty C
inst✝ : L.IsLocalization W
F₁ F₂ : D ⥤ E
τ τ' : F₁ ⟶ F₂
h : ∀ (X : C), τ.app (L.obj X) = τ'.app (L.obj X)
this : L.EssSurj
Y : D
⊢ τ.app Y = τ'.app Y
state_after: no goals
tactic: rw [← cancel_epi (F₁.map (L.objObjPreimageIso Y).hom), τ.naturality, τ'.naturality, h]
Theorem: Set.toFinset_nonempty
File: Mathlib/Data/Fintype/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s✝ t s : Set α
inst✝ : Fintype ↑s
⊢ s.toFinset.Nonempty ↔ s.Nonempty
state_after: no goals
tactic: rw [← Finset.coe_nonempty, coe_toFinset]
Theorem: AddAction.fixedBy_subset_fixedBy_zsmul
File: Mathlib/GroupTheory/GroupAction/FixedPoints.lean

Proof steps:
state_before: α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
g : G
j : ℤ
⊢ fixedBy α g ⊆ fixedBy α (g ^ j)
state_after: α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
g : G
j : ℤ
a : α
a_in_fixedBy : a ∈ fixedBy α g
⊢ a ∈ fixedBy α (g ^ j)
tactic: intro a a_in_fixedBy
state_before: α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
g : G
j : ℤ
a : α
a_in_fixedBy : a ∈ fixedBy α g
⊢ a ∈ fixedBy α (g ^ j)
state_after: α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
g : G
j : ℤ
a : α
a_in_fixedBy : a ∈ fixedBy α g
⊢ 1 ∣ j
tactic: rw [mem_fixedBy, zpow_smul_eq_iff_minimalPeriod_dvd,
    minimalPeriod_eq_one_iff_fixedBy.mpr a_in_fixedBy, Nat.cast_one]
state_before: α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
g : G
j : ℤ
a : α
a_in_fixedBy : a ∈ fixedBy α g
⊢ 1 ∣ j
state_after: no goals
tactic: exact one_dvd j
Theorem: Set.ite_inter_of_inter_eq
File: Mathlib/Data/Set/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁✝ s₂✝ t✝ t₁ t₂ u t s₁ s₂ s : Set α
h : s₁ ∩ s = s₂ ∩ s
⊢ t.ite s₁ s₂ ∩ s = s₁ ∩ s
state_after: no goals
tactic: rw [← ite_inter, ← h, ite_same]
Theorem: convexJoin_singleton_segment
File: Mathlib/Analysis/Convex/Join.lean

Proof steps:
state_before: ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝² : LinearOrderedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s t u : Set E
x y a b c : E
⊢ convexJoin 𝕜 {a} (segment 𝕜 b c) = (convexHull 𝕜) {a, b, c}
state_after: no goals
tactic: rw [← segment_same 𝕜, convexJoin_segments, insert_idem]
Theorem: _private.Mathlib.Analysis.SpecialFunctions.Gamma.Basic.0.Complex.Gamma_integrand_deriv_integrable_A
File: Mathlib/Analysis/SpecialFunctions/Gamma/Basic.lean

Proof steps:
state_before: s : ℂ
hs : 0 < s.re
X : ℝ
hX : 0 ≤ X
⊢ IntervalIntegrable (fun x => -(↑(rexp (-x)) * ↑x ^ s)) volume 0 X
state_after: case h.e'_3.h
s : ℂ
hs : 0 < s.re
X : ℝ
hX : 0 ≤ X
x✝ : ℝ
⊢ -(↑(rexp (-x✝)) * ↑x✝ ^ s) = (-fun x => ↑(rexp (-x)) * ↑x ^ (s + 1 - 1)) x✝

s : ℂ
hs : 0 < s.re
X : ℝ
hX : 0 ≤ X
⊢ 0 < (s + 1).re
tactic: convert (Gamma_integrand_intervalIntegrable (s + 1) _ hX).neg
Theorem: ZMod.inv_one
File: Mathlib/Data/ZMod/Basic.lean

Proof steps:
state_before: m n✝ n : ℕ
⊢ 1⁻¹ = 1
state_after: case inl
m n : ℕ
⊢ 1⁻¹ = 1

case inr
m n✝ n : ℕ
hn : n ≠ 1
⊢ 1⁻¹ = 1
tactic: obtain rfl | hn := eq_or_ne n 1
Theorem: TopologicalSpace.IsTopologicalBasis.nhds_hasBasis
File: Mathlib/Topology/Bases.lean

Proof steps:
state_before: α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
b : Set (Set α)
hb : IsTopologicalBasis b
a : α
s : Set α
⊢ (∃ t ∈ b, a ∈ t ∧ t ⊆ s) ↔ ∃ i, (i ∈ b ∧ a ∈ i) ∧ i ⊆ s
state_after: no goals
tactic: simp only [and_assoc]
Theorem: Metric.Sigma.isometry_mk
File: Mathlib/Topology/MetricSpace/Gluing.lean

Proof steps:
state_before: ι : Type u_1
E : ι → Type u_2
inst✝ : (i : ι) → MetricSpace (E i)
i : ι
x y : E i
⊢ dist ⟨i, x⟩ ⟨i, y⟩ = dist x y
state_after: no goals
tactic: simp
Theorem: lt_div_iff_mul_lt
File: Mathlib/Algebra/Order/Group/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LT α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c d : α
⊢ a < c / b ↔ a * b < c
state_after: no goals
tactic: rw [← mul_lt_mul_iff_right b, div_eq_mul_inv, inv_mul_cancel_right]
Theorem: OrdinalApprox.lfp_mem_range_lfpApprox
File: Mathlib/SetTheory/Ordinal/FixedPointApproximants.lean

Proof steps:
state_before: α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
⊢ lfp f ∈ Set.range (lfpApprox f ⊥)
state_after: case h
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
⊢ lfpApprox f ⊥ (succ #α).ord = lfp f
tactic: use ord <| succ #α
state_before: case h
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
⊢ lfpApprox f ⊥ (succ #α).ord = lfp f
state_after: no goals
tactic: exact lfpApprox_ord_eq_lfp f
Theorem: finsum_mem_add_diff'
File: Mathlib/Algebra/BigOperators/Finprod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Set α
hst : s ⊆ t
ht : (t ∩ mulSupport f).Finite
⊢ (∏ᶠ (i : α) (_ : i ∈ s), f i) * ∏ᶠ (i : α) (_ : i ∈ t \ s), f i = ∏ᶠ (i : α) (_ : i ∈ t), f i
state_after: no goals
tactic: rw [← finprod_mem_inter_mul_diff' _ ht, inter_eq_self_of_subset_right hst]
Theorem: MeasureTheory.eLpNorm_eq_zero_and_zero_of_ae_le_mul_neg
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
g : α → G
c : ℝ
h : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c * ‖g x‖
hc : c < 0
p : ℝ≥0∞
⊢ eLpNorm f p μ = 0 ∧ eLpNorm g p μ = 0
state_after: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
g : α → G
c : ℝ
hc : c < 0
p : ℝ≥0∞
h : (∀ᵐ (x : α) ∂μ, f x = 0) ∧ ∀ᵐ (x : α) ∂μ, g x = 0
⊢ eLpNorm f p μ = 0 ∧ eLpNorm g p μ = 0
tactic: simp_rw [le_mul_iff_eq_zero_of_nonneg_of_neg_of_nonneg (norm_nonneg _) hc (norm_nonneg _),
    norm_eq_zero, eventually_and] at h
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
g : α → G
c : ℝ
hc : c < 0
p : ℝ≥0∞
h : (∀ᵐ (x : α) ∂μ, f x = 0) ∧ ∀ᵐ (x : α) ∂μ, g x = 0
⊢ eLpNorm f p μ = 0 ∧ eLpNorm g p μ = 0
state_after: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
g : α → G
c : ℝ
hc : c < 0
p : ℝ≥0∞
h : f =ᶠ[ae μ] 0 ∧ g =ᶠ[ae μ] 0
⊢ eLpNorm f p μ = 0 ∧ eLpNorm g p μ = 0
tactic: change f =ᵐ[μ] 0 ∧ g =ᵐ[μ] 0 at h
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
g : α → G
c : ℝ
hc : c < 0
p : ℝ≥0∞
h : f =ᶠ[ae μ] 0 ∧ g =ᶠ[ae μ] 0
⊢ eLpNorm f p μ = 0 ∧ eLpNorm g p μ = 0
state_after: no goals
tactic: simp [eLpNorm_congr_ae h.1, eLpNorm_congr_ae h.2]
Theorem: integral_exp_neg_Ioi_zero
File: Mathlib/Analysis/SpecialFunctions/ImproperIntegrals.lean

Proof steps:
state_before: ⊢ ∫ (x : ℝ) in Ioi 0, rexp (-x) = 1
state_after: no goals
tactic: simpa only [neg_zero, exp_zero] using integral_exp_neg_Ioi 0
Theorem: AddLECancellable.tsub_lt_tsub_iff_right
File: Mathlib/Algebra/Order/Sub/Canonical.lean

Proof steps:
state_before: α : Type u_1
inst✝² : CanonicallyLinearOrderedAddCommMonoid α
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
hc : AddLECancellable c
h : c ≤ a
⊢ a - c < b - c ↔ a < b
state_after: no goals
tactic: rw [hc.lt_tsub_iff_left, add_tsub_cancel_of_le h]
Theorem: Set.toFinset_symmDiff
File: Mathlib/Data/Fintype/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s t : Set α
inst✝³ : DecidableEq α
inst✝² : Fintype ↑s
inst✝¹ : Fintype ↑t
inst✝ : Fintype ↑(s ∆ t)
⊢ (s ∆ t).toFinset = s.toFinset ∆ t.toFinset
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
s t : Set α
inst✝³ : DecidableEq α
inst✝² : Fintype ↑s
inst✝¹ : Fintype ↑t
inst✝ : Fintype ↑(s ∆ t)
a✝ : α
⊢ a✝ ∈ (s ∆ t).toFinset ↔ a✝ ∈ s.toFinset ∆ t.toFinset
tactic: ext
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
s t : Set α
inst✝³ : DecidableEq α
inst✝² : Fintype ↑s
inst✝¹ : Fintype ↑t
inst✝ : Fintype ↑(s ∆ t)
a✝ : α
⊢ a✝ ∈ (s ∆ t).toFinset ↔ a✝ ∈ s.toFinset ∆ t.toFinset
state_after: no goals
tactic: simp [mem_symmDiff, Finset.mem_symmDiff]
Theorem: CliffordAlgebra.changeForm.associated_neg_proof
File: Mathlib/LinearAlgebra/CliffordAlgebra/Contraction.lean

Proof steps:
state_before: R : Type u1
inst✝³ : CommRing R
M : Type u2
inst✝² : AddCommGroup M
inst✝¹ : Module R M
Q Q' Q'' : QuadraticForm R M
B B' : BilinForm R M
h : BilinMap.toQuadraticMap B = Q' - Q
h' : BilinMap.toQuadraticMap B' = Q'' - Q'
inst✝ : Invertible 2
⊢ (QuadraticMap.associated (-Q)).toQuadraticMap = 0 - Q
state_after: no goals
tactic: simp [QuadraticMap.toQuadraticMap_associated]
Theorem: AlgebraicTopology.DoldKan.HigherFacesVanish.comp_δ_eq_zero
File: Mathlib/AlgebraicTopology/DoldKan/Faces.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
v : HigherFacesVanish q φ
j : Fin (n + 2)
hj₁ : j ≠ 0
hj₂ : n + 2 ≤ ↑j + q
⊢ φ ≫ X.δ j = 0
state_after: case intro
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
v : HigherFacesVanish q φ
i : Fin (n + 1)
hj₁ : i.succ ≠ 0
hj₂ : n + 2 ≤ ↑i.succ + q
⊢ φ ≫ X.δ i.succ = 0
tactic: obtain ⟨i, rfl⟩ := Fin.eq_succ_of_ne_zero hj₁
state_before: case intro
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
v : HigherFacesVanish q φ
i : Fin (n + 1)
hj₁ : i.succ ≠ 0
hj₂ : n + 2 ≤ ↑i.succ + q
⊢ φ ≫ X.δ i.succ = 0
state_after: case intro
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
v : HigherFacesVanish q φ
i : Fin (n + 1)
hj₁ : i.succ ≠ 0
hj₂ : n + 2 ≤ ↑i.succ + q
⊢ n + 1 ≤ ↑i + q
tactic: apply v i
state_before: case intro
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
v : HigherFacesVanish q φ
i : Fin (n + 1)
hj₁ : i.succ ≠ 0
hj₂ : n + 2 ≤ ↑i.succ + q
⊢ n + 1 ≤ ↑i + q
state_after: case intro
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
v : HigherFacesVanish q φ
i : Fin (n + 1)
hj₁ : i.succ ≠ 0
hj₂ : n + 2 ≤ ↑i + 1 + q
⊢ n + 1 ≤ ↑i + q
tactic: simp only [Fin.val_succ] at hj₂
state_before: case intro
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
v : HigherFacesVanish q φ
i : Fin (n + 1)
hj₁ : i.succ ≠ 0
hj₂ : n + 2 ≤ ↑i + 1 + q
⊢ n + 1 ≤ ↑i + q
state_after: no goals
tactic: omega
Theorem: image_minimals_of_rel_iff_rel
File: Mathlib/Order/Minimal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a✝ b x✝ : α
f : α → β
r : α → α → Prop
s : β → β → Prop
x : Set α
hf : ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
a : α
⊢ f '' minimals r x = minimals s (f '' x)
state_after: case h
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a✝ b✝ x✝ : α
f : α → β
r : α → α → Prop
s : β → β → Prop
x : Set α
hf : ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
a : α
b : β
⊢ b ∈ f '' minimals r x ↔ b ∈ minimals s (f '' x)
tactic: ext b
state_before: case h
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a✝ b✝ x✝ : α
f : α → β
r : α → α → Prop
s : β → β → Prop
x : Set α
hf : ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
a : α
b : β
⊢ b ∈ f '' minimals r x ↔ b ∈ minimals s (f '' x)
state_after: case h.refine_1
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a✝ b✝ x✝ : α
f : α → β
r : α → α → Prop
s : β → β → Prop
x : Set α
hf : ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
a : α
b : β
⊢ b ∈ f '' minimals r x → b ∈ minimals s (f '' x)

case h.refine_2
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a✝ b✝ x✝ : α
f : α → β
r : α → α → Prop
s : β → β → Prop
x : Set α
hf : ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
a : α
b : β
h : b ∈ minimals s (f '' x)
⊢ b ∈ f '' minimals r x
tactic: refine ⟨?_, fun h ↦ ?_⟩
Theorem: MulChar.mul_one
File: Mathlib/NumberTheory/MulChar/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝¹ : CommMonoid R
R' : Type u_2
inst✝ : CommMonoidWithZero R'
χ : MulChar R R'
⊢ χ * 1 = χ
state_after: case h
R : Type u_1
inst✝¹ : CommMonoid R
R' : Type u_2
inst✝ : CommMonoidWithZero R'
χ : MulChar R R'
a✝ : Rˣ
⊢ (χ * 1) ↑a✝ = χ ↑a✝
tactic: ext
state_before: case h
R : Type u_1
inst✝¹ : CommMonoid R
R' : Type u_2
inst✝ : CommMonoidWithZero R'
χ : MulChar R R'
a✝ : Rˣ
⊢ (χ * 1) ↑a✝ = χ ↑a✝
state_after: no goals
tactic: simp only [mul_one, Pi.mul_apply, MulChar.coeToFun_mul, MulChar.one_apply_coe]
Theorem: Polynomial.eval₂_X_pow
File: Mathlib/Algebra/Polynomial/Eval.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n✝ : ℕ
inst✝¹ : Semiring R
p q r : R[X]
inst✝ : Semiring S
f : R →+* S
x : S
n : ℕ
⊢ eval₂ f x (X ^ n) = x ^ n
state_after: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n✝ : ℕ
inst✝¹ : Semiring R
p q r : R[X]
inst✝ : Semiring S
f : R →+* S
x : S
n : ℕ
⊢ eval₂ f x ((monomial n) 1) = x ^ n
tactic: rw [X_pow_eq_monomial]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n✝ : ℕ
inst✝¹ : Semiring R
p q r : R[X]
inst✝ : Semiring S
f : R →+* S
x : S
n : ℕ
⊢ eval₂ f x ((monomial n) 1) = x ^ n
state_after: case h.e'_3
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n✝ : ℕ
inst✝¹ : Semiring R
p q r : R[X]
inst✝ : Semiring S
f : R →+* S
x : S
n : ℕ
⊢ x ^ n = f 1 * x ^ n
tactic: convert eval₂_monomial f x (n := n) (r := 1)
state_before: case h.e'_3
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n✝ : ℕ
inst✝¹ : Semiring R
p q r : R[X]
inst✝ : Semiring S
f : R →+* S
x : S
n : ℕ
⊢ x ^ n = f 1 * x ^ n
state_after: no goals
tactic: simp
Theorem: ArithmeticFunction.LSeries_zeta_eq_riemannZeta
File: Mathlib/NumberTheory/LSeries/Dirichlet.lean

Proof steps:
state_before: s : ℂ
hs : 1 < s.re
⊢ L (fun n => ↑(ζ n)) s = riemannZeta s
state_after: s : ℂ
hs : 1 < s.re
⊢ ∑' (n : ℕ), term (fun n => if n = 0 then 0 else 1) s n = ∑' (n : ℕ), 1 / ↑n ^ s
tactic: simp only [LSeries, natCoe_apply, zeta_apply, cast_ite, cast_zero, cast_one,
    zeta_eq_tsum_one_div_nat_cpow hs]
state_before: s : ℂ
hs : 1 < s.re
⊢ ∑' (n : ℕ), term (fun n => if n = 0 then 0 else 1) s n = ∑' (n : ℕ), 1 / ↑n ^ s
state_after: s : ℂ
hs : 1 < s.re
n : ℕ
⊢ term (fun n => if n = 0 then 0 else 1) s n = 1 / ↑n ^ s
tactic: refine tsum_congr fun n ↦ ?_
state_before: s : ℂ
hs : 1 < s.re
n : ℕ
⊢ term (fun n => if n = 0 then 0 else 1) s n = 1 / ↑n ^ s
state_after: case inl
s : ℂ
hs : 1 < s.re
⊢ term (fun n => if n = 0 then 0 else 1) s 0 = 1 / ↑0 ^ s

case inr
s : ℂ
hs : 1 < s.re
n : ℕ
hn : n ≠ 0
⊢ term (fun n => if n = 0 then 0 else 1) s n = 1 / ↑n ^ s
tactic: rcases eq_or_ne n 0 with rfl | hn