1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Balanced.neg_mem_iff
File: Mathlib/Analysis/LocallyConvex/Basic.lean

tactic: simpa using h.smul_mem (a := -1) (by simp) hx
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝³ : SeminormedRing 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
s s₁ s₂ t t₁ t₂ : Set E
inst✝ : NormOneClass 𝕜
h : Balanced 𝕜 s
x : E
hx : -x ∈ s
⊢ x ∈ s
state_after: no goals

tactic: simp
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝³ : SeminormedRing 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
s s₁ s₂ t t₁ t₂ : Set E
inst✝ : NormOneClass 𝕜
h : Balanced 𝕜 s
x : E
hx : -x ∈ s
⊢ ‖-1‖ ≤ 1
state_after: no goals

tactic: simpa using h.smul_mem (a := -1) (by simp) hx
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝³ : SeminormedRing 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
s s₁ s₂ t t₁ t₂ : Set E
inst✝ : NormOneClass 𝕜
h : Balanced 𝕜 s
x : E
hx : x ∈ s
⊢ -x ∈ s
state_after: no goals

tactic: simp
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝³ : SeminormedRing 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
s s₁ s₂ t t₁ t₂ : Set E
inst✝ : NormOneClass 𝕜
h : Balanced 𝕜 s
x : E
hx : x ∈ s
⊢ ‖-1‖ ≤ 1
state_after: no goals
Theorem: Ideal.map_eq_top_iff
File: Mathlib/RingTheory/Ideal/Over.lean

tactic: simp [f.injective_iff_ker_eq_bot.mp hf₁]
state_before: R : Type u_1
inst✝² : CommRing R
S : Type u_2
inst✝¹ : CommRing S
f✝ : R →+* S
I✝ J : Ideal S
inst✝ : Algebra R S
f : R →+* S
I : Ideal R
hf₁ : Function.Injective ⇑f
hf₂ : f.IsIntegral
⊢ RingHom.ker f ≤ I
state_after: no goals
Theorem: CompHaus.finiteCoproduct.ι_desc_apply
File: Mathlib/Topology/Category/CompHaus/Limits.lean

tactic: intro x
state_before: α : Type w
inst✝ : Finite α
X : α → CompHaus
B : CompHaus
π : (a : α) → X a ⟶ B
a : α
⊢ ∀ (x : (forget CompHaus).obj (X a)), (desc X π) ((ι X a) x) = (π a) x
state_after: α : Type w
inst✝ : Finite α
X : α → CompHaus
B : CompHaus
π : (a : α) → X a ⟶ B
a : α
x : (forget CompHaus).obj (X a)
⊢ (desc X π) ((ι X a) x) = (π a) x

tactic: change (ι X a ≫ desc X π) _ = _
state_before: α : Type w
inst✝ : Finite α
X : α → CompHaus
B : CompHaus
π : (a : α) → X a ⟶ B
a : α
x : (forget CompHaus).obj (X a)
⊢ (desc X π) ((ι X a) x) = (π a) x
state_after: α : Type w
inst✝ : Finite α
X : α → CompHaus
B : CompHaus
π : (a : α) → X a ⟶ B
a : α
x : (forget CompHaus).obj (X a)
⊢ (ι X a ≫ desc X π) x = (π a) x

tactic: simp only [ι_desc]
state_before: α : Type w
inst✝ : Finite α
X : α → CompHaus
B : CompHaus
π : (a : α) → X a ⟶ B
a : α
x : (forget CompHaus).obj (X a)
⊢ (ι X a ≫ desc X π) x = (π a) x
state_after: no goals
Theorem: Finset.Ioc_subset_Ioo_right
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: rw [← coe_subset, coe_Ioc, coe_Ioo]
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
h : b₁ < b₂
⊢ Ioc a b₁ ⊆ Ioo a b₂
state_after: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
h : b₁ < b₂
⊢ Set.Ioc a b₁ ⊆ Set.Ioo a b₂

tactic: exact Set.Ioc_subset_Ioo_right h
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
h : b₁ < b₂
⊢ Set.Ioc a b₁ ⊆ Set.Ioo a b₂
state_after: no goals
Theorem: cfc_comp_polynomial
File: Mathlib/Topology/ContinuousFunction/FunctionalCalculus.lean

