1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Ordinal.opow_principal_add_of_principal_add
File: Mathlib/SetTheory/Ordinal/Principal.lean

tactic: rcases principal_add_iff_zero_or_omega_opow.1 ha with (rfl | ⟨c, rfl⟩)
state_before: a : Ordinal.{u_1}
ha : Principal (fun x x_1 => x + x_1) a
b : Ordinal.{u_1}
⊢ Principal (fun x x_1 => x + x_1) (a ^ b)
state_after: case inl
b : Ordinal.{u_1}
ha : Principal (fun x x_1 => x + x_1) 0
⊢ Principal (fun x x_1 => x + x_1) (0 ^ b)

case inr.intro
b c : Ordinal.{u_1}
ha : Principal (fun x x_1 => x + x_1) (ω ^ c)
⊢ Principal (fun x x_1 => x + x_1) ((ω ^ c) ^ b)

tactic: rcases eq_or_ne b 0 with (rfl | hb)
state_before: case inl
b : Ordinal.{u_1}
ha : Principal (fun x x_1 => x + x_1) 0
⊢ Principal (fun x x_1 => x + x_1) (0 ^ b)
state_after: case inl.inl
ha : Principal (fun x x_1 => x + x_1) 0
⊢ Principal (fun x x_1 => x + x_1) (0 ^ 0)

case inl.inr
b : Ordinal.{u_1}
ha : Principal (fun x x_1 => x + x_1) 0
hb : b ≠ 0
⊢ Principal (fun x x_1 => x + x_1) (0 ^ b)

tactic: rw [opow_zero]
state_before: case inl.inl
ha : Principal (fun x x_1 => x + x_1) 0
⊢ Principal (fun x x_1 => x + x_1) (0 ^ 0)
state_after: case inl.inl
ha : Principal (fun x x_1 => x + x_1) 0
⊢ Principal (fun x x_1 => x + x_1) 1

tactic: exact principal_add_one
state_before: case inl.inl
ha : Principal (fun x x_1 => x + x_1) 0
⊢ Principal (fun x x_1 => x + x_1) 1
state_after: no goals

tactic: rwa [zero_opow hb]
state_before: case inl.inr
b : Ordinal.{u_1}
ha : Principal (fun x x_1 => x + x_1) 0
hb : b ≠ 0
⊢ Principal (fun x x_1 => x + x_1) (0 ^ b)
state_after: no goals

tactic: rw [← opow_mul]
state_before: case inr.intro
b c : Ordinal.{u_1}
ha : Principal (fun x x_1 => x + x_1) (ω ^ c)
⊢ Principal (fun x x_1 => x + x_1) ((ω ^ c) ^ b)
state_after: case inr.intro
b c : Ordinal.{u_1}
ha : Principal (fun x x_1 => x + x_1) (ω ^ c)
⊢ Principal (fun x x_1 => x + x_1) (ω ^ (c * b))

tactic: exact principal_add_omega_opow _
state_before: case inr.intro
b c : Ordinal.{u_1}
ha : Principal (fun x x_1 => x + x_1) (ω ^ c)
⊢ Principal (fun x x_1 => x + x_1) (ω ^ (c * b))
state_after: no goals
Theorem: Finset.filter_image
File: Mathlib/Data/Finset/Image.lean

tactic: simp only [mem_filter, mem_image, exists_prop]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b✝ c : β
p : β → Prop
inst✝ : DecidablePred p
b : β
⊢ b ∈ filter p (image f s) ↔ b ∈ image f (filter (fun a => p (f a)) s)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b✝ c : β
p : β → Prop
inst✝ : DecidablePred p
b : β
⊢ (∃ a ∈ s, f a = b) ∧ p b ↔ ∃ a, (a ∈ s ∧ p (f a)) ∧ f a = b

tactic: exact
  ⟨by rintro ⟨⟨x, h1, rfl⟩, h2⟩; exact ⟨x, ⟨h1, h2⟩, rfl⟩,
   by rintro ⟨x, ⟨h1, h2⟩, rfl⟩; exact ⟨⟨x, h1, rfl⟩, h2⟩⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b✝ c : β
p : β → Prop
inst✝ : DecidablePred p
b : β
⊢ (∃ a ∈ s, f a = b) ∧ p b ↔ ∃ a, (a ∈ s ∧ p (f a)) ∧ f a = b
state_after: no goals

