ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Polynomial.toLaurent_X_pow
File: Mathlib/Algebra/Polynomial/Laurent.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
n : ℕ
⊢ toLaurent (X ^ n) = T ↑n
state_after: no goals
tactic: simp only [map_pow, Polynomial.toLaurent_X, T_pow, mul_one]
Theorem: TensorProduct.finsuppLeft_symm_apply_single
File: Mathlib/LinearAlgebra/DirectSum/Finsupp.lean

Proof steps:
state_before: R : Type u_1
inst✝⁵ : CommSemiring R
M : Type u_2
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
N : Type u_3
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
ι : Type u_4
inst✝ : DecidableEq ι
i : ι
m : M
n : N
⊢ (finsuppLeft R M N ι).symm (Finsupp.single i (m ⊗ₜ[R] n)) = Finsupp.single i m ⊗ₜ[R] n
state_after: no goals
tactic: simp [finsuppLeft, Finsupp.lsum]
Theorem: norm_mul_le'
File: Mathlib/Analysis/Normed/Group/Basic.lean

Proof steps:
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a✝ a₁ a₂ b✝ b₁ b₂ : E
r r₁ r₂ : ℝ
a b : E
⊢ ‖a * b‖ ≤ ‖a‖ + ‖b‖
state_after: no goals
tactic: simpa [dist_eq_norm_div] using dist_triangle a 1 b⁻¹
Theorem: IsGLB.biUnion_Ici_eq_Ioi
File: Mathlib/Order/Interval/Set/Disjoint.lean

Proof steps:
state_before: ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
s : Set α
a : α
f : ι → α
a_glb : IsGLB s a
a_not_mem : a ∉ s
⊢ ⋃ x ∈ s, Ici x = Ioi a
state_after: case refine_1
ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
s : Set α
a : α
f : ι → α
a_glb : IsGLB s a
a_not_mem : a ∉ s
x : α
hx : x ∈ s
⊢ Ici x ⊆ Ioi a