tactic: rw [cfc_comp' .., cfc_polynomial ..]
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹⁰ : CommSemiring R
inst✝⁹ : StarRing R
inst✝⁸ : MetricSpace R
inst✝⁷ : TopologicalSemiring R
inst✝⁶ : ContinuousStar R
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra R A
inst✝¹ : ContinuousFunctionalCalculus R p
f✝ g : R → R
a✝ : A
ha✝ : autoParam (p a✝) _auto✝
hf✝ : autoParam (ContinuousOn f✝ (spectrum R a✝)) _auto✝
hg : autoParam (ContinuousOn g (spectrum R a✝)) _auto✝
inst✝ : UniqueContinuousFunctionalCalculus R A
q : R[X]
f : R → R
a : A
hf : autoParam (ContinuousOn f ((fun a => eval a q) '' spectrum R a)) _auto✝
ha : autoParam (p a) _auto✝
⊢ cfc (fun x => f (eval x q)) a = cfc f ((aeval a) q)
state_after: no goals
Theorem: Finpartition.part_mem
File: Mathlib/Order/Partition/Finpartition.lean

tactic: simp [part, ha, choose_mem]
state_before: α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
ha : a ∈ s
⊢ P.part a ∈ P.parts
state_after: no goals
Theorem: LieSubmodule.sInf_coe_toSubmodule'
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: rw [sInf_coe_toSubmodule, ← Set.image, sInf_image]
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' : LieSubmodule R L M
I J : LieIdeal R L
S : Set (LieSubmodule R L M)
⊢ ↑(sInf S) = ⨅ N ∈ S, ↑N
state_after: no goals
Theorem: ENNReal.tendsto_pow_atTop_nhds_zero_iff
File: Mathlib/Analysis/SpecificLimits/Basic.lean

tactic: refine ⟨fun h ↦ ?_, tendsto_pow_atTop_nhds_zero_of_lt_one⟩
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0∞
⊢ Tendsto (fun n => r ^ n) atTop (𝓝 0) ↔ r < 1
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0∞
h : Tendsto (fun n => r ^ n) atTop (𝓝 0)
⊢ r < 1

tactic: lift r to NNReal
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0∞
h : Tendsto (fun n => r ^ n) atTop (𝓝 0)
⊢ r < 1
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0∞
h : Tendsto (fun n => r ^ n) atTop (𝓝 0)
⊢ r ≠ ⊤

case intro
α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0
h : Tendsto (fun n => ↑r ^ n) atTop (𝓝 0)
⊢ ↑r < 1

tactic: rw [← coe_zero] at h
state_before: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0
h : Tendsto (fun n => ↑r ^ n) atTop (𝓝 0)
⊢ ↑r < 1
state_after: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0
h : Tendsto (fun n => ↑r ^ n) atTop (𝓝 ↑0)
⊢ ↑r < 1

tactic: norm_cast at h ⊢
state_before: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0
h : Tendsto (fun n => ↑r ^ n) atTop (𝓝 ↑0)
⊢ ↑r < 1
state_after: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0
h : Tendsto (HPow.hPow r) atTop (𝓝 0)
⊢ r < 1

tactic: exact NNReal.tendsto_pow_atTop_nhds_zero_iff.mp h
state_before: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0
h : Tendsto (HPow.hPow r) atTop (𝓝 0)
⊢ r < 1
state_after: no goals

tactic: refine fun hr ↦ top_ne_zero (tendsto_nhds_unique (EventuallyEq.tendsto ?_) (hr ▸ h))
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0∞
h : Tendsto (fun n => r ^ n) atTop (𝓝 0)
⊢ r ≠ ⊤
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0∞
h : Tendsto (fun n => r ^ n) atTop (𝓝 0)
hr : r = ⊤
⊢ (fun n => ⊤ ^ n) =ᶠ[atTop] fun x => ⊤

tactic: exact eventually_atTop.mpr ⟨1, fun _ hn ↦ pow_eq_top_iff.mpr ⟨rfl, Nat.pos_iff_ne_zero.mp hn⟩⟩
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0∞
h : Tendsto (fun n => r ^ n) atTop (𝓝 0)
hr : r = ⊤
⊢ (fun n => ⊤ ^ n) =ᶠ[atTop] fun x => ⊤
state_after: no goals
Theorem: Complex.cos_three_mul
File: Mathlib/Data/Complex/Exponential.lean

tactic: have h1 : x + 2 * x = 3 * x := by ring
state_before: x y : ℂ
⊢ cos (3 * x) = 4 * cos x ^ 3 - 3 * cos x
state_after: x y : ℂ
h1 : x + 2 * x = 3 * x
⊢ cos (3 * x) = 4 * cos x ^ 3 - 3 * cos x

tactic: rw [← h1, cos_add x (2 * x)]
state_before: x y : ℂ
h1 : x + 2 * x = 3 * x
⊢ cos (3 * x) = 4 * cos x ^ 3 - 3 * cos x
state_after: x y : ℂ
h1 : x + 2 * x = 3 * x
⊢ cos x * cos (2 * x) - sin x * sin (2 * x) = 4 * cos x ^ 3 - 3 * cos x

tactic: simp only [cos_two_mul, sin_two_mul, mul_add, mul_sub, mul_one, sq]
state_before: x y : ℂ
h1 : x + 2 * x = 3 * x
⊢ cos x * cos (2 * x) - sin x * sin (2 * x) = 4 * cos x ^ 3 - 3 * cos x
state_after: x y : ℂ
h1 : x + 2 * x = 3 * x
⊢ cos x * (2 * (cos x * cos x)) - cos x - sin x * (2 * sin x * cos x) = 4 * cos x ^ 3 - 3 * cos x

tactic: have h2 : 4 * cos x ^ 3 = 2 * cos x * cos x * cos x + 2 * cos x * cos x ^ 2 := by ring
state_before: x y : ℂ
h1 : x + 2 * x = 3 * x
⊢ cos x * (2 * (cos x * cos x)) - cos x - sin x * (2 * sin x * cos x) = 4 * cos x ^ 3 - 3 * cos x
state_after: x y : ℂ
h1 : x + 2 * x = 3 * x
h2 : 4 * cos x ^ 3 = 2 * cos x * cos x * cos x + 2 * cos x * cos x ^ 2
⊢ cos x * (2 * (cos x * cos x)) - cos x - sin x * (2 * sin x * cos x) = 4 * cos x ^ 3 - 3 * cos x

tactic: rw [h2, cos_sq']
state_before: x y : ℂ
h1 : x + 2 * x = 3 * x
h2 : 4 * cos x ^ 3 = 2 * cos x * cos x * cos x + 2 * cos x * cos x ^ 2
⊢ cos x * (2 * (cos x * cos x)) - cos x - sin x * (2 * sin x * cos x) = 4 * cos x ^ 3 - 3 * cos x
state_after: x y : ℂ
h1 : x + 2 * x = 3 * x
h2 : 4 * cos x ^ 3 = 2 * cos x * cos x * cos x + 2 * cos x * cos x ^ 2
⊢ cos x * (2 * (cos x * cos x)) - cos x - sin x * (2 * sin x * cos x) =
    2 * cos x * cos x * cos x + 2 * cos x * (1 - sin x ^ 2) - 3 * cos x

tactic: ring
state_before: x y : ℂ
h1 : x + 2 * x = 3 * x
h2 : 4 * cos x ^ 3 = 2 * cos x * cos x * cos x + 2 * cos x * cos x ^ 2
⊢ cos x * (2 * (cos x * cos x)) - cos x - sin x * (2 * sin x * cos x) =
    2 * cos x * cos x * cos x + 2 * cos x * (1 - sin x ^ 2) - 3 * cos x
state_after: no goals

tactic: ring
state_before: x y : ℂ
⊢ x + 2 * x = 3 * x
state_after: no goals

tactic: ring
state_before: x y : ℂ
h1 : x + 2 * x = 3 * x
⊢ 4 * cos x ^ 3 = 2 * cos x * cos x * cos x + 2 * cos x * cos x ^ 2
state_after: no goals
Theorem: AlgebraicTopology.DoldKan.Compatibility.equivalence₁UnitIso_eq
File: Mathlib/AlgebraicTopology/DoldKan/Compatibility.lean

tactic: ext X
state_before: A : Type u_1
A' : Type u_2
B : Type u_3
B' : Type u_4
inst✝³ : Category.{u_5, u_1} A
inst✝² : Category.{u_7, u_2} A'
inst✝¹ : Category.{?u.18603, u_3} B
inst✝ : Category.{u_6, u_4} B'
eA : A ≌ A'
eB : B ≌ B'
e' : A' ≌ B'
F : A ⥤ B'
hF : eA.functor ⋙ e'.functor ≅ F
G : B ⥤ A
hG : eB.functor ⋙ e'.inverse ≅ G ⋙ eA.functor
⊢ (equivalence₁ hF).unitIso = equivalence₁UnitIso hF
state_after: case w.w.h
A : Type u_1
A' : Type u_2
B : Type u_3
B' : Type u_4
inst✝³ : Category.{u_5, u_1} A
inst✝² : Category.{u_7, u_2} A'
inst✝¹ : Category.{?u.18603, u_3} B
inst✝ : Category.{u_6, u_4} B'
eA : A ≌ A'
eB : B ≌ B'
e' : A' ≌ B'
F : A ⥤ B'
hF : eA.functor ⋙ e'.functor ≅ F
G : B ⥤ A
hG : eB.functor ⋙ e'.inverse ≅ G ⋙ eA.functor
X : A
⊢ (equivalence₁ hF).unitIso.hom.app X = (equivalence₁UnitIso hF).hom.app X

tactic: simp [equivalence₁]
state_before: case w.w.h
A : Type u_1
A' : Type u_2
B : Type u_3
B' : Type u_4
inst✝³ : Category.{u_5, u_1} A
inst✝² : Category.{u_7, u_2} A'
inst✝¹ : Category.{?u.18603, u_3} B
inst✝ : Category.{u_6, u_4} B'
eA : A ≌ A'
eB : B ≌ B'
e' : A' ≌ B'
F : A ⥤ B'
hF : eA.functor ⋙ e'.functor ≅ F
G : B ⥤ A
hG : eB.functor ⋙ e'.inverse ≅ G ⋙ eA.functor
X : A
⊢ (equivalence₁ hF).unitIso.hom.app X = (equivalence₁UnitIso hF).hom.app X
state_after: no goals
Theorem: Urysohns.CU.approx_le_one
File: Mathlib/Topology/UrysohnsLemma.lean

tactic: induction' n with n ihn generalizing c
state_before: X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
c : CU P
n : ℕ
x : X
⊢ approx n c x ≤ 1
state_after: case zero
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
c : CU P
⊢ approx 0 c x ≤ 1

case succ
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), approx n c x ≤ 1
c : CU P
⊢ approx (n + 1) c x ≤ 1

tactic: exact indicator_apply_le' (fun _ => le_rfl) fun _ => zero_le_one
state_before: case zero
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
c : CU P
⊢ approx 0 c x ≤ 1
state_after: no goals

tactic: simp only [approx, midpoint_eq_smul_add, invOf_eq_inv, smul_eq_mul, ← div_eq_inv_mul]
state_before: case succ
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), approx n c x ≤ 1
c : CU P
⊢ approx (n + 1) c x ≤ 1
state_after: case succ
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), approx n c x ≤ 1
c : CU P
⊢ (approx n c.left x + approx n c.right x) / 2 ≤ 1

