tasksource/leandojo huggingface dataset:
Theorem: HasFPowerSeriesAt.congr
File: Mathlib/Analysis/Analytic/Basic.lean

tactic: rcases hf with ⟨r₁, h₁⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.436481
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesAt f p x
hg : f =ᶠ[𝓝 x] g
⊢ HasFPowerSeriesAt g p x

tactic: rcases EMetric.mem_nhds_iff.mp hg with ⟨r₂, h₂pos, h₂⟩
state_before: case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.436481
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hg : f =ᶠ[𝓝 x] g
r₁ : ℝ≥0∞
h₁ : HasFPowerSeriesOnBall f p x r₁
⊢ HasFPowerSeriesAt g p x

tactic: exact ⟨min r₁ r₂,
  (h₁.mono (lt_min h₁.r_pos h₂pos) inf_le_left).congr
    fun y hy => h₂ (EMetric.ball_subset_ball inf_le_right hy)⟩
state_before: case intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.436481
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hg : f =ᶠ[𝓝 x] g
r₁ : ℝ≥0∞
h₁ : HasFPowerSeriesOnBall f p x r₁
r₂ : ℝ≥0∞
h₂pos : r₂ > 0
h₂ : EMetric.ball x r₂ ⊆ {x | (fun x => f x = g x) x}
⊢ HasFPowerSeriesAt g p x
Theorem: Quaternion.re_exp
File: Mathlib/Analysis/NormedSpace/QuaternionExponential.lean

tactic: simp [exp_eq]
state_before: q : ℍ
⊢ (exp ℝ q).re = exp ℝ q.re * Real.cos ‖q - ↑q.re‖
Theorem: List.or_exists_of_exists_mem_cons
File: Mathlib/Data/List/Basic.lean

tactic: rw [← h]
state_before: ι : Type ?u.8940
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Prop
a : α
l : List α
x✝ : ∃ x, x ∈ a :: l ∧ p x
x : α
xal : x ∈ a :: l
px : p x
h : x = a
⊢ p a ∨ ∃ x, x ∈ l ∧ p x

tactic: left
state_before: ι : Type ?u.8940
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Prop
a : α
l : List α
x✝ : ∃ x, x ∈ a :: l ∧ p x
x : α
xal : x ∈ a :: l
px : p x
h : x = a
⊢ p x ∨ ∃ x, x ∈ l ∧ p x

tactic: exact px
state_before: case h
ι : Type ?u.8940
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Prop
a : α
l : List α
x✝ : ∃ x, x ∈ a :: l ∧ p x
x : α
xal : x ∈ a :: l
px : p x
h : x = a
⊢ p x
Theorem: Associates.isAtom_iff
File: Mathlib/RingTheory/ChainOfDivisors.lean

tactic: simpa only [Associates.isUnit_iff_eq_one] using hp.1
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : IsAtom p
⊢ ¬IsUnit p

tactic: rw [ha] at h
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : IsAtom p
a b : Associates M
h : p = a * b
ha : a = p
⊢ IsUnit b

tactic: apply isUnit_of_associated_mul (show Associated (p * b) p by conv_rhs => rw [h]) h₁
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : IsAtom p
a b : Associates M
h : p = p * b
ha : a = p
⊢ IsUnit b

tactic: conv_rhs => rw [h]
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : IsAtom p
a b : Associates M
h : p = p * b
ha : a = p
⊢ Associated (p * b) p

tactic: simpa only [Associates.isUnit_iff_eq_one, Associates.bot_eq_one] using hp.1
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : Irreducible p
⊢ p ≠ ⊥

tactic: rwa [Associates.isUnit_iff_eq_one, ← Associates.bot_eq_one] at hb
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : Irreducible p
b : Associates M
x✝ : b < p
a : Associates M
hab : p = b * a
hb✝ : ¬p ∣ b
hb : IsUnit b
⊢ b = ⊥

tactic: simp [hab]
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : Irreducible p
b : Associates M
x✝ : b < p
a : Associates M
hab : p = b * a
hb : ¬p ∣ b
ha : IsUnit a
⊢ b = p * ↑(IsUnit.unit ha)⁻¹