case refine_2
ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
s : Set α
a : α
f : ι → α
a_glb : IsGLB s a
a_not_mem : a ∉ s
x : α
hx : x ∈ Ioi a
⊢ x ∈ ⋃ i ∈ s, Ici i
tactic: refine (iUnion₂_subset fun x hx => ?_).antisymm fun x hx => ?_
Theorem: HasLineDerivWithinAt.congr_of_eventuallyEq
File: Mathlib/Analysis/Calculus/LineDeriv/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ : E → F
f' : F
s t : Set E
x v : E
L : E →L[𝕜] F
hf : HasLineDerivWithinAt 𝕜 f f' s x v
h'f : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
⊢ HasLineDerivWithinAt 𝕜 f₁ f' s x v
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ : E → F
f' : F
s t : Set E
x v : E
L : E →L[𝕜] F
hf : HasLineDerivWithinAt 𝕜 f f' s x v
h'f : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
⊢ (fun t => f₁ (x + t • v)) =ᶠ[𝓝[(fun t => x + t • v) ⁻¹' s] 0] fun t => f (x + t • v)
tactic: apply HasDerivWithinAt.congr_of_eventuallyEq hf _ (by simp [hx])
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ : E → F
f' : F
s t : Set E
x v : E
L : E →L[𝕜] F
hf : HasLineDerivWithinAt 𝕜 f f' s x v
h'f : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
⊢ (fun t => f₁ (x + t • v)) =ᶠ[𝓝[(fun t => x + t • v) ⁻¹' s] 0] fun t => f (x + t • v)
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ : E → F
f' : F
s t : Set E
x v : E
L : E →L[𝕜] F
hf : HasLineDerivWithinAt 𝕜 f f' s x v
h'f : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
A : Continuous fun t => x + t • v
⊢ (fun t => f₁ (x + t • v)) =ᶠ[𝓝[(fun t => x + t • v) ⁻¹' s] 0] fun t => f (x + t • v)
tactic: have A : Continuous (fun (t : 𝕜) ↦ x + t • v) := by fun_prop
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ : E → F
f' : F
s t : Set E
x v : E
L : E →L[𝕜] F
hf : HasLineDerivWithinAt 𝕜 f f' s x v
h'f : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
A : Continuous fun t => x + t • v
⊢ (fun t => f₁ (x + t • v)) =ᶠ[𝓝[(fun t => x + t • v) ⁻¹' s] 0] fun t => f (x + t • v)
state_after: no goals
tactic: exact A.continuousWithinAt.preimage_mem_nhdsWithin'' h'f (by simp)
Theorem: AhlswedeZhang.infSum_union_add_infSum_sups
File: Mathlib/Combinatorics/SetFamily/AhlswedeZhang.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s : Finset α
𝒜 ℬ : Finset (Finset α)
⊢ infSum (𝒜 ∪ ℬ) + infSum (𝒜 ⊻ ℬ) = infSum 𝒜 + infSum ℬ
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s : Finset α
𝒜 ℬ : Finset (Finset α)
⊢ ∑ s : Finset α, ↑((𝒜 ∪ ℬ).truncatedInf s).card / (↑s.card * ↑((card α).choose s.card)) +
      ∑ s : Finset α, ↑((𝒜 ⊻ ℬ).truncatedInf s).card / (↑s.card * ↑((card α).choose s.card)) =
    ∑ s : Finset α, ↑(𝒜.truncatedInf s).card / (↑s.card * ↑((card α).choose s.card)) +
      ∑ s : Finset α, ↑(ℬ.truncatedInf s).card / (↑s.card * ↑((card α).choose s.card))
tactic: unfold infSum
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s : Finset α
𝒜 ℬ : Finset (Finset α)
⊢ ∑ s : Finset α, ↑((𝒜 ∪ ℬ).truncatedInf s).card / (↑s.card * ↑((card α).choose s.card)) +
      ∑ s : Finset α, ↑((𝒜 ⊻ ℬ).truncatedInf s).card / (↑s.card * ↑((card α).choose s.card)) =
    ∑ s : Finset α, ↑(𝒜.truncatedInf s).card / (↑s.card * ↑((card α).choose s.card)) +
      ∑ s : Finset α, ↑(ℬ.truncatedInf s).card / (↑s.card * ↑((card α).choose s.card))
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s : Finset α
𝒜 ℬ : Finset (Finset α)
⊢ ∀ s ∈ univ,
    ↑((𝒜 ∪ ℬ).truncatedInf s).card / (↑s.card * ↑((card α).choose s.card)) +
        ↑((𝒜 ⊻ ℬ).truncatedInf s).card / (↑s.card * ↑((card α).choose s.card)) =
      ↑(𝒜.truncatedInf s).card / (↑s.card * ↑((card α).choose s.card)) +
        ↑(ℬ.truncatedInf s).card / (↑s.card * ↑((card α).choose s.card))
tactic: rw [← sum_add_distrib, ← sum_add_distrib, sum_congr rfl fun s _ ↦ _]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s : Finset α
𝒜 ℬ : Finset (Finset α)
⊢ ∀ s ∈ univ,
    ↑((𝒜 ∪ ℬ).truncatedInf s).card / (↑s.card * ↑((card α).choose s.card)) +
        ↑((𝒜 ⊻ ℬ).truncatedInf s).card / (↑s.card * ↑((card α).choose s.card)) =
      ↑(𝒜.truncatedInf s).card / (↑s.card * ↑((card α).choose s.card)) +
        ↑(ℬ.truncatedInf s).card / (↑s.card * ↑((card α).choose s.card))
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s : Finset α
𝒜 ℬ : Finset (Finset α)
⊢ ∀ s ∈ univ, True
tactic: simp_rw [div_add_div_same, ← Nat.cast_add, card_truncatedInf_union_add_card_truncatedInf_sups]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s : Finset α
𝒜 ℬ : Finset (Finset α)
⊢ ∀ s ∈ univ, True
state_after: no goals
tactic: simp
Theorem: UpperHalfPlane.sinh_half_dist_add_dist
File: Mathlib/Analysis/Complex/UpperHalfPlane/Metric.lean

Proof steps:
state_before: z w : ℍ
r R : ℝ
a b c : ℍ
⊢ sinh ((dist a b + dist b c) / 2) =
    (dist ↑a ↑b * dist (↑c) ((starRingEnd ℂ) ↑b) + dist ↑b ↑c * dist (↑a) ((starRingEnd ℂ) ↑b)) /
      (2 * √(a.im * c.im) * dist (↑b) ((starRingEnd ℂ) ↑b))
state_after: z w : ℍ
r R : ℝ
a b c : ℍ
⊢ dist ↑a ↑b * dist (↑b) ((starRingEnd ℂ) ↑c) / (2 * √(a.im * b.im) * (2 * √(b.im * c.im))) +
      dist (↑a) ((starRingEnd ℂ) ↑b) * dist ↑b ↑c / (2 * √(a.im * b.im) * (2 * √(b.im * c.im))) =
    (dist ↑a ↑b * dist (↑c) ((starRingEnd ℂ) ↑b) + dist ↑b ↑c * dist (↑a) ((starRingEnd ℂ) ↑b)) /
      (2 * √(a.im * c.im) * dist (↑b) ((starRingEnd ℂ) ↑b))
tactic: simp only [add_div _ _ (2 : ℝ), sinh_add, sinh_half_dist, cosh_half_dist, div_mul_div_comm]
state_before: z w : ℍ
r R : ℝ
a b c : ℍ
⊢ dist ↑a ↑b * dist (↑b) ((starRingEnd ℂ) ↑c) / (2 * √(a.im * b.im) * (2 * √(b.im * c.im))) +
      dist (↑a) ((starRingEnd ℂ) ↑b) * dist ↑b ↑c / (2 * √(a.im * b.im) * (2 * √(b.im * c.im))) =
    (dist ↑a ↑b * dist (↑c) ((starRingEnd ℂ) ↑b) + dist ↑b ↑c * dist (↑a) ((starRingEnd ℂ) ↑b)) /
      (2 * √(a.im * c.im) * dist (↑b) ((starRingEnd ℂ) ↑b))
state_after: z w : ℍ
r R : ℝ
a b c : ℍ
⊢ (dist ↑a ↑b * dist (↑c) ((starRingEnd ℂ) ↑b) + dist (↑a) ((starRingEnd ℂ) ↑b) * dist ↑b ↑c) /
      (2 * 2 * (√(a.im * b.im) * √(b.im * c.im))) =
    (dist ↑a ↑b * dist (↑c) ((starRingEnd ℂ) ↑b) + dist (↑a) ((starRingEnd ℂ) ↑b) * dist ↑b ↑c) /
      (2 * 2 * (√(a.im * c.im) * b.im))
tactic: rw [← add_div, Complex.dist_self_conj, coe_im, abs_of_pos b.im_pos, mul_comm (dist (b : ℂ) _),
    dist_comm (b : ℂ), Complex.dist_conj_comm, mul_mul_mul_comm, mul_mul_mul_comm _ _ _ b.im]
state_before: z w : ℍ
r R : ℝ
a b c : ℍ
⊢ (dist ↑a ↑b * dist (↑c) ((starRingEnd ℂ) ↑b) + dist (↑a) ((starRingEnd ℂ) ↑b) * dist ↑b ↑c) /
      (2 * 2 * (√(a.im * b.im) * √(b.im * c.im))) =
    (dist ↑a ↑b * dist (↑c) ((starRingEnd ℂ) ↑b) + dist (↑a) ((starRingEnd ℂ) ↑b) * dist ↑b ↑c) /
      (2 * 2 * (√(a.im * c.im) * b.im))
state_after: case e_a.e_a
z w : ℍ
r R : ℝ
a b c : ℍ
⊢ √(a.im * b.im) * √(b.im * c.im) = √(a.im * c.im) * b.im
tactic: congr 2
state_before: case e_a.e_a
z w : ℍ
r R : ℝ
a b c : ℍ
⊢ √(a.im * b.im) * √(b.im * c.im) = √(a.im * c.im) * b.im
state_after: no goals
tactic: rw [sqrt_mul, sqrt_mul, sqrt_mul, mul_comm (√a.im), mul_mul_mul_comm, mul_self_sqrt,
      mul_comm] <;> exact (im_pos _).le
Theorem: Matrix.J_det_mul_J_det
File: Mathlib/LinearAlgebra/SymplecticGroup.lean

Proof steps:
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype l
⊢ (J l R).det * (J l R).det = 1
state_after: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype l
⊢ (-1) ^ (Fintype.card l + Fintype.card l) = 1
tactic: rw [← det_mul, J_squared, ← one_smul R (-1 : Matrix _ _ R), smul_neg, ← neg_smul, det_smul,
    Fintype.card_sum, det_one, mul_one]
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype l
⊢ (-1) ^ (Fintype.card l + Fintype.card l) = 1
state_after: case h
l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype l
⊢ Even (Fintype.card l + Fintype.card l)
tactic: apply Even.neg_one_pow
state_before: case h
l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype l
⊢ Even (Fintype.card l + Fintype.card l)
state_after: no goals
tactic: exact even_add_self _
Theorem: Finset.exists_next_right
File: Mathlib/Data/Finset/Lattice.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x✝ x : α
s : Finset α
h : ∃ y ∈ s, x < y
y : α
hy : y ∈ s ∧ x < y
⊢ y ∈ s ∧ x < y
state_after: no goals
tactic: simpa
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x✝ x : α
s : Finset α
h : ∃ y ∈ s, x < y
Hne : (filter (fun x_1 => x < x_1) s).Nonempty
aux : (filter (fun x_1 => x < x_1) s).min' Hne ∈ s ∧ x < (filter (fun x_1 => x < x_1) s).min' Hne
⊢ x < (filter (fun x_1 => x < x_1) s).min' Hne
state_after: no goals
tactic: simp
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x✝ x : α
s : Finset α
h : ∃ y ∈ s, x < y
Hne : (filter (fun x_1 => x < x_1) s).Nonempty
aux : (filter (fun x_1 => x < x_1) s).min' Hne ∈ s ∧ x < (filter (fun x_1 => x < x_1) s).min' Hne
z : α
hzs : z ∈ s
hz : x < z
⊢ x < z
state_after: no goals
tactic: simpa
Theorem: quotient_norm_neg
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 : M ⧸ S
⊢ ‖-x‖ = ‖x‖
state_after: M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
x : M ⧸ S
⊢ sInf (norm '' {m | ↑m = -x}) = sInf (norm '' {m | ↑m = x})
tactic: simp only [AddSubgroup.quotient_norm_eq]
state_before: M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
x : M ⧸ S
⊢ sInf (norm '' {m | ↑m = -x}) = sInf (norm '' {m | ↑m = x})
state_after: case e_a.h
M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
x : M ⧸ S
r : ℝ
⊢ r ∈ norm '' {m | ↑m = -x} ↔ r ∈ norm '' {m | ↑m = x}
tactic: congr 1 with r
state_before: case e_a.h
M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
x : M ⧸ S
r : ℝ
⊢ r ∈ norm '' {m | ↑m = -x} ↔ r ∈ norm '' {m | ↑m = x}
state_after: no goals
tactic: constructor <;> { rintro ⟨m, hm, rfl⟩; use -m; simpa [neg_eq_iff_eq_neg] using hm }
Theorem: Nat.factorization_mul
File: Mathlib/Data/Nat/Factorization/Defs.lean

Proof steps:
state_before: a✝ b✝ m n p a b : ℕ
ha : a ≠ 0
hb : b ≠ 0
⊢ (a * b).factorization = a.factorization + b.factorization
state_after: case h
a✝ b✝ m n p✝ a b : ℕ
ha : a ≠ 0
hb : b ≠ 0
p : ℕ
⊢ (a * b).factorization p = (a.factorization + b.factorization) p
tactic: ext p
state_before: case h
a✝ b✝ m n p✝ a b : ℕ
ha : a ≠ 0
hb : b ≠ 0
p : ℕ
⊢ (a * b).factorization p = (a.factorization + b.factorization) p
state_after: no goals
tactic: simp only [add_apply, ← primeFactorsList_count_eq,
    perm_iff_count.mp (perm_primeFactorsList_mul ha hb) p, count_append]
Theorem: Filter.EventuallyLE.sup
File: Mathlib/Order/Filter/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l✝ : Filter α
inst✝ : SemilatticeSup β
l : Filter α
f₁ f₂ g₁ g₂ : α → β
hf : f₁ ≤ᶠ[l] f₂
hg : g₁ ≤ᶠ[l] g₂
⊢ f₁ ⊔ g₁ ≤ᶠ[l] f₂ ⊔ g₂
state_after: no goals
tactic: filter_upwards [hf, hg] with x hfx hgx using sup_le_sup hfx hgx
Theorem: Subgroup.mul_normal
File: Mathlib/Algebra/Group/Subgroup/Pointwise.lean

Proof steps:
state_before: α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝¹ : Group G
inst✝ : AddGroup A
s : Set G
H N : Subgroup G
hN : N.Normal
⊢ ↑(H ⊔ N) = ↑H * ↑N
state_after: α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝¹ : Group G
inst✝ : AddGroup A
s : Set G
H N : Subgroup G
hN : N.Normal
⊢ ↑(closure (↑H * ↑N)) = ↑H * ↑N
tactic: rw [sup_eq_closure_mul]
state_before: α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝¹ : Group G
inst✝ : AddGroup A
s : Set G
H N : Subgroup G
hN : N.Normal
⊢ ↑(closure (↑H * ↑N)) = ↑H * ↑N
state_after: α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝¹ : Group G
inst✝ : AddGroup A
s : Set G
H N : Subgroup G
hN : N.Normal
x : G
hx : x ∈ ↑(closure (↑H * ↑N))
⊢ x ∈ ↑H * ↑N
tactic: refine Set.Subset.antisymm (fun x hx => ?_) subset_closure
Theorem: Real.log_zpow
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

Proof steps:
state_before: x✝ y x : ℝ
n : ℤ
⊢ log (x ^ n) = ↑n * log x
state_after: case ofNat
x✝ y x : ℝ
a✝ : ℕ
⊢ log (x ^ Int.ofNat a✝) = ↑(Int.ofNat a✝) * log x

case negSucc
x✝ y x : ℝ
a✝ : ℕ
⊢ log (x ^ Int.negSucc a✝) = ↑(Int.negSucc a✝) * log x
tactic: induction n
state_before: case negSucc
x✝ y x : ℝ
a✝ : ℕ
⊢ log (x ^ Int.negSucc a✝) = ↑(Int.negSucc a✝) * log x
state_after: no goals
tactic: rw [zpow_negSucc, log_inv, log_pow, Int.cast_negSucc, Nat.cast_add_one, neg_mul_eq_neg_mul]
Theorem: Polynomial.eval₂_C_X_eq_coe
File: Mathlib/RingTheory/PowerSeries/Basic.lean

Proof steps:
state_before: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
φ ψ : R[X]
⊢ eval₂ (PowerSeries.C R) PowerSeries.X φ = ↑φ
state_after: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
φ ψ : R[X]
⊢ eval₂ (PowerSeries.C R) PowerSeries.X φ = ↑(eval₂ C X φ)
tactic: nth_rw 2 [← eval₂_C_X (p := φ)]
state_before: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
φ ψ : R[X]
⊢ eval₂ (PowerSeries.C R) PowerSeries.X φ = ↑(eval₂ C X φ)
state_after: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
φ ψ : R[X]
⊢ ∑ i ∈ Finset.range (φ.natDegree + 1), (PowerSeries.C R) (φ.coeff i) * PowerSeries.X ^ i =
    ∑ x ∈ Finset.range (φ.natDegree + 1), coeToPowerSeries.ringHom (C (φ.coeff x) * X ^ x)
tactic: rw [← coeToPowerSeries.ringHom_apply, eval₂_eq_sum_range, eval₂_eq_sum_range, map_sum]
state_before: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
φ ψ : R[X]
⊢ ∑ i ∈ Finset.range (φ.natDegree + 1), (PowerSeries.C R) (φ.coeff i) * PowerSeries.X ^ i =
    ∑ x ∈ Finset.range (φ.natDegree + 1), coeToPowerSeries.ringHom (C (φ.coeff x) * X ^ x)
state_after: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
φ ψ : R[X]
⊢ ∀ x ∈ Finset.range (φ.natDegree + 1),
    (PowerSeries.C R) (φ.coeff x) * PowerSeries.X ^ x = coeToPowerSeries.ringHom (C (φ.coeff x) * X ^ x)
tactic: apply Finset.sum_congr rfl
state_before: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
φ ψ : R[X]
⊢ ∀ x ∈ Finset.range (φ.natDegree + 1),
    (PowerSeries.C R) (φ.coeff x) * PowerSeries.X ^ x = coeToPowerSeries.ringHom (C (φ.coeff x) * X ^ x)
state_after: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
φ ψ : R[X]
x✝ : ℕ
a✝ : x✝ ∈ Finset.range (φ.natDegree + 1)
⊢ (PowerSeries.C R) (φ.coeff x✝) * PowerSeries.X ^ x✝ = coeToPowerSeries.ringHom (C (φ.coeff x✝) * X ^ x✝)
tactic: intros
state_before: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
φ ψ : R[X]
x✝ : ℕ
a✝ : x✝ ∈ Finset.range (φ.natDegree + 1)
⊢ (PowerSeries.C R) (φ.coeff x✝) * PowerSeries.X ^ x✝ = coeToPowerSeries.ringHom (C (φ.coeff x✝) * X ^ x✝)
state_after: no goals
tactic: rw [map_mul, map_pow, coeToPowerSeries.ringHom_apply,
    coeToPowerSeries.ringHom_apply, coe_C, coe_X]
Theorem: SimpleGraph.Connected.ofBoxProdRight
File: Mathlib/Combinatorics/SimpleGraph/Prod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
h : (G □ H).Connected
⊢ H.Connected
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
h : (G □ H).Connected
this : Nonempty α
⊢ H.Connected
tactic: haveI := (nonempty_prod.1 h.nonempty).1
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
h : (G □ H).Connected
this : Nonempty α
⊢ H.Connected
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
h : (G □ H).Connected
this✝ : Nonempty α
this : Nonempty β
⊢ H.Connected
tactic: haveI := (nonempty_prod.1 h.nonempty).2
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
h : (G □ H).Connected
this✝ : Nonempty α
this : Nonempty β
⊢ H.Connected
state_after: no goals
tactic: exact ⟨h.preconnected.ofBoxProdRight⟩
Theorem: Path.truncate_range
File: Mathlib/Topology/Connected/PathConnected.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
γ✝ : Path x y
a b : X
γ : Path a b
t₀ t₁ : ℝ
⊢ range ⇑(γ.truncate t₀ t₁) ⊆ range ⇑γ
state_after: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
γ✝ : Path x y
a b : X
γ : Path a b
t₀ t₁ : ℝ
⊢ range ⇑(γ.truncate t₀ t₁) ⊆ range γ.extend
tactic: rw [← γ.extend_range]
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
γ✝ : Path x y
a b : X
γ : Path a b
t₀ t₁ : ℝ
⊢ range ⇑(γ.truncate t₀ t₁) ⊆ range γ.extend
state_after: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
γ✝ : Path x y
a b : X
γ : Path a b
t₀ t₁ : ℝ
⊢ ∀ (x : ℝ) (h : x ∈ I), (γ.truncate t₀ t₁) ⟨x, h⟩ ∈ range γ.extend
tactic: simp only [range_subset_iff, SetCoe.exists, SetCoe.forall]
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
γ✝ : Path x y
a b : X
γ : Path a b
t₀ t₁ : ℝ
⊢ ∀ (x : ℝ) (h : x ∈ I), (γ.truncate t₀ t₁) ⟨x, h⟩ ∈ range γ.extend
state_after: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type u_3
γ✝ : Path x✝ y
a b : X
γ : Path a b
t₀ t₁ x : ℝ
_hx : x ∈ I
⊢ (γ.truncate t₀ t₁) ⟨x, _hx⟩ ∈ range γ.extend
tactic: intro x _hx
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type u_3
γ✝ : Path x✝ y
a b : X
γ : Path a b
t₀ t₁ x : ℝ
_hx : x ∈ I
⊢ (γ.truncate t₀ t₁) ⟨x, _hx⟩ ∈ range γ.extend
state_after: no goals
tactic: simp only [DFunLike.coe, Path.truncate, mem_range_self]
Theorem: MeasureTheory.VectorMeasure.mapRange_zero
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m inst✝⁵ : MeasurableSpace α
inst✝⁴ : MeasurableSpace β
M : Type u_3
inst✝³ : AddCommMonoid M
inst✝² : TopologicalSpace M
v : VectorMeasure α M
N : Type u_4
inst✝¹ : AddCommMonoid N
inst✝ : TopologicalSpace N
f : M →+ N
hf : Continuous ⇑f
⊢ mapRange 0 f hf = 0
state_after: case h
α : Type u_1
β : Type u_2
m inst✝⁵ : MeasurableSpace α
inst✝⁴ : MeasurableSpace β
M : Type u_3
inst✝³ : AddCommMonoid M
inst✝² : TopologicalSpace M
v : VectorMeasure α M
N : Type u_4
inst✝¹ : AddCommMonoid N
inst✝ : TopologicalSpace N
f : M →+ N
hf : Continuous ⇑f
i✝ : Set α
a✝ : MeasurableSet i✝
⊢ ↑(mapRange 0 f hf) i✝ = ↑0 i✝
tactic: ext
state_before: case h
α : Type u_1
β : Type u_2
m inst✝⁵ : MeasurableSpace α
inst✝⁴ : MeasurableSpace β
M : Type u_3
inst✝³ : AddCommMonoid M
inst✝² : TopologicalSpace M
v : VectorMeasure α M
N : Type u_4
inst✝¹ : AddCommMonoid N
inst✝ : TopologicalSpace N
f : M →+ N
hf : Continuous ⇑f
i✝ : Set α
a✝ : MeasurableSet i✝
⊢ ↑(mapRange 0 f hf) i✝ = ↑0 i✝
state_after: no goals
tactic: simp
Theorem: Matrix.IsSymm.zpow
File: Mathlib/LinearAlgebra/Matrix/ZPow.lean

Proof steps:
state_before: n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
h : A.IsSymm
k : ℤ
⊢ (A ^ k).IsSymm
state_after: no goals
tactic: rw [IsSymm, transpose_zpow, h]
Theorem: MeasureTheory.integrableOn_Ioi_comp_rpow_iff'
File: Mathlib/MeasureTheory/Integral/IntegralEqImproper.lean

Proof steps:
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : ℝ → E
p : ℝ
hp : p ≠ 0
⊢ IntegrableOn (fun x => x ^ (p - 1) • f (x ^ p)) (Ioi 0) volume ↔ IntegrableOn f (Ioi 0) volume
state_after: no goals
tactic: simpa only [← integrableOn_Ioi_comp_rpow_iff f hp, mul_smul] using
    (integrable_smul_iff (abs_pos.mpr hp).ne' _).symm