tactic: have := add_le_add (ihn (left c)) (ihn (right c))
state_before: case succ
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), approx n c x ≤ 1
c : CU P
⊢ (approx n c.left x + approx n c.right x) / 2 ≤ 1
state_after: case succ
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), approx n c x ≤ 1
c : CU P
this : approx n c.left x + approx n c.right x ≤ 1 + 1
⊢ (approx n c.left x + approx n c.right x) / 2 ≤ 1

tactic: norm_num at this
state_before: case succ
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), approx n c x ≤ 1
c : CU P
this : approx n c.left x + approx n c.right x ≤ 1 + 1
⊢ (approx n c.left x + approx n c.right x) / 2 ≤ 1
state_after: case succ
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), approx n c x ≤ 1
c : CU P
this : approx n c.left x + approx n c.right x ≤ 2
⊢ (approx n c.left x + approx n c.right x) / 2 ≤ 1

tactic: exact Iff.mpr (div_le_one zero_lt_two) this
state_before: case succ
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), approx n c x ≤ 1
c : CU P
this : approx n c.left x + approx n c.right x ≤ 2
⊢ (approx n c.left x + approx n c.right x) / 2 ≤ 1
state_after: no goals
Theorem: Nat.iSup_le_succ
File: Mathlib/Data/Nat/Lattice.lean