tactic: rw [mul_assoc]
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : Irreducible p
b : Associates M
x✝ : b < p
a : Associates M
hab : p = b * a
hb : ¬p ∣ b
ha : IsUnit a
⊢ b = b * a * ↑(IsUnit.unit ha)⁻¹

tactic: rw [IsUnit.mul_val_inv ha]
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : Irreducible p
b : Associates M
x✝ : b < p
a : Associates M
hab : p = b * a
hb : ¬p ∣ b
ha : IsUnit a
⊢ b = b * (a * ↑(IsUnit.unit ha)⁻¹)

tactic: rw [mul_one]
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : Irreducible p
b : Associates M
x✝ : b < p
a : Associates M
hab : p = b * a
hb : ¬p ∣ b
ha : IsUnit a
⊢ b = b * 1
Theorem: Finsupp.single_zero
File: Mathlib/Data/Finsupp/Defs.lean

tactic: classical simpa only [single_eq_update, coe_zero] using Function.update_eq_self a (0 : α → M)
state_before: α : Type u_1
β : Type ?u.43277
γ : Type ?u.43280
ι : Type ?u.43283
M : Type u_2
M' : Type ?u.43289
N : Type ?u.43292
P : Type ?u.43295
G : Type ?u.43298
H : Type ?u.43301
R : Type ?u.43304
S : Type ?u.43307
inst✝ : Zero M
a✝ a' : α
b : M
a : α
⊢ (fun f => ↑f) (single a 0) = (fun f => ↑f) 0

tactic: simpa only [single_eq_update, coe_zero] using Function.update_eq_self a (0 : α → M)
state_before: α : Type u_1
β : Type ?u.43277
γ : Type ?u.43280
ι : Type ?u.43283
M : Type u_2
M' : Type ?u.43289
N : Type ?u.43292
P : Type ?u.43295
G : Type ?u.43298
H : Type ?u.43301
R : Type ?u.43304
S : Type ?u.43307
inst✝ : Zero M
a✝ a' : α
b : M
a : α
⊢ (fun f => ↑f) (single a 0) = (fun f => ↑f) 0
Theorem: WittVector.mapFun.nsmul
File: Mathlib/RingTheory/WittVector/Basic.lean

tactic: map_fun_tac
state_before: p : ℕ
R : Type u_2
S : Type u_1
T : Type ?u.361713
hp : Fact (Nat.Prime p)
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : CommRing T
α : Type ?u.361728
β : Type ?u.361731
f : R →+* S
x y : 𝕎 R
n : ℕ
⊢ mapFun (↑f) (n • x) = n • mapFun (↑f) x
Theorem: ENorm.map_zero
File: Mathlib/Analysis/NormedSpace/ENorm.lean

tactic: rw [← zero_smul 𝕜 (0 : V), e.map_smul]
state_before: 𝕜 : Type u_1
V : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup V
inst✝ : Module 𝕜 V
e : ENorm 𝕜 V
⊢ ↑e 0 = 0

tactic: norm_num
state_before: 𝕜 : Type u_1
V : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup V
inst✝ : Module 𝕜 V
e : ENorm 𝕜 V
⊢ ↑‖0‖₊ * ↑e 0 = 0
Theorem: FreeLieAlgebra.Rel.neg
File: Mathlib/Algebra/Lie/Free.lean

tactic: simpa only [neg_one_smul] using h.smul (-1)
state_before: R : Type u
X : Type v
inst✝ : CommRing R
a b : lib R X
h : Rel R X a b
⊢ Rel R X (-a) (-b)
Theorem: PrimeMultiset.prod_ofNatList
File: Mathlib/Data/PNat/Factors.lean

tactic: have := prod_ofNatMultiset (l : Multiset ℕ) h
state_before: l : List ℕ
h : ∀ (p : ℕ), p ∈ l → Nat.Prime p
⊢ ↑(prod (ofNatList l h)) = List.prod l

