tasksource/leandojo huggingface dataset:
Theorem: Real.hasSum_log_one_add_inv
File: Mathlib/Analysis/SpecialFunctions/Log/Deriv.lean

tactic: convert hasSum_log_sub_log_of_abs_lt_1 h₁ using 1
state_before: a : ℝ
h : 0 < a
h₁ : abs (1 / (2 * a + 1)) < 1
⊢ HasSum (fun k => 2 * (1 / (2 * ↑k + 1)) * (1 / (2 * a + 1)) ^ (2 * k + 1)) (log (1 + a⁻¹))

tactic: have h₂ : (2 : ℝ) * a + 1 ≠ 0 := by linarith
state_before: case h.e'_6
a : ℝ
h : 0 < a
h₁ : abs (1 / (2 * a + 1)) < 1
⊢ log (1 + a⁻¹) = log (1 + 1 / (2 * a + 1)) - log (1 - 1 / (2 * a + 1))

tactic: have h₃ := h.ne'
state_before: case h.e'_6
a : ℝ
h : 0 < a
h₁ : abs (1 / (2 * a + 1)) < 1
h₂ : 2 * a + 1 ≠ 0
⊢ log (1 + a⁻¹) = log (1 + 1 / (2 * a + 1)) - log (1 - 1 / (2 * a + 1))

tactic: rw [← log_div]
state_before: case h.e'_6
a : ℝ
h : 0 < a
h₁ : abs (1 / (2 * a + 1)) < 1
h₂ : 2 * a + 1 ≠ 0
h₃ : a ≠ 0
⊢ log (1 + a⁻¹) = log (1 + 1 / (2 * a + 1)) - log (1 - 1 / (2 * a + 1))

tactic: rw [abs_of_pos, div_lt_one]
state_before: a : ℝ
h : 0 < a
⊢ abs (1 / (2 * a + 1)) < 1

tactic: linarith
state_before: a : ℝ
h : 0 < a
⊢ 1 < 2 * a + 1

tactic: linarith
state_before: a : ℝ
h : 0 < a
⊢ 0 < 2 * a + 1

tactic: exact div_pos one_pos (by linarith)
state_before: a : ℝ
h : 0 < a
⊢ 0 < 1 / (2 * a + 1)

tactic: linarith
state_before: a : ℝ
h : 0 < a
⊢ 0 < 2 * a + 1

tactic: linarith
state_before: a : ℝ
h : 0 < a
h₁ : abs (1 / (2 * a + 1)) < 1
⊢ 2 * a + 1 ≠ 0

tactic: congr
state_before: case h.e'_6
a : ℝ
h : 0 < a
h₁ : abs (1 / (2 * a + 1)) < 1
h₂ : 2 * a + 1 ≠ 0
h₃ : a ≠ 0
⊢ log (1 + a⁻¹) = log ((1 + 1 / (2 * a + 1)) / (1 - 1 / (2 * a + 1)))

tactic: field_simp
state_before: case h.e'_6.e_x
a : ℝ
h : 0 < a
h₁ : abs (1 / (2 * a + 1)) < 1
h₂ : 2 * a + 1 ≠ 0
h₃ : a ≠ 0
⊢ 1 + a⁻¹ = (1 + 1 / (2 * a + 1)) / (1 - 1 / (2 * a + 1))

tactic: linarith
state_before: case h.e'_6.e_x
a : ℝ
h : 0 < a
h₁ : abs (1 / (2 * a + 1)) < 1
h₂ : 2 * a + 1 ≠ 0
h₃ : a ≠ 0
⊢ (a + 1) * (2 * a) = (2 * a + 1 + 1) * a

tactic: field_simp
state_before: case h.e'_6.hx
a : ℝ
h : 0 < a
h₁ : abs (1 / (2 * a + 1)) < 1
h₂ : 2 * a + 1 ≠ 0
h₃ : a ≠ 0
⊢ 1 + 1 / (2 * a + 1) ≠ 0

tactic: linarith
state_before: case h.e'_6.hx
a : ℝ
h : 0 < a
h₁ : abs (1 / (2 * a + 1)) < 1
h₂ : 2 * a + 1 ≠ 0
h₃ : a ≠ 0
⊢ ¬2 * a + 1 + 1 = 0

tactic: field_simp
state_before: case h.e'_6.hy
a : ℝ
h : 0 < a
h₁ : abs (1 / (2 * a + 1)) < 1
h₂ : 2 * a + 1 ≠ 0
h₃ : a ≠ 0
⊢ 1 - 1 / (2 * a + 1) ≠ 0
Theorem: Equiv.swap_apply_right
File: Mathlib/Logic/Equiv/Basic.lean