tactic: simp_rw [← Nat.lt_succ_iff, iSup_lt_succ]
state_before: α : Type u_1
inst✝ : CompleteLattice α
u : ℕ → α
n : ℕ
⊢ ⨆ k, ⨆ (_ : k ≤ n + 1), u k = (⨆ k, ⨆ (_ : k ≤ n), u k) ⊔ u (n + 1)
state_after: no goals
Theorem: LieSubmodule.isNilpotent_iff_exists_lcs_eq_bot
File: Mathlib/Algebra/Lie/Nilpotent.lean

tactic: rw [isNilpotent_iff]
state_before: R : Type u
L : Type v
M : Type w
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
k : ℕ
N✝ : LieSubmodule R L M
M₂ : Type w₁
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N : LieSubmodule R L M
⊢ IsNilpotent R L ↥↑N ↔ ∃ k, LieSubmodule.lcs k N = ⊥
state_after: R : Type u
L : Type v
M : Type w
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
k : ℕ
N✝ : LieSubmodule R L M
M₂ : Type w₁
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N : LieSubmodule R L M
⊢ (∃ k, lowerCentralSeries R L (↥↑N) k = ⊥) ↔ ∃ k, LieSubmodule.lcs k N = ⊥

tactic: refine exists_congr fun k => ?_
state_before: R : Type u
L : Type v
M : Type w
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
k : ℕ
N✝ : LieSubmodule R L M
M₂ : Type w₁
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N : LieSubmodule R L M
⊢ (∃ k, lowerCentralSeries R L (↥↑N) k = ⊥) ↔ ∃ k, LieSubmodule.lcs k N = ⊥
state_after: R : Type u
L : Type v
M : Type w
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
k✝ : ℕ
N✝ : LieSubmodule R L M
M₂ : Type w₁
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N : LieSubmodule R L M
k : ℕ
⊢ lowerCentralSeries R L (↥↑N) k = ⊥ ↔ LieSubmodule.lcs k N = ⊥