tactic: rw [Multiset.coe_prod] at this
state_before: l : List ℕ
h : ∀ (p : ℕ), p ∈ l → Nat.Prime p
this : ↑(prod (ofNatMultiset (↑l) h)) = Multiset.prod ↑l
⊢ ↑(prod (ofNatList l h)) = List.prod l

tactic: exact this
state_before: l : List ℕ
h : ∀ (p : ℕ), p ∈ l → Nat.Prime p
this : ↑(prod (ofNatMultiset (↑l) h)) = List.prod l
⊢ ↑(prod (ofNatList l h)) = List.prod l
Theorem: Polynomial.content_mul_aux
File: Mathlib/RingTheory/Polynomial/Content.lean

tactic: rw [gcd_comm (content _) _, gcd_comm (content _) _]
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p q : R[X]
⊢ gcd (content (eraseLead (p * q))) (leadingCoeff p) = gcd (content (eraseLead p * q)) (leadingCoeff p)

tactic: apply gcd_content_eq_of_dvd_sub
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p q : R[X]
⊢ gcd (leadingCoeff p) (content (eraseLead (p * q))) = gcd (leadingCoeff p) (content (eraseLead p * q))

tactic: rw [← self_sub_C_mul_X_pow, ← self_sub_C_mul_X_pow, sub_mul, sub_sub, add_comm, sub_add,
  sub_sub_cancel, leadingCoeff_mul, RingHom.map_mul, mul_assoc, mul_assoc]
state_before: case h
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p q : R[X]
⊢ ↑C (leadingCoeff p) ∣ eraseLead (p * q) - eraseLead p * q

tactic: apply dvd_sub (Dvd.intro _ rfl) (Dvd.intro _ rfl)
state_before: case h
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p q : R[X]
⊢ ↑C (leadingCoeff p) ∣
    ↑C (leadingCoeff p) * (X ^ natDegree p * q) - ↑C (leadingCoeff p) * (↑C (leadingCoeff q) * X ^ natDegree (p * q))
Theorem: dist_nonneg'
File: Mathlib/Topology/MetricSpace/Basic.lean

tactic: rw [two_mul, dist_comm]
state_before: α✝ : Type u
β : Type v
X : Type ?u.3732
ι : Type ?u.3735
α : Sort u_1
x y : α
dist : α → α → ℝ
dist_self : ∀ (x : α), dist x x = 0
dist_comm : ∀ (x y : α), dist x y = dist y x
dist_triangle : ∀ (x y z : α), dist x z ≤ dist x y + dist y z
⊢ dist x y + dist y x = 2 * dist x y
Theorem: Finsupp.neLocus_self_add_right
File: Mathlib/Data/Finsupp/NeLocus.lean

tactic: rw [← neLocus_zero_left, ← neLocus_add_left f 0 g, add_zero]
state_before: α : Type u_1
M : Type ?u.32849
N : Type u_2
P : Type ?u.32855
inst✝² : DecidableEq α
inst✝¹ : DecidableEq N
inst✝ : AddGroup N
f f₁ f₂ g g₁ g₂ : α →₀ N
⊢ neLocus f (f + g) = g.support
Theorem: StarConvex.affinity
File: Mathlib/Analysis/Convex/Star.lean

tactic: have h := (hs.smul c).add_left z
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.86718
inst✝⁴ : OrderedCommSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x : E
s : Set E
hs : StarConvex 𝕜 x s
z : E
c : 𝕜
⊢ StarConvex 𝕜 (z + c • x) ((fun x => z + c • x) '' s)

tactic: rwa [← image_smul, image_image] at h
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.86718
inst✝⁴ : OrderedCommSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x : E
s : Set E
hs : StarConvex 𝕜 x s
z : E
c : 𝕜
h : StarConvex 𝕜 (z + c • x) ((fun x => z + x) '' (c • s))
⊢ StarConvex 𝕜 (z + c • x) ((fun x => z + c • x) '' s)
Theorem: StructureGroupoid.LocalInvariantProp.liftPropWithinAt_iff
File: Mathlib/Geometry/Manifold/LocalInvariantProperties.lean

