ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: normalizerCondition_of_isNilpotent
File: Mathlib/GroupTheory/Nilpotent.lean

Proof steps:
state_before: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
h : Group.IsNilpotent G
⊢ NormalizerCondition G
state_after: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
h : Group.IsNilpotent G
⊢ ∀ (H : Subgroup G), H.normalizer = H → H = ⊤
tactic: rw [normalizerCondition_iff_only_full_group_self_normalizing]
state_before: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
h : Group.IsNilpotent G
⊢ ∀ (H : Subgroup G), H.normalizer = H → H = ⊤
state_after: case hbase

⊢ ∀ (G : Type u_1) [inst : Group G] [inst_1 : Subsingleton G] (H : Subgroup G), H.normalizer = H → H = ⊤

case hstep

⊢ ∀ (G : Type u_1) [inst : Group G] [inst_1 : Group.IsNilpotent G],
    (∀ (H : Subgroup (G ⧸ center G)), H.normalizer = H → H = ⊤) → ∀ (H : Subgroup G), H.normalizer = H → H = ⊤
tactic: apply @nilpotent_center_quotient_ind _ G _ _ <;> clear! G
Theorem: CategoryTheory.Limits.biproduct.lift_eq
File: Mathlib/CategoryTheory/Preadditive/Biproducts.lean