tactic: rw [N.lowerCentralSeries_eq_lcs_comap k, LieSubmodule.comap_incl_eq_bot,
  inf_eq_right.mpr (N.lcs_le_self k)]
state_before: R : Type u
L : Type v
M : Type w
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
k✝ : ℕ
N✝ : LieSubmodule R L M
M₂ : Type w₁
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N : LieSubmodule R L M
k : ℕ
⊢ lowerCentralSeries R L (↥↑N) k = ⊥ ↔ LieSubmodule.lcs k N = ⊥
state_after: no goals
Theorem: Computation.Results.len_unique
File: Mathlib/Data/Seq/Computation.lean

tactic: haveI := h1.terminates
state_before: α : Type u
β : Type v
γ : Type w
s : Computation α
a b : α
m n : ℕ
h1 : s.Results a m
h2 : s.Results b n
⊢ m = n
state_after: α : Type u
β : Type v
γ : Type w
s : Computation α
a b : α
m n : ℕ
h1 : s.Results a m
h2 : s.Results b n
this : s.Terminates
⊢ m = n

tactic: haveI := h2.terminates
state_before: α : Type u
β : Type v
γ : Type w
s : Computation α
a b : α
m n : ℕ
h1 : s.Results a m
h2 : s.Results b n
this : s.Terminates
⊢ m = n
state_after: α : Type u
β : Type v
γ : Type w
s : Computation α
a b : α
m n : ℕ
h1 : s.Results a m
h2 : s.Results b n
this✝ this : s.Terminates
⊢ m = n