tactic: rintro ⟨⟨x, h1, rfl⟩, h2⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b✝ c : β
p : β → Prop
inst✝ : DecidablePred p
b : β
⊢ (∃ a ∈ s, f a = b) ∧ p b → ∃ a, (a ∈ s ∧ p (f a)) ∧ f a = b
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b c : β
p : β → Prop
inst✝ : DecidablePred p
x : α
h1 : x ∈ s
h2 : p (f x)
⊢ ∃ a, (a ∈ s ∧ p (f a)) ∧ f a = f x

tactic: exact ⟨x, ⟨h1, h2⟩, rfl⟩
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b c : β
p : β → Prop
inst✝ : DecidablePred p
x : α
h1 : x ∈ s
h2 : p (f x)
⊢ ∃ a, (a ∈ s ∧ p (f a)) ∧ f a = f x
state_after: no goals

tactic: rintro ⟨x, ⟨h1, h2⟩, rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b✝ c : β
p : β → Prop
inst✝ : DecidablePred p
b : β
⊢ (∃ a, (a ∈ s ∧ p (f a)) ∧ f a = b) → (∃ a ∈ s, f a = b) ∧ p b
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b c : β
p : β → Prop
inst✝ : DecidablePred p
x : α
h1 : x ∈ s
h2 : p (f x)
⊢ (∃ a ∈ s, f a = f x) ∧ p (f x)

tactic: exact ⟨⟨x, h1, rfl⟩, h2⟩
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b c : β
p : β → Prop
inst✝ : DecidablePred p
x : α
h1 : x ∈ s
h2 : p (f x)
⊢ (∃ a ∈ s, f a = f x) ∧ p (f x)
state_after: no goals
Theorem: Polynomial.roots_expand_map_frobenius
File: Mathlib/FieldTheory/Perfect.lean

tactic: simp [roots_expand, Multiset.map_nsmul]
state_before: R : Type u_1
inst✝³ : CommRing R
inst✝² : IsDomain R
p n : ℕ
inst✝¹ : ExpChar R p
f : R[X]
inst✝ : PerfectRing R p
⊢ Multiset.map (⇑(frobenius R p)) ((expand R p) f).roots = p • f.roots
state_after: no goals
Theorem: Int.negOnePow_sub
File: Mathlib/Algebra/Ring/NegOnePow.lean

tactic: simp only [sub_eq_add_neg, negOnePow_add, negOnePow_neg]
state_before: n₁ n₂ : ℤ
⊢ (n₁ - n₂).negOnePow = n₁.negOnePow * n₂.negOnePow
state_after: no goals
Theorem: Mathlib.Tactic.Abel.term_atom_pfg
File: Mathlib/Tactic/Abel.lean

tactic: simp [termg, h]
state_before: α : Type u_1
inst✝ : AddCommGroup α
x x' : α
h : x = x'
⊢ x = termg 1 x' 0
state_after: no goals
Theorem: min_mul_distrib'
File: Mathlib/Algebra/Order/Monoid/Canonical/Defs.lean

tactic: simpa [min_comm _ c] using min_mul_distrib c a b
state_before: α : Type u
inst✝ : CanonicallyLinearOrderedCommMonoid α
a b c : α
⊢ min (a * b) c = min (min a c * min b c) c
state_after: no goals
Theorem: Composition.single_embedding
File: Mathlib/Combinatorics/Enumerative/Composition.lean

tactic: ext
state_before: n✝ : ℕ
c : Composition n✝
n : ℕ
h : 0 < n
i : Fin n
⊢ ((single n h).embedding 0) i = i
state_after: case h
n✝ : ℕ
c : Composition n✝
n : ℕ
h : 0 < n
i : Fin n
⊢ ↑(((single n h).embedding 0) i) = ↑i

tactic: simp
state_before: case h
n✝ : ℕ
c : Composition n✝
n : ℕ
h : 0 < n
i : Fin n
⊢ ↑(((single n h).embedding 0) i) = ↑i
state_after: no goals
Theorem: birkhoffAverage_one
File: Mathlib/Dynamics/BirkhoffSum/Average.lean