tactic: by_cases h:b = a <;> simp [swap_apply_def, h]
state_before: α : Sort u_1
inst✝ : DecidableEq α
a b : α
⊢ ↑(swap a b) b = a
Theorem: IsLocalization.integerNormalization_eval₂_eq_zero
File: Mathlib/RingTheory/Localization/Integral.lean

tactic: rw [hb, ← IsScalarTower.algebraMap_smul S (b : R) p, eval₂_smul, hx, MulZeroClass.mul_zero]
state_before: R : Type u_3
inst✝⁵ : CommRing R
M : Submonoid R
S : Type u_1
inst✝⁴ : CommRing S
inst✝³ : Algebra R S
P : Type ?u.47235
inst✝² : CommRing P
inst✝¹ : IsLocalization M S
R' : Type u_2
inst✝ : CommRing R'
g : S →+* R'
p : S[X]
x : R'
hx : eval₂ g x p = 0
b : { x // x ∈ M }
hb : Polynomial.map (algebraMap R S) (integerNormalization M p) = ↑b • p
⊢ eval₂ g x (Polynomial.map (algebraMap R S) (integerNormalization M p)) = 0
Theorem: List.modifyNthTail_add
File: Std/Data/List/Lemmas.lean

tactic: induction l₁ <;> simp [*, Nat.succ_add]
state_before: α : Type u_1
f : List α → List α
n : Nat
l₁ l₂ : List α
⊢ modifyNthTail f (length l₁ + n) (l₁ ++ l₂) = l₁ ++ modifyNthTail f n l₂
Theorem: Turing.Tape.move_left_right
File: Mathlib/Computability/TuringMachine.lean

tactic: cases T
state_before: Γ : Type u_1
inst✝ : Inhabited Γ
T : Tape Γ
⊢ move Dir.right (move Dir.left T) = T

tactic: simp [Tape.move]
state_before: case mk
Γ : Type u_1
inst✝ : Inhabited Γ
head✝ : Γ
left✝ right✝ : ListBlank Γ
⊢ move Dir.right (move Dir.left { head := head✝, left := left✝, right := right✝ }) =
    { head := head✝, left := left✝, right := right✝ }
Theorem: IntermediateField.isAlgebraic_iSup
File: Mathlib/FieldTheory/Adjoin.lean

tactic: rintro ⟨x, hx⟩
state_before: K : Type u_2
L : Type u_3
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
E1 E2 : IntermediateField K L
ι : Type u_1
f : ι → IntermediateField K L
h : ∀ (i : ι), Algebra.IsAlgebraic K { x // x ∈ f i }
⊢ Algebra.IsAlgebraic K { x // x ∈ ⨆ (i : ι), f i }

tactic: obtain ⟨s, hx⟩ := exists_finset_of_mem_supr' hx
state_before: case mk
K : Type u_2
L : Type u_3
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
E1 E2 : IntermediateField K L
ι : Type u_1
f : ι → IntermediateField K L
h : ∀ (i : ι), Algebra.IsAlgebraic K { x // x ∈ f i }
x : L
hx : x ∈ ⨆ (i : ι), f i
⊢ IsAlgebraic K { val := x, property := hx }

tactic: rw [isAlgebraic_iff, Subtype.coe_mk, ← Subtype.coe_mk (p := fun x => x ∈ _) x hx,
  ← isAlgebraic_iff]
state_before: case mk.intro
K : Type u_2
L : Type u_3
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
E1 E2 : IntermediateField K L
ι : Type u_1
f : ι → IntermediateField K L
h : ∀ (i : ι), Algebra.IsAlgebraic K { x // x ∈ f i }
x : L
hx✝ : x ∈ ⨆ (i : ι), f i
s : Finset ((i : ι) × { x // x ∈ f i })
hx : x ∈ ⨆ (i : (i : ι) × { x // x ∈ f i }) (_ : i ∈ s), K⟮↑i.snd⟯
⊢ IsAlgebraic K { val := x, property := hx✝ }

tactic: haveI : ∀ i : Σ i, f i, FiniteDimensional K K⟮(i.2 : L)⟯ := fun ⟨i, x⟩ =>
  adjoin.finiteDimensional (isIntegral_iff.1 (isAlgebraic_iff_isIntegral.1 (h i x)))
state_before: case mk.intro
K : Type u_2
L : Type u_3
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
E1 E2 : IntermediateField K L
ι : Type u_1
f : ι → IntermediateField K L
h : ∀ (i : ι), Algebra.IsAlgebraic K { x // x ∈ f i }
x : L
hx✝ : x ∈ ⨆ (i : ι), f i
s : Finset ((i : ι) × { x // x ∈ f i })
hx : x ∈ ⨆ (i : (i : ι) × { x // x ∈ f i }) (_ : i ∈ s), K⟮↑i.snd⟯
⊢ IsAlgebraic K { val := x, property := hx }

tactic: apply Algebra.isAlgebraic_of_finite
state_before: case mk.intro
K : Type u_2
L : Type u_3
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
E1 E2 : IntermediateField K L
ι : Type u_1
f : ι → IntermediateField K L
h : ∀ (i : ι), Algebra.IsAlgebraic K { x // x ∈ f i }
x : L
hx✝ : x ∈ ⨆ (i : ι), f i
s : Finset ((i : ι) × { x // x ∈ f i })
hx : x ∈ ⨆ (i : (i : ι) × { x // x ∈ f i }) (_ : i ∈ s), K⟮↑i.snd⟯
this : ∀ (i : (i : ι) × { x // x ∈ f i }), FiniteDimensional K { x // x ∈ K⟮↑i.snd⟯ }
⊢ IsAlgebraic K { val := x, property := hx }
Theorem: MeasureTheory.SimpleFunc.posPart_sub_negPart
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: simp only [posPart, negPart]
state_before: α : Type u_1
E : Type ?u.94507
F : Type ?u.94510
𝕜 : Type ?u.94513
inst✝² : LinearOrder E
inst✝¹ : Zero E
inst✝ : MeasurableSpace α
f : α →ₛ ℝ
⊢ posPart f - negPart f = f

tactic: ext a
state_before: α : Type u_1
E : Type ?u.94507
F : Type ?u.94510
𝕜 : Type ?u.94513
inst✝² : LinearOrder E
inst✝¹ : Zero E
inst✝ : MeasurableSpace α
f : α →ₛ ℝ
⊢ map (fun b => max b 0) f - map (fun b => max b 0) (-f) = f

tactic: rw [coe_sub]
state_before: case H
α : Type u_1
E : Type ?u.94507
F : Type ?u.94510
𝕜 : Type ?u.94513
inst✝² : LinearOrder E
inst✝¹ : Zero E
inst✝ : MeasurableSpace α
f : α →ₛ ℝ
a : α
⊢ ↑(map (fun b => max b 0) f - map (fun b => max b 0) (-f)) a = ↑f a

tactic: exact max_zero_sub_eq_self (f a)
state_before: case H
α : Type u_1
E : Type ?u.94507
F : Type ?u.94510
𝕜 : Type ?u.94513
inst✝² : LinearOrder E
inst✝¹ : Zero E
inst✝ : MeasurableSpace α
f : α →ₛ ℝ
a : α
⊢ (↑(map (fun b => max b 0) f) - ↑(map (fun b => max b 0) (-f))) a = ↑f a
Theorem: TopologicalSpace.Opens.openEmbedding_obj_top
File: Mathlib/Topology/Category/TopCat/Opens.lean

tactic: ext1
state_before: X : TopCat
U : Opens ↑X
⊢ (IsOpenMap.functor (_ : IsOpenMap ((forget TopCat).map (inclusion U)))).obj ⊤ = U

tactic: exact Set.image_univ.trans Subtype.range_coe
state_before: case h
X : TopCat
U : Opens ↑X
⊢ ↑((IsOpenMap.functor (_ : IsOpenMap ((forget TopCat).map (inclusion U)))).obj ⊤) = ↑U
Theorem: Finset.prod_eq_zero
File: Mathlib/Algebra/BigOperators/Basic.lean

tactic: haveI := Classical.decEq α
state_before: ι : Type ?u.869344
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : CommMonoidWithZero β
ha : a ∈ s
h : f a = 0
⊢ ∏ x in s, f x = 0

tactic: rw [← prod_erase_mul _ _ ha, h, mul_zero]
state_before: ι : Type ?u.869344
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : CommMonoidWithZero β
ha : a ∈ s
h : f a = 0
this : DecidableEq α
⊢ ∏ x in s, f x = 0
Theorem: Submodule.toLinearPMap_range
File: Mathlib/LinearAlgebra/LinearPMap.lean

tactic: rw [← LinearPMap.graph_map_snd_eq_range, toLinearPMap_graph_eq]
state_before: R : Type u_1
inst✝⁶ : Ring R
E : Type u_3
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module R E
F : Type u_2
inst✝³ : AddCommGroup F
inst✝² : Module R F
G : Type ?u.674878
inst✝¹ : AddCommGroup G
inst✝ : Module R G
g : Submodule R (E × F)
hg : ∀ (x : E × F), x ∈ g → x.fst = 0 → x.snd = 0
⊢ LinearMap.range (toLinearPMap g hg).toFun = map (LinearMap.snd R E F) g
Theorem: Bitraversable.tsnd_tfst
File: Mathlib/Control/Bitraversable/Lemmas.lean

tactic: rw [← comp_bitraverse]
state_before: t : Type u → Type u → Type u
inst✝⁵ : Bitraversable t
β : Type u
F G : Type u → Type u
inst✝⁴ : Applicative F
inst✝³ : Applicative G
inst✝² : IsLawfulBitraversable t
inst✝¹ : LawfulApplicative F
inst✝ : LawfulApplicative G
α₀ α₁ β₀ β₁ : Type u
f : α₀ → F α₁
f' : β₀ → G β₁
x : t α₀ β₀
⊢ Comp.mk (tsnd f' <$> tfst f x) = bitraverse (Comp.mk ∘ map pure ∘ f) (Comp.mk ∘ pure ∘ f') x

tactic: simp only [Function.comp, map_pure]
state_before: t : Type u → Type u → Type u
inst✝⁵ : Bitraversable t
β : Type u
F G : Type u → Type u
inst✝⁴ : Applicative F
inst✝³ : Applicative G
inst✝² : IsLawfulBitraversable t
inst✝¹ : LawfulApplicative F
inst✝ : LawfulApplicative G
α₀ α₁ β₀ β₁ : Type u
f : α₀ → F α₁
f' : β₀ → G β₁
x : t α₀ β₀
⊢ bitraverse (Comp.mk ∘ map pure ∘ f) (Comp.mk ∘ map f' ∘ pure) x =
    bitraverse (Comp.mk ∘ map pure ∘ f) (Comp.mk ∘ pure ∘ f') x
Theorem: Set.image2_inter_union_subset
File: Mathlib/Data/Set/NAry.lean

tactic: rw [inter_comm]
state_before: α : Type u_1
α' : Type ?u.50587
β : Type u_2
β' : Type ?u.50593
γ : Type ?u.50596
γ' : Type ?u.50599
δ : Type ?u.50602
δ' : Type ?u.50605
ε : Type ?u.50608
ε' : Type ?u.50611
ζ : Type ?u.50614
ζ' : Type ?u.50617
ν : Type ?u.50620
f✝ f' : α → β → γ
g g' : α → β → γ → δ
s✝ s' : Set α
t✝ t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
f : α → α → β
s t : Set α
hf : ∀ (a b : α), f a b = f b a
⊢ image2 f (s ∩ t) (s ∪ t) ⊆ image2 f s t

tactic: exact image2_inter_union_subset_union.trans (union_subset (image2_comm hf).subset Subset.rfl)
state_before: α : Type u_1
α' : Type ?u.50587
β : Type u_2
β' : Type ?u.50593
γ : Type ?u.50596
γ' : Type ?u.50599
δ : Type ?u.50602
δ' : Type ?u.50605
ε : Type ?u.50608
ε' : Type ?u.50611
ζ : Type ?u.50614
ζ' : Type ?u.50617
ν : Type ?u.50620
f✝ f' : α → β → γ
g g' : α → β → γ → δ
s✝ s' : Set α
t✝ t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
f : α → α → β
s t : Set α
hf : ∀ (a b : α), f a b = f b a
⊢ image2 f (t ∩ s) (s ∪ t) ⊆ image2 f s t
Theorem: Polynomial.dickson_one_one_charP
File: Mathlib/RingTheory/Polynomial/Dickson.lean

tactic: have h : (1 : R) = ZMod.castHom (dvd_refl p) R 1
state_before: R : Type u_1
S : Type ?u.318902
inst✝³ : CommRing R
inst✝² : CommRing S
k : ℕ
a : R
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : CharP R p
⊢ dickson 1 1 p = X ^ p

tactic: simp only [ZMod.castHom_apply, ZMod.cast_one']
state_before: case h
R : Type u_1
S : Type ?u.318902
inst✝³ : CommRing R
inst✝² : CommRing S
k : ℕ
a : R
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : CharP R p
⊢ 1 = ↑(ZMod.castHom (_ : p ∣ p) R) 1

R : Type u_1
S : Type ?u.318902
inst✝³ : CommRing R
inst✝² : CommRing S
k : ℕ
a : R
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : CharP R p
h : 1 = ↑(ZMod.castHom (_ : p ∣ p) R) 1
⊢ dickson 1 1 p = X ^ p

tactic: rw [h, ← map_dickson (ZMod.castHom (dvd_refl p) R), dickson_one_one_zmod_p, Polynomial.map_pow,
  map_X]
state_before: R : Type u_1
S : Type ?u.318902
inst✝³ : CommRing R
inst✝² : CommRing S
k : ℕ
a : R
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : CharP R p
h : 1 = ↑(ZMod.castHom (_ : p ∣ p) R) 1
⊢ dickson 1 1 p = X ^ p
Theorem: GradedAlgebra.proj_recompose
File: Mathlib/RingTheory/GradedAlgebra/Basic.lean

tactic: rw [GradedAlgebra.proj_apply, decompose_symm_of, Equiv.apply_symm_apply]
state_before: ι : Type u_1
R : Type u_3
A : Type u_2
σ : Type ?u.286140
inst✝⁵ : DecidableEq ι
inst✝⁴ : AddMonoid ι
inst✝³ : CommSemiring R
inst✝² : Semiring A
inst✝¹ : Algebra R A
𝒜 : ι → Submodule R A
inst✝ : GradedAlgebra 𝒜
a : ⨁ (i : ι), { x // x ∈ 𝒜 i }
i : ι
⊢ ↑(proj 𝒜 i) (↑(decompose 𝒜).symm a) = ↑(decompose 𝒜).symm (↑(of (fun i => (fun i => { x // x ∈ 𝒜 i }) i) i) (↑a i))
Theorem: MeasureTheory.lintegral_count
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: rw [count, lintegral_sum_measure]
state_before: α : Type u_1
β : Type ?u.1694198
γ : Type ?u.1694201
δ : Type ?u.1694204
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
⊢ (∫⁻ (a : α), f a ∂count) = ∑' (a : α), f a

tactic: congr
state_before: α : Type u_1
β : Type ?u.1694198
γ : Type ?u.1694201
δ : Type ?u.1694204
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
⊢ (∑' (i : α), ∫⁻ (a : α), f a ∂dirac i) = ∑' (a : α), f a

tactic: exact funext fun a => lintegral_dirac a f
state_before: case e_f
α : Type u_1
β : Type ?u.1694198
γ : Type ?u.1694201
δ : Type ?u.1694204
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
⊢ (fun i => ∫⁻ (a : α), f a ∂dirac i) = fun a => f a
Theorem: Set.iUnion_eq_range_psigma
File: Mathlib/Data/Set/Lattice.lean

tactic: simp [Set.ext_iff]
state_before: α : Type ?u.157506
β : Type u_1
γ : Type ?u.157512
ι : Sort u_2
ι' : Sort ?u.157518
ι₂ : Sort ?u.157521
κ : ι → Sort ?u.157526
κ₁ : ι → Sort ?u.157531
κ₂ : ι → Sort ?u.157536
κ' : ι' → Sort ?u.157541
s : ι → Set β
⊢ (⋃ (i : ι), s i) = range fun a => ↑a.snd
Theorem: PiLp.edist_comm
File: Mathlib/Analysis/NormedSpace/PiLp.lean

tactic: rcases p.trichotomy with (rfl | rfl | h)
state_before: p : ℝ≥0∞
𝕜 : Type ?u.15998
𝕜' : Type ?u.16001
ι : Type u_1
α : ι → Type ?u.16009
β : ι → Type u_2
inst✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
f g : PiLp p β
⊢ edist f g = edist g f

tactic: simp only [edist_eq_card, eq_comm, Ne.def]
state_before: case inl
𝕜 : Type ?u.15998
𝕜' : Type ?u.16001
ι : Type u_1
α : ι → Type ?u.16009
β : ι → Type u_2
inst✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
f g : PiLp 0 β
⊢ edist f g = edist g f

tactic: simp only [edist_eq_iSup, edist_comm]
state_before: case inr.inl
𝕜 : Type ?u.15998
𝕜' : Type ?u.16001
ι : Type u_1
α : ι → Type ?u.16009
β : ι → Type u_2
inst✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
f g : PiLp ⊤ β
⊢ edist f g = edist g f

tactic: simp only [edist_eq_sum h, edist_comm]
state_before: case inr.inr
p : ℝ≥0∞
𝕜 : Type ?u.15998
𝕜' : Type ?u.16001
ι : Type u_1
α : ι → Type ?u.16009
β : ι → Type u_2
inst✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
f g : PiLp p β
h : 0 < ENNReal.toReal p
⊢ edist f g = edist g f
Theorem: hasSum_geometric_of_norm_lt_1
File: Mathlib/Analysis/SpecificLimits/Normed.lean

tactic: have xi_ne_one : ξ ≠ 1 := by
  contrapose! h
  simp [h]
state_before: α : Type ?u.133909
β : Type ?u.133912
ι : Type ?u.133915
K : Type u_1
inst✝ : NormedField K
ξ : K
h : ‖ξ‖ < 1
⊢ HasSum (fun n => ξ ^ n) (1 - ξ)⁻¹

tactic: have A : Tendsto (fun n ↦ (ξ ^ n - 1) * (ξ - 1)⁻¹) atTop (𝓝 ((0 - 1) * (ξ - 1)⁻¹)) :=
  ((tendsto_pow_atTop_nhds_0_of_norm_lt_1 h).sub tendsto_const_nhds).mul tendsto_const_nhds
state_before: α : Type ?u.133909
β : Type ?u.133912
ι : Type ?u.133915
K : Type u_1
inst✝ : NormedField K
ξ : K
h : ‖ξ‖ < 1
xi_ne_one : ξ ≠ 1
⊢ HasSum (fun n => ξ ^ n) (1 - ξ)⁻¹

tactic: rw [hasSum_iff_tendsto_nat_of_summable_norm]
state_before: α : Type ?u.133909
β : Type ?u.133912
ι : Type ?u.133915
K : Type u_1
inst✝ : NormedField K
ξ : K
h : ‖ξ‖ < 1
xi_ne_one : ξ ≠ 1
A : Tendsto (fun n => (ξ ^ n - 1) * (ξ - 1)⁻¹) atTop (𝓝 ((0 - 1) * (ξ - 1)⁻¹))
⊢ HasSum (fun n => ξ ^ n) (1 - ξ)⁻¹

tactic: contrapose! h
state_before: α : Type ?u.133909
β : Type ?u.133912
ι : Type ?u.133915
K : Type u_1
inst✝ : NormedField K
ξ : K
h : ‖ξ‖ < 1
⊢ ξ ≠ 1

tactic: simp [h]
state_before: α : Type ?u.133909
β : Type ?u.133912
ι : Type ?u.133915
K : Type u_1
inst✝ : NormedField K
ξ : K
h : ξ = 1
⊢ 1 ≤ ‖ξ‖

tactic: simpa [geom_sum_eq, xi_ne_one, neg_inv, div_eq_mul_inv] using A
state_before: α : Type ?u.133909
β : Type ?u.133912
ι : Type ?u.133915
K : Type u_1
inst✝ : NormedField K
ξ : K
h : ‖ξ‖ < 1
xi_ne_one : ξ ≠ 1
A : Tendsto (fun n => (ξ ^ n - 1) * (ξ - 1)⁻¹) atTop (𝓝 ((0 - 1) * (ξ - 1)⁻¹))
⊢ Tendsto (fun n => ∑ i in Finset.range n, ξ ^ i) atTop (𝓝 (1 - ξ)⁻¹)

tactic: simp [norm_pow, summable_geometric_of_lt_1 (norm_nonneg _) h]
state_before: α : Type ?u.133909
β : Type ?u.133912
ι : Type ?u.133915
K : Type u_1
inst✝ : NormedField K
ξ : K
h : ‖ξ‖ < 1
xi_ne_one : ξ ≠ 1
A : Tendsto (fun n => (ξ ^ n - 1) * (ξ - 1)⁻¹) atTop (𝓝 ((0 - 1) * (ξ - 1)⁻¹))
⊢ Summable fun i => ‖ξ ^ i‖
Theorem: rank_finsupp'
File: Mathlib/LinearAlgebra/FreeModule/Rank.lean

tactic: simp [rank_finsupp]
state_before: R : Type u
M : Type v
N : Type w
inst✝⁷ : Ring R
inst✝⁶ : StrongRankCondition R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Module.Free R M
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : Module.Free R N
ι : Type v
⊢ Module.rank R (ι →₀ M) = (#ι) * Module.rank R M
Theorem: MeasureTheory.Measure.count_empty
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: rw [count_apply MeasurableSet.empty, tsum_empty]
state_before: α : Type u_1
β : Type ?u.369064
γ : Type ?u.369067
δ : Type ?u.369070
ι : Type ?u.369073
R : Type ?u.369076
R' : Type ?u.369079
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
inst✝ : MeasurableSpace α
⊢ ↑↑count ∅ = 0
Theorem: Equiv.traverse_eq_map_id
File: Mathlib/Control/Traversable/Equiv.lean

tactic: simp [Equiv.traverse, traverse_eq_map_id, functor_norm]
state_before: t t' : Type u → Type u
eqv : (α : Type u) → t α ≃ t' α
inst✝⁵ : Traversable t
inst✝⁴ : IsLawfulTraversable t
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : Applicative G
inst✝¹ : LawfulApplicative F
inst✝ : LawfulApplicative G
η : ApplicativeTransformation F G
α β γ : Type u
f : α → β
x : t' α
⊢ Equiv.traverse eqv (pure ∘ f) x = pure (Equiv.map eqv f x)

tactic: rfl
state_before: t t' : Type u → Type u
eqv : (α : Type u) → t α ≃ t' α
inst✝⁵ : Traversable t
inst✝⁴ : IsLawfulTraversable t
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : Applicative G
inst✝¹ : LawfulApplicative F
inst✝ : LawfulApplicative G
η : ApplicativeTransformation F G
α β γ : Type u
f : α → β
x : t' α
⊢ ↑(eqv β) (id.mk (f <$> ↑(eqv α).symm x)) = Equiv.map eqv f x
Theorem: NFA.toεNFA_evalFrom_match
File: Mathlib/Computability/EpsilonNFA.lean

tactic: rw [evalFrom, εNFA.evalFrom, toεNFA_εClosure]
state_before: α : Type u
σ σ' : Type v
M✝ : εNFA α σ
S : Set σ
x : List α
s : σ
a : α
M : NFA α σ
start : Set σ
⊢ εNFA.evalFrom (toεNFA M) start = evalFrom M start

tactic: suffices εNFA.stepSet (toεNFA M) = stepSet M by rw [this]
state_before: α : Type u
σ σ' : Type v
M✝ : εNFA α σ
S : Set σ
x : List α
s : σ
a : α
M : NFA α σ
start : Set σ
⊢ List.foldl (εNFA.stepSet (toεNFA M)) start = List.foldl (stepSet M) start

tactic: ext S s
state_before: α : Type u
σ σ' : Type v
M✝ : εNFA α σ
S : Set σ
x : List α
s : σ
a : α
M : NFA α σ
start : Set σ
⊢ εNFA.stepSet (toεNFA M) = stepSet M

tactic: simp only [stepSet, εNFA.stepSet, exists_prop, Set.mem_iUnion]
state_before: case h.h.h
α : Type u
σ σ' : Type v
M✝ : εNFA α σ
S✝ : Set σ
x : List α
s✝ : σ
a : α
M : NFA α σ
start S : Set σ
s : α
x✝ : σ
⊢ x✝ ∈ εNFA.stepSet (toεNFA M) S s ↔ x✝ ∈ stepSet M S s

tactic: apply exists_congr
state_before: case h.h.h
α : Type u
σ σ' : Type v
M✝ : εNFA α σ
S✝ : Set σ
x : List α
s✝ : σ
a : α
M : NFA α σ
start S : Set σ
s : α
x✝ : σ
⊢ (∃ i, i ∈ S ∧ x✝ ∈ εNFA.εClosure (toεNFA M) (εNFA.step (toεNFA M) i (some s))) ↔ ∃ i, i ∈ S ∧ x✝ ∈ step M i s

tactic: simp only [and_congr_right_iff]
state_before: case h.h.h.h
α : Type u
σ σ' : Type v
M✝ : εNFA α σ
S✝ : Set σ
x : List α
s✝ : σ
a : α
M : NFA α σ
start S : Set σ
s : α
x✝ : σ
⊢ ∀ (a : σ), a ∈ S ∧ x✝ ∈ εNFA.εClosure (toεNFA M) (εNFA.step (toεNFA M) a (some s)) ↔ a ∈ S ∧ x✝ ∈ step M a s

tactic: intro _ _
state_before: case h.h.h.h
α : Type u
σ σ' : Type v
M✝ : εNFA α σ
S✝ : Set σ
x : List α
s✝ : σ
a : α
M : NFA α σ
start S : Set σ
s : α
x✝ : σ
⊢ ∀ (a : σ), a ∈ S → (x✝ ∈ εNFA.εClosure (toεNFA M) (εNFA.step (toεNFA M) a (some s)) ↔ x✝ ∈ step M a s)

tactic: rw [M.toεNFA_εClosure]
state_before: case h.h.h.h
α : Type u
σ σ' : Type v
M✝ : εNFA α σ
S✝ : Set σ
x : List α
s✝ : σ
a : α
M : NFA α σ
start S : Set σ
s : α
x✝ a✝¹ : σ
a✝ : a✝¹ ∈ S
⊢ x✝ ∈ εNFA.εClosure (toεNFA M) (εNFA.step (toεNFA M) a✝¹ (some s)) ↔ x✝ ∈ step M a✝¹ s

tactic: rfl
state_before: case h.h.h.h
α : Type u
σ σ' : Type v
M✝ : εNFA α σ
S✝ : Set σ
x : List α
s✝ : σ
a : α
M : NFA α σ
start S : Set σ
s : α
x✝ a✝¹ : σ
a✝ : a✝¹ ∈ S
⊢ x✝ ∈ εNFA.step (toεNFA M) a✝¹ (some s) ↔ x✝ ∈ step M a✝¹ s

tactic: rw [this]
state_before: α : Type u
σ σ' : Type v
M✝ : εNFA α σ
S : Set σ
x : List α
s : σ
a : α
M : NFA α σ
start : Set σ
this : εNFA.stepSet (toεNFA M) = stepSet M
⊢ List.foldl (εNFA.stepSet (toεNFA M)) start = List.foldl (stepSet M) start
Theorem: SubgroupClass.subtype_comp_inclusion
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: ext
state_before: G : Type u_2
G' : Type ?u.68703
inst✝⁶ : Group G
inst✝⁵ : Group G'
A : Type ?u.68712
inst✝⁴ : AddGroup A
M : Type ?u.68718
S : Type u_1
inst✝³ : DivInvMonoid M
inst✝² : SetLike S M
hSM : SubgroupClass S M
H✝ K✝ : S
inst✝¹ : SetLike S G
inst✝ : SubgroupClass S G
H K : S
hH : H ≤ K
⊢ MonoidHom.comp (↑K) (inclusion hH) = ↑H

tactic: simp only [MonoidHom.comp_apply, coeSubtype, coe_inclusion]
state_before: case h
G : Type u_2
G' : Type ?u.68703
inst✝⁶ : Group G
inst✝⁵ : Group G'
A : Type ?u.68712
inst✝⁴ : AddGroup A
M : Type ?u.68718
S : Type u_1
inst✝³ : DivInvMonoid M
inst✝² : SetLike S M
hSM : SubgroupClass S M
H✝ K✝ : S
inst✝¹ : SetLike S G
inst✝ : SubgroupClass S G
H K : S
hH : H ≤ K
x✝ : { x // x ∈ H }
⊢ ↑(MonoidHom.comp (↑K) (inclusion hH)) x✝ = ↑↑H x✝
Theorem: IsPreconnected.union
File: Mathlib/Topology/Connected.lean

tactic: rintro r (rfl | rfl | h) <;> assumption
state_before: α : Type u
β : Type v
ι : Type ?u.3583
π : ι → Type ?u.3588
inst✝ : TopologicalSpace α
s✝ t✝ u v : Set α
x : α
s t : Set α
H1 : x ∈ s
H2 : x ∈ t
H3 : IsPreconnected s
H4 : IsPreconnected t
⊢ ∀ (s_1 : Set α), s_1 ∈ {s, t} → x ∈ s_1

tactic: rintro r (rfl | rfl | h) <;> assumption
state_before: α : Type u
β : Type v
ι : Type ?u.3583
π : ι → Type ?u.3588
inst✝ : TopologicalSpace α
s✝ t✝ u v : Set α
x : α
s t : Set α
H1 : x ∈ s
H2 : x ∈ t
H3 : IsPreconnected s
H4 : IsPreconnected t
⊢ ∀ (s_1 : Set α), s_1 ∈ {s, t} → IsPreconnected s_1
Theorem: Functor.map_id
File: Mathlib/Control/Functor.lean

tactic: apply funext <;> apply id_map
state_before: F : Type u → Type v
α β γ : Type u
inst✝¹ : Functor F
inst✝ : LawfulFunctor F
⊢ (fun x x_1 => x <$> x_1) id = id
Theorem: geom_sum_mul_add
File: Mathlib/Algebra/GeomSum.lean

tactic: have := (Commute.one_right x).geom_sum₂_mul_add n
state_before: α : Type u
inst✝ : Semiring α
x : α
n : ℕ
⊢ (∑ i in range n, (x + 1) ^ i) * x + 1 = (x + 1) ^ n

tactic: rw [one_pow, geom_sum₂_with_one] at this
state_before: α : Type u
inst✝ : Semiring α
x : α
n : ℕ
this : (∑ i in range n, (x + 1) ^ i * 1 ^ (n - 1 - i)) * x + 1 ^ n = (x + 1) ^ n
⊢ (∑ i in range n, (x + 1) ^ i) * x + 1 = (x + 1) ^ n

tactic: exact this
state_before: α : Type u
inst✝ : Semiring α
x : α
n : ℕ
this : (∑ i in range n, (x + 1) ^ i) * x + 1 = (x + 1) ^ n
⊢ (∑ i in range n, (x + 1) ^ i) * x + 1 = (x + 1) ^ n
Theorem: Bool.eq_false_of_not_eq_true'
File: Mathlib/Data/Bool/Basic.lean

tactic: cases a <;> decide
state_before: a : Bool
⊢ (!decide (a = true)) = true → a = false