tactic: rw [← h1.length, h2.length]
state_before: α : Type u
β : Type v
γ : Type w
s : Computation α
a b : α
m n : ℕ
h1 : s.Results a m
h2 : s.Results b n
this✝ this : s.Terminates
⊢ m = n
state_after: no goals
Theorem: ModularGroup_T_pow_mem_Gamma
File: Mathlib/NumberTheory/ModularForms/CongruenceSubgroups.lean

tactic: simp only [Gamma_mem, Fin.isValue, ModularGroup.coe_T_zpow, of_apply, cons_val', cons_val_zero,
  empty_val', cons_val_fin_one, Int.cast_one, cons_val_one, head_cons, head_fin_const,
  Int.cast_zero, and_self, and_true, true_and]
state_before: N✝ : ℕ
N M : ℤ
hNM : N ∣ M
⊢ ModularGroup.T ^ M ∈ Gamma N.natAbs
state_after: N✝ : ℕ
N M : ℤ
hNM : N ∣ M
⊢ ↑M = 0

tactic: refine Iff.mpr (ZMod.intCast_zmod_eq_zero_iff_dvd M (Int.natAbs N)) ?_
state_before: N✝ : ℕ
N M : ℤ
hNM : N ∣ M
⊢ ↑M = 0
state_after: N✝ : ℕ
N M : ℤ
hNM : N ∣ M
⊢ ↑N.natAbs ∣ M

tactic: simp only [Int.natCast_natAbs, abs_dvd, hNM]
state_before: N✝ : ℕ
N M : ℤ
hNM : N ∣ M
⊢ ↑N.natAbs ∣ M
state_after: no goals
Theorem: Nat.divisors_filter_dvd_of_dvd
File: Mathlib/NumberTheory/Divisors.lean

tactic: ext k
state_before: n✝ n m : ℕ
hn : n ≠ 0
hm : m ∣ n
⊢ filter (fun x => x ∣ m) n.divisors = m.divisors
state_after: case a
n✝ n m : ℕ
hn : n ≠ 0
hm : m ∣ n
k : ℕ
⊢ k ∈ filter (fun x => x ∣ m) n.divisors ↔ k ∈ m.divisors

tactic: simp_rw [mem_filter, mem_divisors]
state_before: case a
n✝ n m : ℕ
hn : n ≠ 0
hm : m ∣ n
k : ℕ
⊢ k ∈ filter (fun x => x ∣ m) n.divisors ↔ k ∈ m.divisors
state_after: case a
n✝ n m : ℕ
hn : n ≠ 0
hm : m ∣ n
k : ℕ
⊢ (k ∣ n ∧ n ≠ 0) ∧ k ∣ m ↔ k ∣ m ∧ m ≠ 0

tactic: exact ⟨fun ⟨_, hkm⟩ ↦ ⟨hkm, ne_zero_of_dvd_ne_zero hn hm⟩, fun ⟨hk, _⟩ ↦ ⟨⟨hk.trans hm, hn⟩, hk⟩⟩
state_before: case a
n✝ n m : ℕ
hn : n ≠ 0
hm : m ∣ n
k : ℕ
⊢ (k ∣ n ∧ n ≠ 0) ∧ k ∣ m ↔ k ∣ m ∧ m ≠ 0
state_after: no goals
Theorem: MeasureTheory.integrable_comp_mul_left_iff
File: Mathlib/MeasureTheory/Measure/Haar/NormedSpace.lean

tactic: simpa only [smul_eq_mul] using integrable_comp_smul_iff volume g hR
state_before: F : Type u_1
inst✝ : NormedAddCommGroup F
g : ℝ → F
R : ℝ
hR : R ≠ 0
⊢ Integrable (fun x => g (R * x)) volume ↔ Integrable g volume
state_after: no goals
Theorem: EisensteinSeries.div_linear_zpow_differentiableOn
File: Mathlib/NumberTheory/ModularForms/EisensteinSeries/MDifferentiable.lean

tactic: rcases ne_or_eq a 0 with ha | rfl
state_before: k : ℤ
a : Fin 2 → ℤ
⊢ DifferentiableOn ℂ (fun z => 1 / (↑(a 0) * z + ↑(a 1)) ^ k) {z | 0 < z.im}
state_after: case inl
k : ℤ
a : Fin 2 → ℤ
ha : a ≠ 0
⊢ DifferentiableOn ℂ (fun z => 1 / (↑(a 0) * z + ↑(a 1)) ^ k) {z | 0 < z.im}