Proof steps:
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
J : Type
inst✝¹ : Fintype J
f : J → C
inst✝ : HasBiproduct f
T : C
g : (j : J) → T ⟶ f j
⊢ lift g = ∑ j : J, g j ≫ ι f j
state_after: case w
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
J : Type
inst✝¹ : Fintype J
f : J → C
inst✝ : HasBiproduct f
T : C
g : (j : J) → T ⟶ f j
j : J
⊢ lift g ≫ π f j = (∑ j : J, g j ≫ ι f j) ≫ π f j
tactic: ext j
state_before: case w
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
J : Type
inst✝¹ : Fintype J
f : J → C
inst✝ : HasBiproduct f
T : C
g : (j : J) → T ⟶ f j
j : J
⊢ lift g ≫ π f j = (∑ j : J, g j ≫ ι f j) ≫ π f j
state_after: no goals
tactic: simp only [sum_comp, biproduct.ι_π, comp_dite, biproduct.lift_π, Category.assoc, comp_zero,
    Finset.sum_dite_eq', Finset.mem_univ, eqToHom_refl, Category.comp_id, if_true]
Theorem: Metric.tendstoUniformly_iff
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

Proof steps:
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
F : ι → β → α
f : β → α
p : Filter ι
⊢ TendstoUniformly F f p ↔ ∀ ε > 0, ∀ᶠ (n : ι) in p, ∀ (x : β), dist (f x) (F n x) < ε
state_after: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
F : ι → β → α
f : β → α
p : Filter ι
⊢ (∀ ε > 0, ∀ᶠ (n : ι) in p, ∀ x ∈ univ, dist (f x) (F n x) < ε) ↔
    ∀ ε > 0, ∀ᶠ (n : ι) in p, ∀ (x : β), dist (f x) (F n x) < ε
tactic: rw [← tendstoUniformlyOn_univ, tendstoUniformlyOn_iff]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
F : ι → β → α
f : β → α
p : Filter ι
⊢ (∀ ε > 0, ∀ᶠ (n : ι) in p, ∀ x ∈ univ, dist (f x) (F n x) < ε) ↔
    ∀ ε > 0, ∀ᶠ (n : ι) in p, ∀ (x : β), dist (f x) (F n x) < ε
state_after: no goals
tactic: simp
Theorem: atom_le_iSup
File: Mathlib/Order/Atoms.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
⊢ a ≤ iSup f ↔ ∃ i, a ≤ f i
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
⊢ a ≤ iSup f → ∃ i, a ≤ f i
tactic: refine ⟨?_, fun ⟨i, hi⟩ => le_trans hi (le_iSup _ _)⟩
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
⊢ a ≤ iSup f → ∃ i, a ≤ f i
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
⊢ a ≤ ⨆ i, f i → ∃ i, a ≤ f i
tactic: show (a ≤ ⨆ i, f i) → _
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
⊢ a ≤ ⨆ i, f i → ∃ i, a ≤ f i
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
h : a ≤ ⨆ i, f i
ha' : ¬∃ i, a ≤ f i
⊢ False
tactic: refine fun h => of_not_not fun ha' => ?_
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
h : a ≤ ⨆ i, f i
ha' : ¬∃ i, a ≤ f i
⊢ False
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
h : a ≤ ⨆ i, f i
ha' : ∀ (i : ι), ¬a ≤ f i
⊢ False
tactic: push_neg at ha'
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
h : a ≤ ⨆ i, f i
ha' : ∀ (i : ι), ¬a ≤ f i
⊢ False
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
h : a ≤ ⨆ i, f i
ha' : ∀ (i : ι), ¬a ≤ f i
ha'' : Disjoint a (⨆ i, f i)
⊢ False
tactic: have ha'' : Disjoint a (⨆ i, f i) :=
    disjoint_iSup_iff.2 fun i => fun x hxa hxf => le_bot_iff.2 <| of_not_not fun hx =>
      have hxa : x < a := (le_iff_eq_or_lt.1 hxa).resolve_left (by rintro rfl; exact ha' _ hxf)
      hx (ha.2 _ hxa)
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
a : α
ha : IsAtom a
f : ι → α
h : a ≤ ⨆ i, f i
ha' : ∀ (i : ι), ¬a ≤ f i
ha'' : Disjoint a (⨆ i, f i)
⊢ False
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
f : ι → α
ha : IsAtom ⊥
h : ⊥ ≤ ⨆ i, f i
ha' : ∀ (i : ι), ¬⊥ ≤ f i
ha'' : Disjoint ⊥ (⨆ i, f i)
⊢ False
tactic: obtain rfl := le_bot_iff.1 (ha'' le_rfl h)
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : Order.Frame α
f : ι → α
ha : IsAtom ⊥
h : ⊥ ≤ ⨆ i, f i
ha' : ∀ (i : ι), ¬⊥ ≤ f i
ha'' : Disjoint ⊥ (⨆ i, f i)
⊢ False
state_after: no goals
tactic: exact ha.1 rfl
Theorem: uniformCauchySeqOn_iff_uniformCauchySeqOnFilter
File: Mathlib/Topology/UniformSpace/UniformConvergence.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
⊢ UniformCauchySeqOn F p s ↔ UniformCauchySeqOnFilter F p (𝓟 s)
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
⊢ (∀ u ∈ 𝓤 β, ∀ᶠ (m : ι × ι) in p ×ˢ p, ∀ x ∈ s, (F m.1 x, F m.2 x) ∈ u) ↔
    ∀ u ∈ 𝓤 β, ∀ᶠ (m : (ι × ι) × α) in (p ×ˢ p) ×ˢ 𝓟 s, (F m.1.1 m.2, F m.1.2 m.2) ∈ u
tactic: simp only [UniformCauchySeqOn, UniformCauchySeqOnFilter]
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
⊢ (∀ u ∈ 𝓤 β, ∀ᶠ (m : ι × ι) in p ×ˢ p, ∀ x ∈ s, (F m.1 x, F m.2 x) ∈ u) ↔
    ∀ u ∈ 𝓤 β, ∀ᶠ (m : (ι × ι) × α) in (p ×ˢ p) ×ˢ 𝓟 s, (F m.1.1 m.2, F m.1.2 m.2) ∈ u
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
u : Set (β × β)
hu : u ∈ 𝓤 β
⊢ (∀ᶠ (m : ι × ι) in p ×ˢ p, ∀ x ∈ s, (F m.1 x, F m.2 x) ∈ u) ↔
    ∀ᶠ (m : (ι × ι) × α) in (p ×ˢ p) ×ˢ 𝓟 s, (F m.1.1 m.2, F m.1.2 m.2) ∈ u
tactic: refine forall₂_congr fun u hu => ?_
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
u : Set (β × β)
hu : u ∈ 𝓤 β
⊢ (∀ᶠ (m : ι × ι) in p ×ˢ p, ∀ x ∈ s, (F m.1 x, F m.2 x) ∈ u) ↔
    ∀ᶠ (m : (ι × ι) × α) in (p ×ˢ p) ×ˢ 𝓟 s, (F m.1.1 m.2, F m.1.2 m.2) ∈ u
state_after: no goals
tactic: rw [eventually_prod_principal_iff]
Theorem: Real.strictAnti_rpow_of_base_lt_one
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

Proof steps:
state_before: x y z : ℝ
n : ℕ
b : ℝ
hb₀ : 0 < b
hb₁ : b < 1
⊢ StrictAnti fun x => b ^ x
state_after: x y z : ℝ
n : ℕ
b : ℝ
hb₀ : 0 < b
hb₁ : b < 1
⊢ StrictAnti fun x => rexp (log b * x)
tactic: simp_rw [Real.rpow_def_of_pos hb₀]
state_before: x y z : ℝ
n : ℕ
b : ℝ
hb₀ : 0 < b
hb₁ : b < 1
⊢ StrictAnti fun x => rexp (log b * x)
state_after: no goals
tactic: exact exp_strictMono.comp_strictAnti <| StrictMono.const_mul_of_neg strictMono_id
      <| Real.log_neg hb₀ hb₁
Theorem: LocalizedModule.liftOn₂_mk
File: Mathlib/Algebra/Module/LocalizedModule.lean

Proof steps:
state_before: R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
α : Type u_2
f : M × ↥S → M × ↥S → α
wd : ∀ (p q p' q' : M × ↥S), p ≈ p' → q ≈ q' → f p q = f p' q'
m m' : M
s s' : ↥S
⊢ (mk m s).liftOn₂ (mk m' s') f wd = f (m, s) (m', s')
state_after: no goals
tactic: convert Quotient.liftOn₂_mk f wd _ _
Theorem: InnerProductGeometry.angle_sub_eq_angle_sub_rev_of_norm_eq
File: Mathlib/Geometry/Euclidean/Triangle.lean

Proof steps:
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ‖x‖ = ‖y‖
⊢ angle x (x - y) = angle y (y - x)
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ‖x‖ = ‖y‖
⊢ Real.cos (angle x (x - y)) = Real.cos (angle y (y - x))
tactic: refine Real.injOn_cos ⟨angle_nonneg _ _, angle_le_pi _ _⟩ ⟨angle_nonneg _ _, angle_le_pi _ _⟩ ?_
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ‖x‖ = ‖y‖
⊢ Real.cos (angle x (x - y)) = Real.cos (angle y (y - x))
state_after: no goals
tactic: rw [cos_angle, cos_angle, h, ← neg_sub, norm_neg, neg_sub, inner_sub_right, inner_sub_right,
    real_inner_self_eq_norm_mul_norm, real_inner_self_eq_norm_mul_norm, h, real_inner_comm x y]
Theorem: MeasureTheory.VectorMeasure.le_restrict_univ_iff_le
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
M : Type u_3
inst✝² : TopologicalSpace M
inst✝¹ : AddCommMonoid M
inst✝ : PartialOrder M
v w : VectorMeasure α M
⊢ v.restrict univ ≤ w.restrict univ ↔ v ≤ w
state_after: case mp
α : Type u_1
β : Type u_2
m : MeasurableSpace α
M : Type u_3
inst✝² : TopologicalSpace M
inst✝¹ : AddCommMonoid M
inst✝ : PartialOrder M
v w : VectorMeasure α M
⊢ v.restrict univ ≤ w.restrict univ → v ≤ w

case mpr
α : Type u_1
β : Type u_2
m : MeasurableSpace α
M : Type u_3
inst✝² : TopologicalSpace M
inst✝¹ : AddCommMonoid M
inst✝ : PartialOrder M
v w : VectorMeasure α M
⊢ v ≤ w → v.restrict univ ≤ w.restrict univ
tactic: constructor
Theorem: List.eraseP_cons_of_pos
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

Proof steps:
state_before: α : Type u_1
a : α
l : List α
p : α → Bool
h : p a = true
⊢ eraseP p (a :: l) = l
state_after: no goals
tactic: simp [eraseP_cons, h]
Theorem: Cardinal.natCast_add_one_le_iff
File: Mathlib/SetTheory/Cardinal/Basic.lean

Proof steps:
state_before: α β : Type u
n : ℕ
c : Cardinal.{u_1}
⊢ ↑n + 1 ≤ c ↔ ↑n < c
state_after: no goals
tactic: rw [← Order.succ_le_iff, Cardinal.succ_natCast]
Theorem: WCovBy.Ico_subset
File: Mathlib/Order/Cover.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ⩿ b
⊢ Ico a b ⊆ {a}
state_after: no goals
tactic: rw [← Icc_diff_right, h.Icc_eq, diff_singleton_subset_iff, pair_comm]
Theorem: HahnSeries.C_injective
File: Mathlib/RingTheory/HahnSeries/Multiplication.lean

Proof steps:
state_before: Γ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonAssocSemiring R
⊢ Injective ⇑C
state_after: Γ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonAssocSemiring R
r s : R
rs : C r = C s
⊢ r = s
tactic: intro r s rs
state_before: Γ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonAssocSemiring R
r s : R
rs : C r = C s
⊢ r = s
state_after: Γ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonAssocSemiring R
r s : R
rs : ∀ (a : Γ), (C r).coeff a = (C s).coeff a
⊢ r = s
tactic: rw [HahnSeries.ext_iff, Function.funext_iff] at rs
state_before: Γ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonAssocSemiring R
r s : R
rs : ∀ (a : Γ), (C r).coeff a = (C s).coeff a
⊢ r = s
state_after: Γ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonAssocSemiring R
r s : R
rs : ∀ (a : Γ), (C r).coeff a = (C s).coeff a
h : (C r).coeff 0 = (C s).coeff 0
⊢ r = s
tactic: have h := rs 0
state_before: Γ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonAssocSemiring R
r s : R
rs : ∀ (a : Γ), (C r).coeff a = (C s).coeff a
h : (C r).coeff 0 = (C s).coeff 0
⊢ r = s
state_after: no goals
tactic: rwa [C_apply, single_coeff_same, C_apply, single_coeff_same] at h
Theorem: MeasureTheory.Integrable.induction
File: Mathlib/MeasureTheory/Function/SimpleFuncDenseLp.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f : α → E
p : ℝ≥0∞
μ : Measure α
P : (α → E) → Prop
h_ind : ∀ (c : E) ⦃s : Set α⦄, MeasurableSet s → μ s < ⊤ → P (s.indicator fun x => c)
h_add : ∀ ⦃f g : α → E⦄, Disjoint (support f) (support g) → Integrable f μ → Integrable g μ → P f → P g → P (f + g)
h_closed : IsClosed {f | P ↑↑f}
h_ae : ∀ ⦃f g : α → E⦄, f =ᶠ[ae μ] g → Integrable f μ → P f → P g
⊢ ∀ ⦃f : α → E⦄, Integrable f μ → P f
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f : α → E
p : ℝ≥0∞
μ : Measure α
P : (α → E) → Prop
h_ind : ∀ (c : E) ⦃s : Set α⦄, MeasurableSet s → μ s < ⊤ → P (s.indicator fun x => c)
h_closed : IsClosed {f | P ↑↑f}
h_add : ∀ ⦃f g : α → E⦄, Disjoint (support f) (support g) → Memℒp f 1 μ → Memℒp g 1 μ → P f → P g → P (f + g)
h_ae : ∀ ⦃f g : α → E⦄, f =ᶠ[ae μ] g → Memℒp f 1 μ → P f → P g
⊢ ∀ ⦃f : α → E⦄, Memℒp f 1 μ → P f
tactic: simp only [← memℒp_one_iff_integrable] at *
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f : α → E
p : ℝ≥0∞
μ : Measure α
P : (α → E) → Prop
h_ind : ∀ (c : E) ⦃s : Set α⦄, MeasurableSet s → μ s < ⊤ → P (s.indicator fun x => c)
h_closed : IsClosed {f | P ↑↑f}
h_add : ∀ ⦃f g : α → E⦄, Disjoint (support f) (support g) → Memℒp f 1 μ → Memℒp g 1 μ → P f → P g → P (f + g)
h_ae : ∀ ⦃f g : α → E⦄, f =ᶠ[ae μ] g → Memℒp f 1 μ → P f → P g
⊢ ∀ ⦃f : α → E⦄, Memℒp f 1 μ → P f
state_after: no goals
tactic: exact Memℒp.induction one_ne_top (P := P) h_ind h_add h_closed h_ae
Theorem: Mathlib.Meta.NormNum.isFibAux_two_mul_add_one
File: Mathlib/Tactic/NormNum/NatFib.lean

Proof steps:
state_before: n a b n' a' b' : ℕ
H : IsFibAux n a b
hn : 2 * n + 1 = n'
h1 : a * a + b * b = a'
h2 : b * (2 * a + b) = b'
⊢ fib n' = a'
state_after: no goals
tactic: rw [← hn, fib_two_mul_add_one, H.1, H.2, pow_two, pow_two, add_comm, h1]
state_before: n a b n' a' b' : ℕ
H : IsFibAux n a b
hn : 2 * n + 1 = n'
h1 : a * a + b * b = a'
h2 : b * (2 * a + b) = b'
⊢ fib (n' + 1) = b'
state_after: no goals
tactic: rw [← hn, fib_two_mul_add_two, H.1, H.2, h2]
Theorem: HurwitzZeta.cosZeta_one_sub
File: Mathlib/NumberTheory/LSeries/HurwitzZetaEven.lean

Proof steps:
state_before: a : UnitAddCircle
s : ℂ
hs : ∀ (n : ℕ), s ≠ 1 - ↑n
⊢ cosZeta a (1 - s) = 2 * (2 * ↑π) ^ (-s) * Complex.Gamma s * Complex.cos (↑π * s / 2) * hurwitzZetaEven a s
state_after: a : UnitAddCircle
s : ℂ
hs : ∀ (n : ℕ), s ≠ 1 - ↑n
⊢ cosZeta a (1 - s) = s.Gammaℂ * Complex.cos (↑π * s / 2) * hurwitzZetaEven a s
tactic: rw [← Gammaℂ]
state_before: a : UnitAddCircle
s : ℂ
hs : ∀ (n : ℕ), s ≠ 1 - ↑n
⊢ cosZeta a (1 - s) = s.Gammaℂ * Complex.cos (↑π * s / 2) * hurwitzZetaEven a s
state_after: a : UnitAddCircle
s : ℂ
hs : ∀ (n : ℕ), s ≠ 1 - ↑n
this : cosZeta a (1 - s) = completedCosZeta a (1 - s) * (1 - s).Gammaℝ⁻¹
⊢ cosZeta a (1 - s) = s.Gammaℂ * Complex.cos (↑π * s / 2) * hurwitzZetaEven a s
tactic: have : cosZeta a (1 - s) = completedCosZeta a (1 - s) * (Gammaℝ (1 - s))⁻¹ := by
    rw [cosZeta, Function.update_noteq, div_eq_mul_inv]
    simpa [sub_eq_zero] using (hs 0).symm
state_before: a : UnitAddCircle
s : ℂ
hs : ∀ (n : ℕ), s ≠ 1 - ↑n
this : cosZeta a (1 - s) = completedCosZeta a (1 - s) * (1 - s).Gammaℝ⁻¹
⊢ cosZeta a (1 - s) = s.Gammaℂ * Complex.cos (↑π * s / 2) * hurwitzZetaEven a s
state_after: a : UnitAddCircle
s : ℂ
hs : ∀ (n : ℕ), s ≠ 1 - ↑n
this : cosZeta a (1 - s) = completedCosZeta a (1 - s) * (1 - s).Gammaℝ⁻¹
⊢ completedHurwitzZetaEven a s * (s.Gammaℂ * Complex.cos (↑π * s / 2) * s.Gammaℝ⁻¹) =
    s.Gammaℂ * Complex.cos (↑π * s / 2) * (completedHurwitzZetaEven a s / s.Gammaℝ)
tactic: rw [this, completedCosZeta_one_sub, inv_Gammaℝ_one_sub (fun n ↦ by simpa using hs (n + 1)),
    hurwitzZetaEven_def_of_ne_or_ne (Or.inr (by simpa using hs 1))]
state_before: a : UnitAddCircle
s : ℂ
hs : ∀ (n : ℕ), s ≠ 1 - ↑n
this : cosZeta a (1 - s) = completedCosZeta a (1 - s) * (1 - s).Gammaℝ⁻¹
⊢ completedHurwitzZetaEven a s * (s.Gammaℂ * Complex.cos (↑π * s / 2) * s.Gammaℝ⁻¹) =
    s.Gammaℂ * Complex.cos (↑π * s / 2) * (completedHurwitzZetaEven a s / s.Gammaℝ)
state_after: a : UnitAddCircle
s : ℂ
hs : ∀ (n : ℕ), s ≠ 1 - ↑n
this : cosZeta a (1 - s) = completedCosZeta a (1 - s) * (1 - s).Gammaℝ⁻¹
A : ℂ
⊢ completedHurwitzZetaEven a s * (A * s.Gammaℝ⁻¹) = A * (completedHurwitzZetaEven a s / s.Gammaℝ)
tactic: generalize Gammaℂ s * cos (π * s / 2) = A
state_before: a : UnitAddCircle
s : ℂ
hs : ∀ (n : ℕ), s ≠ 1 - ↑n
this : cosZeta a (1 - s) = completedCosZeta a (1 - s) * (1 - s).Gammaℝ⁻¹
A : ℂ
⊢ completedHurwitzZetaEven a s * (A * s.Gammaℝ⁻¹) = A * (completedHurwitzZetaEven a s / s.Gammaℝ)
state_after: no goals
tactic: ring_nf
Theorem: IsSemisimpleModule.sSup_simples_le
File: Mathlib/RingTheory/SimpleModule.lean

Proof steps:
state_before: ι : Type u_1
R : Type u_2
S : Type u_3
inst✝⁶ : Ring R
inst✝⁵ : Ring S
M : Type u_4
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
m : Submodule R M
N✝ : Type u_5
inst✝² : AddCommGroup N✝
inst✝¹ : Module R N✝
inst✝ : IsSemisimpleModule R M
N : Submodule R M
⊢ sSup {m | IsSimpleModule R ↥m ∧ m ≤ N} = N
state_after: no goals
tactic: simpa only [isSimpleModule_iff_isAtom] using sSup_atoms_le_eq _
Theorem: WeierstrassCurve.Φ_neg
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

Proof steps:
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
n : ℤ
⊢ W.Φ (-n) = W.Φ n
state_after: no goals
tactic: simp only [Φ, ΨSq_neg, neg_add_eq_sub, ← neg_sub n, preΨ_neg, ← neg_add', preΨ_neg, neg_mul_neg,
    mul_comm <| W.preΨ <| n - 1, even_neg]
Theorem: Polynomial.span_le_of_C_coeff_mem
File: Mathlib/Algebra/Polynomial/Induction.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
ι : Type x
k : Type y
A : Type z
a b : R
m n : ℕ
inst✝ : Semiring R
p q r f : R[X]
I : Ideal R[X]
cf : ∀ (i : ℕ), C (f.coeff i) ∈ I
⊢ Ideal.span {g | ∃ i, g = C (f.coeff i)} ≤ I
state_after: R : Type u
S : Type v
T : Type w
ι : Type x
k : Type y
A : Type z
a b : R
m n : ℕ
inst✝ : Semiring R
p q r f : R[X]
I : Ideal R[X]
cf : ∀ (i : ℕ), C (f.coeff i) ∈ I
⊢ Ideal.span {g | ∃ i, C (f.coeff i) = g} ≤ I
tactic: simp only [@eq_comm _ _ (C _)]
state_before: R : Type u
S : Type v
T : Type w
ι : Type x
k : Type y
A : Type z
a b : R
m n : ℕ
inst✝ : Semiring R
p q r f : R[X]
I : Ideal R[X]
cf : ∀ (i : ℕ), C (f.coeff i) ∈ I
⊢ Ideal.span {g | ∃ i, C (f.coeff i) = g} ≤ I
state_after: no goals
tactic: exact (Ideal.span_le.trans range_subset_iff).mpr cf
Theorem: SimpleGraph.right_nonuniformWitnesses_subset
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Uniform.lean

Proof steps:
state_before: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
⊢ (G.nonuniformWitnesses ε s t).2 ⊆ t
state_after: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
⊢ (⋯.choose, ⋯.choose).2 ⊆ t
tactic: rw [nonuniformWitnesses, dif_pos h]
state_before: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
⊢ (⋯.choose, ⋯.choose).2 ⊆ t
state_after: no goals
tactic: exact (not_isUniform_iff.1 h).choose_spec.2.choose_spec.1
Theorem: multiplicity.Int.natCast_multiplicity
File: Mathlib/RingTheory/Multiplicity.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Monoid α
inst✝ : Monoid β
a b : ℕ
⊢ multiplicity ↑a ↑b = multiplicity a b
state_after: case a
α : Type u_1
β : Type u_2
inst✝¹ : Monoid α
inst✝ : Monoid β
a b : ℕ
⊢ (multiplicity ↑a ↑b).Dom ↔ (multiplicity a b).Dom

case a
α : Type u_1
β : Type u_2
inst✝¹ : Monoid α
inst✝ : Monoid β
a b : ℕ
⊢ ∀ (h₁ : (multiplicity ↑a ↑b).Dom) (h₂ : (multiplicity a b).Dom),
    (multiplicity ↑a ↑b).get h₁ = (multiplicity a b).get h₂
tactic: apply Part.ext'
Theorem: WeakFEPair.differentiableAt_Λ
File: Mathlib/NumberTheory/LSeries/AbstractFuncEq.lean

Proof steps:
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : WeakFEPair E
s : ℂ
hs : s ≠ 0 ∨ P.f₀ = 0
hs' : s ≠ ↑P.k ∨ P.g₀ = 0
⊢ DifferentiableAt ℂ P.Λ s
state_after: case refine_1
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : WeakFEPair E
s : ℂ
hs : s ≠ 0 ∨ P.f₀ = 0
hs' : s ≠ ↑P.k ∨ P.g₀ = 0
⊢ DifferentiableAt ℂ (fun y => (1 / y) • P.f₀) s

case refine_2
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : WeakFEPair E
s : ℂ
hs : s ≠ 0 ∨ P.f₀ = 0
hs' : s ≠ ↑P.k ∨ P.g₀ = 0
⊢ DifferentiableAt ℂ (fun y => (P.ε / (↑P.k - y)) • P.g₀) s
tactic: refine ((P.differentiable_Λ₀ s).sub ?_).sub ?_
Theorem: meagre_empty
File: Mathlib/Topology/GDelta.lean

Proof steps:
state_before: X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
X : Type u_5
inst✝ : TopologicalSpace X
⊢ IsMeagre ∅
state_after: X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
X : Type u_5
inst✝ : TopologicalSpace X
⊢ univ ∈ residual X
tactic: rw [IsMeagre, compl_empty]
state_before: X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
X : Type u_5
inst✝ : TopologicalSpace X
⊢ univ ∈ residual X
state_after: no goals
tactic: exact Filter.univ_mem
Theorem: Polynomial.wronskian_self_eq_zero
File: Mathlib/RingTheory/Polynomial/Wronskian.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommRing R
a : R[X]
⊢ a.wronskian a = 0
state_after: no goals
tactic: rw [wronskian, mul_comm, sub_self]
Theorem: selfZPow_neg_mul
File: Mathlib/RingTheory/Localization/Away/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝³ : CommRing R
x : R
B : Type u_2
inst✝² : CommRing B
inst✝¹ : Algebra R B
inst✝ : IsLocalization.Away x B
d : ℤ
⊢ selfZPow x B (-d) * selfZPow x B d = 1
state_after: no goals
tactic: rw [mul_comm, selfZPow_mul_neg x B d]
Theorem: ENNReal.rpow_natCast
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

Proof steps:
state_before: x : ℝ≥0∞
n : ℕ
⊢ x ^ ↑n = x ^ n
state_after: case top
n : ℕ
⊢ ⊤ ^ ↑n = ⊤ ^ n

case coe
n : ℕ
x✝ : ℝ≥0
⊢ ↑x✝ ^ ↑n = ↑x✝ ^ n
tactic: cases x
Theorem: MulChar.inv_apply
File: Mathlib/NumberTheory/MulChar/Basic.lean

Proof steps:
state_before: R✝ : Type u_1
inst✝² : CommMonoid R✝
R' : Type u_2
inst✝¹ : CommMonoidWithZero R'
R : Type u_3
inst✝ : CommMonoidWithZero R
χ : MulChar R R'
a : R
⊢ χ⁻¹ a = χ (Ring.inverse a)
state_after: case pos
R✝ : Type u_1
inst✝² : CommMonoid R✝
R' : Type u_2
inst✝¹ : CommMonoidWithZero R'
R : Type u_3
inst✝ : CommMonoidWithZero R
χ : MulChar R R'
a : R
ha : IsUnit a
⊢ χ⁻¹ a = χ (Ring.inverse a)

case neg
R✝ : Type u_1
inst✝² : CommMonoid R✝
R' : Type u_2
inst✝¹ : CommMonoidWithZero R'
R : Type u_3
inst✝ : CommMonoidWithZero R
χ : MulChar R R'
a : R
ha : ¬IsUnit a
⊢ χ⁻¹ a = χ (Ring.inverse a)
tactic: by_cases ha : IsUnit a