tactic: refine' and_congr_right fun hf ↦ hG.congr_set _
state_before: H : Type u_1
M : Type u_2
H' : Type u_3
M' : Type u_4
X : Type ?u.15284
inst✝⁶ : TopologicalSpace H
inst✝⁵ : TopologicalSpace M
inst✝⁴ : ChartedSpace H M
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
inst✝¹ : ChartedSpace H' M'
inst✝ : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e e' : LocalHomeomorph M H
f✝ f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s t : Set M
x : M
Q : (H → H) → Set H → H → Prop
hG : LocalInvariantProp G G' P
f : M → M'
⊢ LiftPropWithinAt P f s x ↔
    ContinuousWithinAt f s x ∧
      P (↑(chartAt H' (f x)) ∘ f ∘ ↑(LocalHomeomorph.symm (chartAt H x)))
        ((chartAt H x).toLocalEquiv.target ∩
          ↑(LocalHomeomorph.symm (chartAt H x)) ⁻¹' (s ∩ f ⁻¹' (chartAt H' (f x)).toLocalEquiv.source))
        (↑(chartAt H x) x)

tactic: exact LocalHomeomorph.preimage_eventuallyEq_target_inter_preimage_inter hf (mem_chart_source H x)
  (chart_source_mem_nhds H' (f x))
state_before: H : Type u_1
M : Type u_2
H' : Type u_3
M' : Type u_4
X : Type ?u.15284
inst✝⁶ : TopologicalSpace H
inst✝⁵ : TopologicalSpace M
inst✝⁴ : ChartedSpace H M
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
inst✝¹ : ChartedSpace H' M'
inst✝ : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e e' : LocalHomeomorph M H
f✝ f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s t : Set M
x : M
Q : (H → H) → Set H → H → Prop
hG : LocalInvariantProp G G' P
f : M → M'
hf : ContinuousWithinAt f s x
⊢ ↑(LocalHomeomorph.symm (chartAt H x)) ⁻¹' s =ᶠ[𝓝 (↑(chartAt H x) x)]
    (chartAt H x).toLocalEquiv.target ∩
      ↑(LocalHomeomorph.symm (chartAt H x)) ⁻¹' (s ∩ f ⁻¹' (chartAt H' (f x)).toLocalEquiv.source)
Theorem: Finset.union_sdiff_symm
File: Mathlib/Data/Finset/Basic.lean

tactic: simp [union_comm]
state_before: α : Type u_1
β : Type ?u.235692
γ : Type ?u.235695
inst✝ : DecidableEq α
s t u v : Finset α
a b : α
⊢ s ∪ t \ s = t ∪ s \ t
Theorem: MonoidHom.restrict_range
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: simp_rw [SetLike.ext_iff, mem_range, mem_map, restrict_apply, SetLike.exists,
  exists_prop, forall_const]
state_before: G : Type u_1
G' : Type ?u.461230
inst✝⁴ : Group G
inst✝³ : Group G'
A : Type ?u.461239
inst✝² : AddGroup A
N : Type u_2
P : Type ?u.461248
inst✝¹ : Group N
inst✝ : Group P
K : Subgroup G
f : G →* N
⊢ range (restrict f K) = map f K
Theorem: Commute.mul_self_sub_mul_self_eq
File: Mathlib/Algebra/Ring/Commute.lean

tactic: rw [add_mul, mul_sub, mul_sub, h.eq, sub_add_sub_cancel]
state_before: α : Type u
β : Type v
γ : Type w
R : Type x
inst✝ : NonUnitalNonAssocRing R
a b : R
h : Commute a b
⊢ a * a - b * b = (a + b) * (a - b)
Theorem: List.Palindrome.reverse_eq
File: Mathlib/Data/List/Palindrome.lean

tactic: induction p <;> try (exact rfl)
state_before: α : Type u_1
β : Type ?u.273
l✝ l : List α
p : Palindrome l
⊢ reverse l = l

tactic: simp
state_before: case cons_concat
α : Type u_1
β : Type ?u.273
l✝¹ l : List α
x✝ : α
l✝ : List α
a✝ : Palindrome l✝
a_ih✝ : reverse l✝ = l✝
⊢ reverse (x✝ :: (l✝ ++ [x✝])) = x✝ :: (l✝ ++ [x✝])

tactic: assumption
state_before: case cons_concat
α : Type u_1
β : Type ?u.273
l✝¹ l : List α
x✝ : α
l✝ : List α
a✝ : Palindrome l✝
a_ih✝ : reverse l✝ = l✝
⊢ reverse l✝ = l✝

tactic: (exact rfl)
state_before: case cons_concat
α : Type u_1
β : Type ?u.273
l✝¹ l : List α
x✝ : α
l✝ : List α
a✝ : Palindrome l✝
a_ih✝ : reverse l✝ = l✝
⊢ reverse (x✝ :: (l✝ ++ [x✝])) = x✝ :: (l✝ ++ [x✝])

tactic: exact rfl
state_before: case cons_concat
α : Type u_1
β : Type ?u.273
l✝¹ l : List α
x✝ : α
l✝ : List α
a✝ : Palindrome l✝
a_ih✝ : reverse l✝ = l✝
⊢ reverse (x✝ :: (l✝ ++ [x✝])) = x✝ :: (l✝ ++ [x✝])
Theorem: WithTop.add_top
File: Mathlib/Algebra/Order/Monoid/WithTop.lean

tactic: cases a <;> rfl
state_before: α : Type u
β : Type v
inst✝ : Add α
a✝ b c d : WithTop α
x y : α
a : WithTop α
⊢ a + ⊤ = ⊤
Theorem: MeasureTheory.measure_inv_null
File: Mathlib/MeasureTheory/Group/Prod.lean

tactic: refine' ⟨fun hs => _, (quasiMeasurePreserving_inv μ).preimage_null⟩
state_before: G : Type u_1
inst✝⁶ : MeasurableSpace G
inst✝⁵ : Group G
inst✝⁴ : MeasurableMul₂ G
μ ν : Measure G
inst✝³ : SigmaFinite ν
inst✝² : SigmaFinite μ
s : Set G
inst✝¹ : MeasurableInv G
inst✝ : IsMulLeftInvariant μ
⊢ ↑↑μ s⁻¹ = 0 ↔ ↑↑μ s = 0

tactic: rw [← inv_inv s]
state_before: G : Type u_1
inst✝⁶ : MeasurableSpace G
inst✝⁵ : Group G
inst✝⁴ : MeasurableMul₂ G
μ ν : Measure G
inst✝³ : SigmaFinite ν
inst✝² : SigmaFinite μ
s : Set G
inst✝¹ : MeasurableInv G
inst✝ : IsMulLeftInvariant μ
hs : ↑↑μ s⁻¹ = 0
⊢ ↑↑μ s = 0

tactic: exact (quasiMeasurePreserving_inv μ).preimage_null hs
state_before: G : Type u_1
inst✝⁶ : MeasurableSpace G
inst✝⁵ : Group G
inst✝⁴ : MeasurableMul₂ G
μ ν : Measure G
inst✝³ : SigmaFinite ν
inst✝² : SigmaFinite μ
s : Set G
inst✝¹ : MeasurableInv G
inst✝ : IsMulLeftInvariant μ
hs : ↑↑μ s⁻¹ = 0
⊢ ↑↑μ s⁻¹⁻¹ = 0
Theorem: Complex.conj_cpow_eq_ite
File: Mathlib/Analysis/SpecialFunctions/Pow/Complex.lean

tactic: simp_rw [cpow_def, map_eq_zero, apply_ite conj, map_one, map_zero, ← exp_conj, map_mul, conj_conj,
  log_conj_eq_ite]
state_before: x n : ℂ
⊢ ↑(starRingEnd ℂ) x ^ n = if arg x = π then x ^ n else ↑(starRingEnd ℂ) (x ^ ↑(starRingEnd ℂ) n)

tactic: split_ifs with hcx hn hx <;> rfl
state_before: x n : ℂ
⊢ (if x = 0 then if n = 0 then 1 else 0 else exp ((if arg x = π then log x else ↑(starRingEnd ℂ) (log x)) * n)) =
    if arg x = π then if x = 0 then if n = 0 then 1 else 0 else exp (log x * n)
    else if x = 0 then if n = 0 then 1 else 0 else exp (↑(starRingEnd ℂ) (log x) * n)
Theorem: Sylow.dvd_card_of_dvd_card
File: Mathlib/GroupTheory/Sylow.lean

tactic: rw [← pow_one p] at hdvd
state_before: G : Type u
α : Type v
β : Type w
inst✝² : Group G
inst✝¹ : Fintype G
p : ℕ
inst✝ : Fact (Nat.Prime p)
P : Sylow p G
hdvd : p ∣ Fintype.card G
⊢ p ∣ Fintype.card { x // x ∈ ↑P }

tactic: have key := P.pow_dvd_card_of_pow_dvd_card hdvd
state_before: G : Type u
α : Type v
β : Type w
inst✝² : Group G
inst✝¹ : Fintype G
p : ℕ
inst✝ : Fact (Nat.Prime p)
P : Sylow p G
hdvd : p ^ 1 ∣ Fintype.card G
⊢ p ∣ Fintype.card { x // x ∈ ↑P }

tactic: rwa [pow_one] at key
state_before: G : Type u
α : Type v
β : Type w
inst✝² : Group G
inst✝¹ : Fintype G
p : ℕ
inst✝ : Fact (Nat.Prime p)
P : Sylow p G
hdvd : p ^ 1 ∣ Fintype.card G
key : p ^ 1 ∣ Fintype.card { x // x ∈ ↑P }
⊢ p ∣ Fintype.card { x // x ∈ ↑P }
Theorem: CompositionSeries.snoc_eraseTop_top
File: Mathlib/Order/JordanHolder.lean

tactic: intro hs
state_before: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
h : IsMaximal (top (eraseTop s)) (top s)
⊢ s.length ≠ 0

tactic: refine' ne_of_gt (lt_of_isMaximal h) _
state_before: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
h : IsMaximal (top (eraseTop s)) (top s)
hs : s.length = 0
⊢ False

tactic: simp [top, Fin.ext_iff, hs]
state_before: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
h : IsMaximal (top (eraseTop s)) (top s)
hs : s.length = 0
⊢ top s = top (eraseTop s)
Theorem: LucasLehmer.X.ext
File: Mathlib/NumberTheory/LucasLehmer.lean

tactic: cases x
state_before: q : ℕ+
x y : X q
h₁ : x.fst = y.fst
h₂ : x.snd = y.snd
⊢ x = y

tactic: cases y
state_before: case mk
q : ℕ+
y : X q
fst✝ snd✝ : ZMod ↑q
h₁ : (fst✝, snd✝).fst = y.fst
h₂ : (fst✝, snd✝).snd = y.snd
⊢ (fst✝, snd✝) = y

tactic: congr
state_before: case mk.mk
q : ℕ+
fst✝¹ snd✝¹ fst✝ snd✝ : ZMod ↑q
h₁ : (fst✝¹, snd✝¹).fst = (fst✝, snd✝).fst
h₂ : (fst✝¹, snd✝¹).snd = (fst✝, snd✝).snd
⊢ (fst✝¹, snd✝¹) = (fst✝, snd✝)
Theorem: Complex.neg_pi_div_two_le_arg_iff
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: cases' le_or_lt 0 (re z) with hre hre
state_before: z : ℂ
⊢ -(π / 2) ≤ arg z ↔ 0 ≤ z.re ∨ 0 ≤ z.im

tactic: simp only [hre.not_le, false_or_iff]
state_before: case inr
z : ℂ
hre : z.re < 0
⊢ -(π / 2) ≤ arg z ↔ 0 ≤ z.re ∨ 0 ≤ z.im

tactic: cases' le_or_lt 0 (im z) with him him
state_before: case inr
z : ℂ
hre : z.re < 0
⊢ -(π / 2) ≤ arg z ↔ 0 ≤ z.im

tactic: simp only [hre, arg_of_re_nonneg hre, Real.neg_pi_div_two_le_arcsin, true_or_iff]
state_before: case inl
z : ℂ
hre : 0 ≤ z.re
⊢ -(π / 2) ≤ arg z ↔ 0 ≤ z.re ∨ 0 ≤ z.im

tactic: simp only [him]
state_before: case inr.inl
z : ℂ
hre : z.re < 0
him : 0 ≤ z.im
⊢ -(π / 2) ≤ arg z ↔ 0 ≤ z.im

tactic: rw [iff_true_iff, arg_of_re_neg_of_im_nonneg hre him]
state_before: case inr.inl
z : ℂ
hre : z.re < 0
him : 0 ≤ z.im
⊢ -(π / 2) ≤ arg z ↔ True

tactic: exact (Real.neg_pi_div_two_le_arcsin _).trans (le_add_of_nonneg_right Real.pi_pos.le)
state_before: case inr.inl
z : ℂ
hre : z.re < 0
him : 0 ≤ z.im
⊢ -(π / 2) ≤ arcsin ((-z).im / ↑abs z) + π

tactic: simp only [him.not_le]
state_before: case inr.inr
z : ℂ
hre : z.re < 0
him : z.im < 0
⊢ -(π / 2) ≤ arg z ↔ 0 ≤ z.im

tactic: rw [iff_false_iff, not_le, arg_of_re_neg_of_im_neg hre him, sub_lt_iff_lt_add', ←
  sub_eq_add_neg, sub_half, Real.arcsin_lt_pi_div_two, div_lt_one, neg_im, ← abs_of_neg him,
  abs_im_lt_abs]
state_before: case inr.inr
z : ℂ
hre : z.re < 0
him : z.im < 0
⊢ -(π / 2) ≤ arg z ↔ False

tactic: exacts [hre.ne, abs.pos <| ne_of_apply_ne re hre.ne]
state_before: case inr.inr
z : ℂ
hre : z.re < 0
him : z.im < 0
⊢ z.re ≠ 0

case inr.inr
z : ℂ
hre : z.re < 0
him : z.im < 0
⊢ 0 < ↑abs z
Theorem: MeasureTheory.lintegral_dirac
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: simp [lintegral_congr_ae (ae_eq_dirac f)]
state_before: α : Type u_1
β : Type ?u.1690312
γ : Type ?u.1690315
δ : Type ?u.1690318
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
a : α
f : α → ℝ≥0∞
⊢ (∫⁻ (a : α), f a ∂dirac a) = f a
Theorem: PowerSeries.trunc_one
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: rw [coeff_trunc, coeff_one]
state_before: R : Type u_1
inst✝ : CommSemiring R
n m : ℕ
⊢ Polynomial.coeff (trunc (n + 1) 1) m = Polynomial.coeff 1 m

tactic: split_ifs with H H' <;> rw [Polynomial.coeff_one]
state_before: R : Type u_1
inst✝ : CommSemiring R
n m : ℕ
⊢ (if m < n + 1 then if m = 0 then 1 else 0 else 0) = Polynomial.coeff 1 m

tactic: subst m
state_before: case inl.inl
R : Type u_1
inst✝ : CommSemiring R
n m : ℕ
H : m < n + 1
H' : m = 0
⊢ 1 = if 0 = m then 1 else 0

tactic: rw [if_pos rfl]
state_before: case inl.inl
R : Type u_1
inst✝ : CommSemiring R
n : ℕ
H : 0 < n + 1
⊢ 1 = if 0 = 0 then 1 else 0

tactic: symm
state_before: case inl.inr
R : Type u_1
inst✝ : CommSemiring R
n m : ℕ
H : m < n + 1
H' : ¬m = 0
⊢ 0 = if 0 = m then 1 else 0

tactic: exact if_neg (Ne.elim (Ne.symm H'))
state_before: case inl.inr
R : Type u_1
inst✝ : CommSemiring R
n m : ℕ
H : m < n + 1
H' : ¬m = 0
⊢ (if 0 = m then 1 else 0) = 0

tactic: symm
state_before: case inr
R : Type u_1
inst✝ : CommSemiring R
n m : ℕ
H : ¬m < n + 1
⊢ 0 = if 0 = m then 1 else 0

tactic: refine' if_neg _
state_before: case inr
R : Type u_1
inst✝ : CommSemiring R
n m : ℕ
H : ¬m < n + 1
⊢ (if 0 = m then 1 else 0) = 0

tactic: rintro rfl
state_before: case inr
R : Type u_1
inst✝ : CommSemiring R
n m : ℕ
H : ¬m < n + 1
⊢ ¬0 = m

tactic: apply H
state_before: case inr
R : Type u_1
inst✝ : CommSemiring R
n : ℕ
H : ¬0 < n + 1
⊢ False

tactic: exact Nat.zero_lt_succ _
state_before: case inr
R : Type u_1
inst✝ : CommSemiring R
n : ℕ
H : ¬0 < n + 1
⊢ 0 < n + 1
Theorem: CategoryTheory.NatIso.isIso_of_isIso_app
File: Mathlib/CategoryTheory/NatIso.lean

tactic: aesop
state_before: C : Type u₁
inst✝³ : Category C
D : Type u₂
inst✝² : Category D
E : Type u₃
inst✝¹ : Category E
F G : C ⥤ D
X Y : C
α : F ⟶ G
inst✝ : ∀ (X : C), IsIso (α.app X)
⊢ ∀ {X Y : C} (f : X ⟶ Y), F.map f ≫ ((fun X => asIso (α.app X)) Y).hom = ((fun X => asIso (α.app X)) X).hom ≫ G.map f
Theorem: MvPolynomial.bind₂_C_left
File: Mathlib/Data/MvPolynomial/Monad.lean

tactic: ext : 2 <;> simp
state_before: σ : Type u_1
τ : Type ?u.200346
R : Type u_2
S : Type ?u.200352
T : Type ?u.200355
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
inst✝ : CommSemiring T
f : σ → MvPolynomial τ R
⊢ bind₂ C = RingHom.id (MvPolynomial σ R)
Theorem: MeasureTheory.integrableOn_Ioi_comp_mul_left_iff
File: Mathlib/MeasureTheory/Integral/IntegralEqImproper.lean

tactic: rw [← integrable_indicator_iff (measurableSet_Ioi : MeasurableSet <| Ioi c)]
state_before: E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℝ → E
c a : ℝ
ha : 0 < a
⊢ IntegrableOn (fun x => f (a * x)) (Ioi c) ↔ IntegrableOn f (Ioi (a * c))

tactic: rw [← integrable_indicator_iff (measurableSet_Ioi : MeasurableSet <| Ioi <| a * c)]
state_before: E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℝ → E
c a : ℝ
ha : 0 < a
⊢ Integrable (indicator (Ioi c) fun x => f (a * x)) ↔ IntegrableOn f (Ioi (a * c))

tactic: convert integrable_comp_mul_left_iff ((Ioi (a * c)).indicator f) ha.ne' using 2
state_before: E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℝ → E
c a : ℝ
ha : 0 < a
⊢ Integrable (indicator (Ioi c) fun x => f (a * x)) ↔ Integrable (indicator (Ioi (a * c)) f)

tactic: ext1 x
state_before: case h.e'_1.h.e'_5
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℝ → E
c a : ℝ
ha : 0 < a
⊢ (indicator (Ioi c) fun x => f (a * x)) = fun x => indicator (Ioi (a * c)) f (a * x)

tactic: rw [← indicator_comp_right, preimage_const_mul_Ioi _ ha, mul_comm a c, mul_div_cancel _ ha.ne']
state_before: case h.e'_1.h.e'_5.h
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℝ → E
c a : ℝ
ha : 0 < a
x : ℝ
⊢ indicator (Ioi c) (fun x => f (a * x)) x = indicator (Ioi (a * c)) f (a * x)

tactic: rfl
state_before: case h.e'_1.h.e'_5.h
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℝ → E
c a : ℝ
ha : 0 < a
x : ℝ
⊢ indicator (Ioi c) (fun x => f (a * x)) x = indicator (Ioi c) (f ∘ HMul.hMul a) x