case inr
k : ℤ
⊢ DifferentiableOn ℂ (fun z => 1 / (↑(0 0) * z + ↑(0 1)) ^ k) {z | 0 < z.im}

tactic: apply DifferentiableOn.div (differentiableOn_const 1)
state_before: case inl
k : ℤ
a : Fin 2 → ℤ
ha : a ≠ 0
⊢ DifferentiableOn ℂ (fun z => 1 / (↑(a 0) * z + ↑(a 1)) ^ k) {z | 0 < z.im}
state_after: case inl.hd
k : ℤ
a : Fin 2 → ℤ
ha : a ≠ 0
⊢ DifferentiableOn ℂ (fun x => (↑(a 0) * x + ↑(a 1)) ^ k) {z | 0 < z.im}

case inl.hx
k : ℤ
a : Fin 2 → ℤ
ha : a ≠ 0
⊢ ∀ x ∈ {z | 0 < z.im}, (↑(a 0) * x + ↑(a 1)) ^ k ≠ 0

tactic: apply DifferentiableOn.zpow
state_before: case inl.hd
k : ℤ
a : Fin 2 → ℤ
ha : a ≠ 0
⊢ DifferentiableOn ℂ (fun x => (↑(a 0) * x + ↑(a 1)) ^ k) {z | 0 < z.im}
state_after: case inl.hd.hf
k : ℤ
a : Fin 2 → ℤ
ha : a ≠ 0
⊢ DifferentiableOn ℂ (fun x => ↑(a 0) * x + ↑(a 1)) {z | 0 < z.im}

case inl.hd.h
k : ℤ
a : Fin 2 → ℤ
ha : a ≠ 0
⊢ (∀ x ∈ {z | 0 < z.im}, ↑(a 0) * x + ↑(a 1) ≠ 0) ∨ 0 ≤ k

tactic: fun_prop
state_before: case inl.hd.hf
k : ℤ
a : Fin 2 → ℤ
ha : a ≠ 0
⊢ DifferentiableOn ℂ (fun x => ↑(a 0) * x + ↑(a 1)) {z | 0 < z.im}
state_after: no goals

tactic: left
state_before: case inl.hd.h
k : ℤ
a : Fin 2 → ℤ
ha : a ≠ 0
⊢ (∀ x ∈ {z | 0 < z.im}, ↑(a 0) * x + ↑(a 1) ≠ 0) ∨ 0 ≤ k
state_after: case inl.hd.h.h
k : ℤ
a : Fin 2 → ℤ
ha : a ≠ 0
⊢ ∀ x ∈ {z | 0 < z.im}, ↑(a 0) * x + ↑(a 1) ≠ 0

tactic: exact fun z hz ↦ linear_ne_zero _ ⟨z, hz⟩
  ((comp_ne_zero_iff _ Int.cast_injective Int.cast_zero).mpr ha)
state_before: case inl.hd.h.h
k : ℤ
a : Fin 2 → ℤ
ha : a ≠ 0
⊢ ∀ x ∈ {z | 0 < z.im}, ↑(a 0) * x + ↑(a 1) ≠ 0
state_after: no goals

tactic: simp only [Fin.isValue, Pi.zero_apply, Int.cast_zero, zero_mul, add_zero, one_div]
state_before: case inr
k : ℤ
⊢ DifferentiableOn ℂ (fun z => 1 / (↑(0 0) * z + ↑(0 1)) ^ k) {z | 0 < z.im}
state_after: case inr
k : ℤ
⊢ DifferentiableOn ℂ (fun z => (0 ^ k)⁻¹) {z | 0 < z.im}

tactic: apply differentiableOn_const
state_before: case inr
k : ℤ
⊢ DifferentiableOn ℂ (fun z => (0 ^ k)⁻¹) {z | 0 < z.im}
state_after: no goals
Theorem: nhdsWithin_neBot
File: Mathlib/Topology/Basic.lean