tactic: simp [birkhoffAverage]
state_before: R : Type u_1
α : Type u_2
M : Type u_3
inst✝² : DivisionSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
f : α → α
g : α → M
x : α
⊢ birkhoffAverage R f g 1 x = g x
state_after: no goals
Theorem: Finset.erase_eq_empty_iff
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [← sdiff_singleton_eq_erase, sdiff_eq_empty_iff_subset, subset_singleton_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t u v : Finset α
a✝ b : α
s : Finset α
a : α
⊢ s.erase a = ∅ ↔ s = ∅ ∨ s = {a}
state_after: no goals
Theorem: exists_mem_nhdsWithin_lt_dimH_of_lt_dimH
File: Mathlib/Topology/MetricSpace/HausdorffDimension.lean

tactic: contrapose! h
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
inst✝ : SecondCountableTopology X
s : Set X
r : ℝ≥0∞
h : r < dimH s
⊢ ∃ x ∈ s, ∀ t ∈ 𝓝[s] x, r < dimH t
state_after: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
inst✝ : SecondCountableTopology X
s : Set X
r : ℝ≥0∞
h : ∀ x ∈ s, ∃ t ∈ 𝓝[s] x, dimH t ≤ r
⊢ dimH s ≤ r

tactic: choose! t htx htr using h
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
inst✝ : SecondCountableTopology X
s : Set X
r : ℝ≥0∞
h : ∀ x ∈ s, ∃ t ∈ 𝓝[s] x, dimH t ≤ r
⊢ dimH s ≤ r
state_after: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
inst✝ : SecondCountableTopology X
s : Set X
r : ℝ≥0∞
t : X → Set X
htx : ∀ x ∈ s, t x ∈ 𝓝[s] x
htr : ∀ x ∈ s, dimH (t x) ≤ r
⊢ dimH s ≤ r

tactic: rcases countable_cover_nhdsWithin htx with ⟨S, hSs, hSc, hSU⟩
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
inst✝ : SecondCountableTopology X
s : Set X
r : ℝ≥0∞
t : X → Set X
htx : ∀ x ∈ s, t x ∈ 𝓝[s] x
htr : ∀ x ∈ s, dimH (t x) ≤ r
⊢ dimH s ≤ r
state_after: case intro.intro.intro
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
inst✝ : SecondCountableTopology X
s : Set X
r : ℝ≥0∞
t : X → Set X
htx : ∀ x ∈ s, t x ∈ 𝓝[s] x
htr : ∀ x ∈ s, dimH (t x) ≤ r
S : Set X
hSs : S ⊆ s
hSc : S.Countable
hSU : s ⊆ ⋃ x ∈ S, t x
⊢ dimH s ≤ r

tactic: calc
  dimH s ≤ dimH (⋃ x ∈ S, t x) := dimH_mono hSU
  _ = ⨆ x ∈ S, dimH (t x) := dimH_bUnion hSc _
  _ ≤ r := iSup₂_le fun x hx => htr x <| hSs hx
state_before: case intro.intro.intro
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
inst✝ : SecondCountableTopology X
s : Set X
r : ℝ≥0∞
t : X → Set X
htx : ∀ x ∈ s, t x ∈ 𝓝[s] x
htr : ∀ x ∈ s, dimH (t x) ≤ r
S : Set X
hSs : S ⊆ s
hSc : S.Countable
hSU : s ⊆ ⋃ x ∈ S, t x
⊢ dimH s ≤ r
state_after: no goals
Theorem: CategoryTheory.PreGaloisCategory.surjective_of_nonempty_fiber_of_isConnected
File: Mathlib/CategoryTheory/Galois/Basic.lean

tactic: have : Epi f := epi_of_nonempty_of_isConnected F f
state_before: C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : Nonempty ↑(F.obj X)
inst✝ : IsConnected A
f : X ⟶ A
⊢ Function.Surjective (F.map f)
state_after: C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : Nonempty ↑(F.obj X)
inst✝ : IsConnected A
f : X ⟶ A
this : Epi f
⊢ Function.Surjective (F.map f)

tactic: exact surjective_on_fiber_of_epi F f
state_before: C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : Nonempty ↑(F.obj X)
inst✝ : IsConnected A
f : X ⟶ A
this : Epi f
⊢ Function.Surjective (F.map f)
state_after: no goals
Theorem: Polynomial.rootMultiplicity_add
File: Mathlib/Algebra/Polynomial/RingDivision.lean

tactic: rw [le_rootMultiplicity_iff hzero]
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝ : CommRing R
p q : R[X]
a : R
hzero : p + q ≠ 0
⊢ min (rootMultiplicity a p) (rootMultiplicity a q) ≤ rootMultiplicity a (p + q)
state_after: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝ : CommRing R
p q : R[X]
a : R
hzero : p + q ≠ 0
⊢ (X - C a) ^ min (rootMultiplicity a p) (rootMultiplicity a q) ∣ p + q

tactic: exact min_pow_dvd_add (pow_rootMultiplicity_dvd p a) (pow_rootMultiplicity_dvd q a)
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝ : CommRing R
p q : R[X]
a : R
hzero : p + q ≠ 0
⊢ (X - C a) ^ min (rootMultiplicity a p) (rootMultiplicity a q) ∣ p + q
state_after: no goals
Theorem: CategoryTheory.Subgroupoid.mem_top_objs
File: Mathlib/CategoryTheory/Groupoid/Subgroupoid.lean

tactic: dsimp [Top.top, objs]
state_before: C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c : C
⊢ c ∈ ⊤.objs
state_after: C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c : C
⊢ univ.Nonempty

tactic: simp only [univ_nonempty]
state_before: C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c : C
⊢ univ.Nonempty
state_after: no goals
Theorem: CategoryTheory.GradedObject.eqToHom_proj
File: Mathlib/CategoryTheory/GradedObject.lean

tactic: subst h
state_before: C : Type u
inst✝ : Category.{v, u} C
I : Type u_1
x x' : GradedObject I C
h : x = x'
i : I
⊢ eqToHom h i = eqToHom ⋯
state_after: C : Type u
inst✝ : Category.{v, u} C
I : Type u_1
x : GradedObject I C
i : I
⊢ eqToHom ⋯ i = eqToHom ⋯

tactic: rfl
state_before: C : Type u
inst✝ : Category.{v, u} C
I : Type u_1
x : GradedObject I C
i : I
⊢ eqToHom ⋯ i = eqToHom ⋯
state_after: no goals
Theorem: Cardinal.mk_eq_nat_iff_fintype
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [mk_eq_nat_iff_finset]
state_before: α β : Type u
c : Cardinal.{?u.212521}
n : ℕ
⊢ #α = ↑n ↔ ∃ h, Fintype.card α = n
state_after: α β : Type u
c : Cardinal.{?u.212521}
n : ℕ
⊢ (∃ t, ↑t = univ ∧ t.card = n) ↔ ∃ h, Fintype.card α = n

tactic: constructor
state_before: α β : Type u
c : Cardinal.{?u.212521}
n : ℕ
⊢ (∃ t, ↑t = univ ∧ t.card = n) ↔ ∃ h, Fintype.card α = n
state_after: case mp
α β : Type u
c : Cardinal.{?u.212521}
n : ℕ
⊢ (∃ t, ↑t = univ ∧ t.card = n) → ∃ h, Fintype.card α = n

case mpr
α β : Type u
c : Cardinal.{?u.212521}
n : ℕ
⊢ (∃ h, Fintype.card α = n) → ∃ t, ↑t = univ ∧ t.card = n

tactic: rintro ⟨t, ht, hn⟩
state_before: case mp
α β : Type u
c : Cardinal.{?u.212521}
n : ℕ
⊢ (∃ t, ↑t = univ ∧ t.card = n) → ∃ h, Fintype.card α = n
state_after: case mp.intro.intro
α β : Type u
c : Cardinal.{?u.212521}
n : ℕ
t : Finset α
ht : ↑t = univ
hn : t.card = n
⊢ ∃ h, Fintype.card α = n

tactic: exact ⟨⟨t, eq_univ_iff_forall.1 ht⟩, hn⟩
state_before: case mp.intro.intro
α β : Type u
c : Cardinal.{?u.212521}
n : ℕ
t : Finset α
ht : ↑t = univ
hn : t.card = n
⊢ ∃ h, Fintype.card α = n
state_after: no goals

tactic: rintro ⟨⟨t, ht⟩, hn⟩
state_before: case mpr
α β : Type u
c : Cardinal.{?u.212521}
n : ℕ
⊢ (∃ h, Fintype.card α = n) → ∃ t, ↑t = univ ∧ t.card = n
state_after: case mpr.intro.mk
α β : Type u
c : Cardinal.{?u.212521}
n : ℕ
t : Finset α
ht : ∀ (x : α), x ∈ t
hn : Fintype.card α = n
⊢ ∃ t, ↑t = univ ∧ t.card = n

tactic: exact ⟨t, eq_univ_iff_forall.2 ht, hn⟩
state_before: case mpr.intro.mk
α β : Type u
c : Cardinal.{?u.212521}
n : ℕ
t : Finset α
ht : ∀ (x : α), x ∈ t
hn : Fintype.card α = n
⊢ ∃ t, ↑t = univ ∧ t.card = n
state_after: no goals
Theorem: ArithmeticFunction.vonMangoldt_sum
File: Mathlib/NumberTheory/VonMangoldt.lean

tactic: refine recOnPrimeCoprime ?_ ?_ ?_ n
state_before: n : ℕ
⊢ ∑ i ∈ n.divisors, Λ i = Real.log ↑n
state_after: case refine_1
n : ℕ
⊢ ∑ i ∈ divisors 0, Λ i = Real.log ↑0

case refine_2
n : ℕ
⊢ ∀ (p n : ℕ), Nat.Prime p → ∑ i ∈ (p ^ n).divisors, Λ i = Real.log ↑(p ^ n)

case refine_3
n : ℕ
⊢ ∀ (a b : ℕ),
    1 < a →
      1 < b →
        a.Coprime b →
          ∑ i ∈ a.divisors, Λ i = Real.log ↑a →
            ∑ i ∈ b.divisors, Λ i = Real.log ↑b → ∑ i ∈ (a * b).divisors, Λ i = Real.log ↑(a * b)

tactic: intro a b ha' hb' hab ha hb
state_before: case refine_3
n : ℕ
⊢ ∀ (a b : ℕ),
    1 < a →
      1 < b →
        a.Coprime b →
          ∑ i ∈ a.divisors, Λ i = Real.log ↑a →
            ∑ i ∈ b.divisors, Λ i = Real.log ↑b → ∑ i ∈ (a * b).divisors, Λ i = Real.log ↑(a * b)
state_after: case refine_3
n a b : ℕ
ha' : 1 < a
hb' : 1 < b
hab : a.Coprime b
ha : ∑ i ∈ a.divisors, Λ i = Real.log ↑a
hb : ∑ i ∈ b.divisors, Λ i = Real.log ↑b
⊢ ∑ i ∈ (a * b).divisors, Λ i = Real.log ↑(a * b)

tactic: simp only [vonMangoldt_apply, ← sum_filter] at ha hb ⊢
state_before: case refine_3
n a b : ℕ
ha' : 1 < a
hb' : 1 < b
hab : a.Coprime b
ha : ∑ i ∈ a.divisors, Λ i = Real.log ↑a
hb : ∑ i ∈ b.divisors, Λ i = Real.log ↑b
⊢ ∑ i ∈ (a * b).divisors, Λ i = Real.log ↑(a * b)
state_after: case refine_3
n a b : ℕ
ha' : 1 < a
hb' : 1 < b
hab : a.Coprime b
ha : ∑ a ∈ filter IsPrimePow a.divisors, Real.log ↑a.minFac = Real.log ↑a
hb : ∑ a ∈ filter IsPrimePow b.divisors, Real.log ↑a.minFac = Real.log ↑b
⊢ ∑ a ∈ filter IsPrimePow (a * b).divisors, Real.log ↑a.minFac = Real.log ↑(a * b)

tactic: rw [mul_divisors_filter_prime_pow hab, filter_union,
  sum_union (disjoint_divisors_filter_isPrimePow hab), ha, hb, Nat.cast_mul,
  Real.log_mul (cast_ne_zero.2 (pos_of_gt ha').ne') (cast_ne_zero.2 (pos_of_gt hb').ne')]
state_before: case refine_3
n a b : ℕ
ha' : 1 < a
hb' : 1 < b
hab : a.Coprime b
ha : ∑ a ∈ filter IsPrimePow a.divisors, Real.log ↑a.minFac = Real.log ↑a
hb : ∑ a ∈ filter IsPrimePow b.divisors, Real.log ↑a.minFac = Real.log ↑b
⊢ ∑ a ∈ filter IsPrimePow (a * b).divisors, Real.log ↑a.minFac = Real.log ↑(a * b)
state_after: no goals

tactic: simp
state_before: case refine_1
n : ℕ
⊢ ∑ i ∈ divisors 0, Λ i = Real.log ↑0
state_after: no goals

tactic: intro p k hp
state_before: case refine_2
n : ℕ
⊢ ∀ (p n : ℕ), Nat.Prime p → ∑ i ∈ (p ^ n).divisors, Λ i = Real.log ↑(p ^ n)
state_after: case refine_2
n p k : ℕ
hp : Nat.Prime p
⊢ ∑ i ∈ (p ^ k).divisors, Λ i = Real.log ↑(p ^ k)

tactic: rw [sum_divisors_prime_pow hp, cast_pow, Real.log_pow, Finset.sum_range_succ', Nat.pow_zero,
  vonMangoldt_apply_one]
state_before: case refine_2
n p k : ℕ
hp : Nat.Prime p
⊢ ∑ i ∈ (p ^ k).divisors, Λ i = Real.log ↑(p ^ k)
state_after: case refine_2
n p k : ℕ
hp : Nat.Prime p
⊢ ∑ k ∈ range k, Λ (p ^ (k + 1)) + 0 = ↑k * Real.log ↑p

tactic: simp [vonMangoldt_apply_pow (Nat.succ_ne_zero _), vonMangoldt_apply_prime hp]
state_before: case refine_2
n p k : ℕ
hp : Nat.Prime p
⊢ ∑ k ∈ range k, Λ (p ^ (k + 1)) + 0 = ↑k * Real.log ↑p
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.negAddY_of_X_eq'
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: simp only [negAddY_eq', addX_eq' hP hQ, addZ_of_X_eq hx, add_zero, sub_zero, mul_zero,
  zero_pow <| OfNat.ofNat_ne_zero _, ← pow_succ']
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
hP : W'.Equation P
hQ : W'.Equation Q
hx : P x * Q z ^ 2 = Q x * P z ^ 2
⊢ W'.negAddY P Q * (P z * Q z) ^ 3 = (P y * Q z ^ 3 - Q y * P z ^ 3) ^ 3
state_after: no goals
Theorem: Complex.lim_conj
File: Mathlib/Data/Complex/Abs.lean

tactic: simp [cauSeqConj, (lim_re _).symm, cauSeqRe]
state_before: f : CauSeq ℂ ⇑abs'
⊢ (cauSeqConj f).lim.re = ((starRingEnd ℂ) f.lim).re
state_after: no goals

tactic: simp [cauSeqConj, (lim_im _).symm, cauSeqIm, (lim_neg _).symm]
state_before: f : CauSeq ℂ ⇑abs'
⊢ (cauSeqConj f).lim.im = ((starRingEnd ℂ) f.lim).im
state_after: f : CauSeq ℂ ⇑abs'
⊢ CauSeq.lim ⟨fun n => -(↑f n).im, ⋯⟩ = (-⟨fun n => (↑f n).im, ⋯⟩).lim

tactic: rfl
state_before: f : CauSeq ℂ ⇑abs'
⊢ CauSeq.lim ⟨fun n => -(↑f n).im, ⋯⟩ = (-⟨fun n => (↑f n).im, ⋯⟩).lim
state_after: no goals
Theorem: Ordinal.IsNormal.apply_le_nfp
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

tactic: simpa only [H.nfp_fp] using H.le_iff.2 h
state_before: f✝ : Ordinal.{u} → Ordinal.{u}
f : Ordinal.{u_1} → Ordinal.{u_1}
H : IsNormal f
a b : Ordinal.{u_1}
h : b ≤ nfp f a
⊢ f b ≤ nfp f a
state_after: no goals
Theorem: WithZero.unzero_mul
File: Mathlib/Algebra/GroupWithZero/WithZero.lean

tactic: simp only [← coe_inj, coe_mul, coe_unzero]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Mul α
x y : WithZero α
hxy : x * y ≠ 0
⊢ unzero hxy = unzero ⋯ * unzero ⋯
state_after: no goals
Theorem: EReal.coe_ennreal_top_mul
File: Mathlib/Data/Real/EReal.lean

tactic: rcases eq_or_ne x 0 with (rfl | h0)
state_before: x : ℝ≥0
⊢ ↑(⊤ * ↑x) = ⊤ * ↑↑x
state_after: case inl

⊢ ↑(⊤ * ↑0) = ⊤ * ↑↑0

case inr
x : ℝ≥0
h0 : x ≠ 0
⊢ ↑(⊤ * ↑x) = ⊤ * ↑↑x

tactic: simp
state_before: case inl

⊢ ↑(⊤ * ↑0) = ⊤ * ↑↑0
state_after: no goals

tactic: rw [ENNReal.top_mul (ENNReal.coe_ne_zero.2 h0)]
state_before: case inr
x : ℝ≥0
h0 : x ≠ 0
⊢ ↑(⊤ * ↑x) = ⊤ * ↑↑x
state_after: case inr
x : ℝ≥0
h0 : x ≠ 0
⊢ ↑⊤ = ⊤ * ↑↑x

tactic: exact Eq.symm <| if_pos <| NNReal.coe_pos.2 h0.bot_lt
state_before: case inr
x : ℝ≥0
h0 : x ≠ 0
⊢ ↑⊤ = ⊤ * ↑↑x
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.associator_naturality_right
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: simp
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X✝ Y✝ Z✝ X Y Z Z' : C
f : Z ⟶ Z'
⊢ (X ⊗ Y) ◁ f ≫ (α_ X Y Z').hom = (α_ X Y Z).hom ≫ X ◁ Y ◁ f
state_after: no goals
Theorem: Fin.snoc_zero
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: ext y
state_before: m n : ℕ
α✝ : Fin (n + 1) → Type u
x✝ : α✝ (last n)
q : (i : Fin (n + 1)) → α✝ i
p✝ : (i : Fin n) → α✝ i.castSucc
i : Fin n
y : α✝ i.castSucc
z : α✝ (last n)
α : Type u_1
p : Fin 0 → α
x : α
⊢ snoc p x = fun x_1 => x
state_after: case h
m n : ℕ
α✝ : Fin (n + 1) → Type u
x✝ : α✝ (last n)
q : (i : Fin (n + 1)) → α✝ i
p✝ : (i : Fin n) → α✝ i.castSucc
i : Fin n
y✝ : α✝ i.castSucc
z : α✝ (last n)
α : Type u_1
p : Fin 0 → α
x : α
y : Fin (0 + 1)
⊢ snoc p x y = x

tactic: have : Subsingleton (Fin (0 + 1)) := Fin.subsingleton_one
state_before: case h
m n : ℕ
α✝ : Fin (n + 1) → Type u
x✝ : α✝ (last n)
q : (i : Fin (n + 1)) → α✝ i
p✝ : (i : Fin n) → α✝ i.castSucc
i : Fin n
y✝ : α✝ i.castSucc
z : α✝ (last n)
α : Type u_1
p : Fin 0 → α
x : α
y : Fin (0 + 1)
⊢ snoc p x y = x
state_after: case h
m n : ℕ
α✝ : Fin (n + 1) → Type u
x✝ : α✝ (last n)
q : (i : Fin (n + 1)) → α✝ i
p✝ : (i : Fin n) → α✝ i.castSucc
i : Fin n
y✝ : α✝ i.castSucc
z : α✝ (last n)
α : Type u_1
p : Fin 0 → α
x : α
y : Fin (0 + 1)
this : Subsingleton (Fin (0 + 1))
⊢ snoc p x y = x

tactic: simp only [Subsingleton.elim y (Fin.last 0), snoc_last]
state_before: case h
m n : ℕ
α✝ : Fin (n + 1) → Type u
x✝ : α✝ (last n)
q : (i : Fin (n + 1)) → α✝ i
p✝ : (i : Fin n) → α✝ i.castSucc
i : Fin n
y✝ : α✝ i.castSucc
z : α✝ (last n)
α : Type u_1
p : Fin 0 → α
x : α
y : Fin (0 + 1)
this : Subsingleton (Fin (0 + 1))
⊢ snoc p x y = x
state_after: no goals
Theorem: ENNReal.coe_toNNReal_le_self
File: Mathlib/Data/ENNReal/Basic.lean

tactic: rw [toNNReal_coe]
state_before: α : Type u_1
a b c d : ℝ≥0∞
r✝ p q r : ℝ≥0
⊢ ↑(↑r).toNNReal ≤ ↑r
state_after: no goals
Theorem: MeasureTheory.tsum_measure_preimage_singleton
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: rw [← Set.biUnion_preimage_singleton, measure_biUnion hs (pairwiseDisjoint_fiber f s) hf]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : Set β
hs : s.Countable
f : α → β
hf : ∀ y ∈ s, MeasurableSet (f ⁻¹' {y})
⊢ ∑' (b : ↑s), μ (f ⁻¹' {↑b}) = μ (f ⁻¹' s)
state_after: no goals
Theorem: AdjoinRoot.adjoinRoot_eq_top
File: Mathlib/RingTheory/AdjoinRoot.lean

tactic: refine Algebra.eq_top_iff.2 fun x => ?_
state_before: R : Type u
S : Type v
K : Type w
inst✝ : CommRing R
f : R[X]
⊢ Algebra.adjoin R {root f} = ⊤
state_after: R : Type u
S : Type v
K : Type w
inst✝ : CommRing R
f : R[X]
x : AdjoinRoot f
⊢ x ∈ Algebra.adjoin R {root f}

tactic: induction x using AdjoinRoot.induction_on with
  | ih p => exact (Algebra.adjoin_singleton_eq_range_aeval R (root f)).symm ▸ ⟨p, aeval_eq p⟩
state_before: R : Type u
S : Type v
K : Type w
inst✝ : CommRing R
f : R[X]
x : AdjoinRoot f
⊢ x ∈ Algebra.adjoin R {root f}
state_after: no goals

tactic: exact (Algebra.adjoin_singleton_eq_range_aeval R (root f)).symm ▸ ⟨p, aeval_eq p⟩
state_before: case ih
R : Type u
S : Type v
K : Type w
inst✝ : CommRing R
f p : R[X]
⊢ (mk f) p ∈ Algebra.adjoin R {root f}
state_after: no goals
Theorem: RCLike.inv_def
File: Mathlib/Analysis/RCLike/Basic.lean

tactic: rcases eq_or_ne z 0 with (rfl | h₀)
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z✝ z : K
⊢ z⁻¹ = (starRingEnd K) z * ↑(‖z‖ ^ 2)⁻¹
state_after: case inl
K : Type u_1
E : Type u_2
inst✝ : RCLike K
z : K
⊢ 0⁻¹ = (starRingEnd K) 0 * ↑(‖0‖ ^ 2)⁻¹

case inr
K : Type u_1
E : Type u_2
inst✝ : RCLike K
z✝ z : K
h₀ : z ≠ 0
⊢ z⁻¹ = (starRingEnd K) z * ↑(‖z‖ ^ 2)⁻¹

tactic: simp
state_before: case inl
K : Type u_1
E : Type u_2
inst✝ : RCLike K
z : K
⊢ 0⁻¹ = (starRingEnd K) 0 * ↑(‖0‖ ^ 2)⁻¹
state_after: no goals

tactic: apply inv_eq_of_mul_eq_one_right
state_before: case inr
K : Type u_1
E : Type u_2
inst✝ : RCLike K
z✝ z : K
h₀ : z ≠ 0
⊢ z⁻¹ = (starRingEnd K) z * ↑(‖z‖ ^ 2)⁻¹
state_after: case inr.a
K : Type u_1
E : Type u_2
inst✝ : RCLike K
z✝ z : K
h₀ : z ≠ 0
⊢ z * ((starRingEnd K) z * ↑(‖z‖ ^ 2)⁻¹) = 1

tactic: rw [← mul_assoc, mul_conj, ofReal_inv, ofReal_pow, mul_inv_cancel]
state_before: case inr.a
K : Type u_1
E : Type u_2
inst✝ : RCLike K
z✝ z : K
h₀ : z ≠ 0
⊢ z * ((starRingEnd K) z * ↑(‖z‖ ^ 2)⁻¹) = 1
state_after: case inr.a
K : Type u_1
E : Type u_2
inst✝ : RCLike K
z✝ z : K
h₀ : z ≠ 0
⊢ ↑‖z‖ ^ 2 ≠ 0

tactic: simpa
state_before: case inr.a
K : Type u_1
E : Type u_2
inst✝ : RCLike K
z✝ z : K
h₀ : z ≠ 0
⊢ ↑‖z‖ ^ 2 ≠ 0
state_after: no goals
Theorem: Filter.blimsup_eq_iInf_biSup
File: Mathlib/Order/LiminfLimsup.lean

tactic: simp only [f.basis_sets.blimsup_eq_iInf_iSup, iSup_and', id, and_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : CompleteLattice α
f : Filter β
p : β → Prop
u : β → α
⊢ blimsup u f p = ⨅ s ∈ f, ⨆ b, ⨆ (_ : p b ∧ b ∈ s), u b
state_after: no goals