tactic: rw [nhdsWithin, inf_neBot_iff]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ (𝓝[s] x).NeBot ↔ ∀ ⦃t : Set X⦄, t ∈ 𝓝 x → (t ∩ s).Nonempty
state_after: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ (∀ ⦃s_1 : Set X⦄, s_1 ∈ 𝓝 x → ∀ ⦃s' : Set X⦄, s' ∈ 𝓟 s → (s_1 ∩ s').Nonempty) ↔
    ∀ ⦃t : Set X⦄, t ∈ 𝓝 x → (t ∩ s).Nonempty

tactic: exact forall₂_congr fun U _ ↦
  ⟨fun h ↦ h (mem_principal_self _), fun h u hsu ↦ h.mono $ inter_subset_inter_right _ hsu⟩
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ (∀ ⦃s_1 : Set X⦄, s_1 ∈ 𝓝 x → ∀ ⦃s' : Set X⦄, s' ∈ 𝓟 s → (s_1 ∩ s').Nonempty) ↔
    ∀ ⦃t : Set X⦄, t ∈ 𝓝 x → (t ∩ s).Nonempty
state_after: no goals
Theorem: EuclideanDomain.gcd_dvd
File: Mathlib/Algebra/EuclideanDomain/Basic.lean

tactic: rw [gcd_zero_left]
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a b✝ b : R
⊢ gcd 0 b ∣ 0 ∧ gcd 0 b ∣ b
state_after: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a b✝ b : R
⊢ b ∣ 0 ∧ b ∣ b

tactic: exact ⟨dvd_zero _, dvd_rfl⟩
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a b✝ b : R
⊢ b ∣ 0 ∧ b ∣ b
state_after: no goals

tactic: rw [gcd_val]
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a✝ b✝ a b : R
x✝¹ : a ≠ 0
x✝ : gcd (b % a) a ∣ b % a ∧ gcd (b % a) a ∣ a
IH₁ : gcd (b % a) a ∣ b % a
IH₂ : gcd (b % a) a ∣ a
⊢ gcd a b ∣ a ∧ gcd a b ∣ b
state_after: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a✝ b✝ a b : R
x✝¹ : a ≠ 0
x✝ : gcd (b % a) a ∣ b % a ∧ gcd (b % a) a ∣ a
IH₁ : gcd (b % a) a ∣ b % a
IH₂ : gcd (b % a) a ∣ a
⊢ gcd (b % a) a ∣ a ∧ gcd (b % a) a ∣ b

tactic: exact ⟨IH₂, (dvd_mod_iff IH₂).1 IH₁⟩
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a✝ b✝ a b : R
x✝¹ : a ≠ 0
x✝ : gcd (b % a) a ∣ b % a ∧ gcd (b % a) a ∣ a
IH₁ : gcd (b % a) a ∣ b % a
IH₂ : gcd (b % a) a ∣ a
⊢ gcd (b % a) a ∣ a ∧ gcd (b % a) a ∣ b
state_after: no goals
Theorem: WithLp.nndist_equiv_symm_snd
File: Mathlib/Analysis/NormedSpace/ProdLp.lean

tactic: rw [nndist_eq_nnnorm, nndist_eq_nnnorm, ← WithLp.equiv_symm_sub, Prod.mk_sub_mk, sub_zero,
  nnnorm_equiv_symm_snd]
state_before: p : ℝ≥0∞
𝕜 : Type u_1
α : Type u_2
β : Type u_3
hp : Fact (1 ≤ p)
inst✝¹ : SeminormedAddCommGroup α
inst✝ : SeminormedAddCommGroup β
y₁ y₂ : β
⊢ nndist ((WithLp.equiv p (α × β)).symm (0, y₁)) ((WithLp.equiv p (α × β)).symm (0, y₂)) = nndist y₁ y₂
state_after: no goals
Theorem: Matroid.Base.ncard_diff_comm
File: Mathlib/Data/Matroid/Basic.lean

tactic: rw [ncard_def, hB₁.encard_diff_comm hB₂, ← ncard_def]
state_before: α : Type u_1
M : Matroid α
B₁ B₂ : Set α
hB₁ : M.Base B₁
hB₂ : M.Base B₂
⊢ (B₁ \ B₂).ncard = (B₂ \ B₁).ncard
state_after: no goals