1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: SetTheory.PGame.birthday_one
File: Mathlib/SetTheory/Game/Birthday.lean

tactic: rw [birthday_def]
state_before: ⊢ birthday 1 = 1
state_after: ⊢ max (lsub fun i => (moveLeft 1 i).birthday) (lsub fun i => (moveRight 1 i).birthday) = 1

tactic: simp
state_before: ⊢ max (lsub fun i => (moveLeft 1 i).birthday) (lsub fun i => (moveRight 1 i).birthday) = 1
state_after: no goals
Theorem: MeasureTheory.Measure.eq_zero_of_absolutelyContinuous_of_mutuallySingular
File: Mathlib/MeasureTheory/Measure/MutuallySingular.lean

tactic: rw [← Measure.MutuallySingular.self_iff]
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ₁ μ₂ ν✝ ν₁ ν₂ μ ν : Measure α
h_ac : μ ≪ ν
h_ms : μ ⟂ₘ ν
⊢ μ = 0
state_after: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ₁ μ₂ ν✝ ν₁ ν₂ μ ν : Measure α
h_ac : μ ≪ ν
h_ms : μ ⟂ₘ ν
⊢ μ ⟂ₘ μ

tactic: exact h_ms.mono_ac Measure.AbsolutelyContinuous.rfl h_ac
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ₁ μ₂ ν✝ ν₁ ν₂ μ ν : Measure α
h_ac : μ ≪ ν
h_ms : μ ⟂ₘ ν
⊢ μ ⟂ₘ μ
state_after: no goals
Theorem: Int.ceil_zero
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [← cast_zero, ceil_intCast]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a : α
⊢ ⌈0⌉ = 0
state_after: no goals
Theorem: Filter.tendsto_const_mul_atTop_iff_pos
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: refine ⟨fun hrf => not_le.mp fun hr => ?_, fun hr => (tendsto_const_mul_atTop_of_pos hr).mpr h⟩
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : LinearOrderedSemifield α
l : Filter β
f : β → α
r c : α
n : ℕ
inst✝ : l.NeBot
h : Tendsto f l atTop
⊢ Tendsto (fun x => r * f x) l atTop ↔ 0 < r
state_after: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : LinearOrderedSemifield α
l : Filter β
f : β → α
r c : α
n : ℕ
inst✝ : l.NeBot
h : Tendsto f l atTop
hrf : Tendsto (fun x => r * f x) l atTop
hr : r ≤ 0
⊢ False

tactic: rcases ((h.eventually_ge_atTop 0).and (hrf.eventually_gt_atTop 0)).exists with ⟨x, hx, hrx⟩
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : LinearOrderedSemifield α
l : Filter β
f : β → α
r c : α
n : ℕ
inst✝ : l.NeBot
h : Tendsto f l atTop
hrf : Tendsto (fun x => r * f x) l atTop
hr : r ≤ 0
⊢ False
state_after: case intro.intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : LinearOrderedSemifield α
l : Filter β
f : β → α
r c : α
n : ℕ
inst✝ : l.NeBot
h : Tendsto f l atTop
hrf : Tendsto (fun x => r * f x) l atTop
hr : r ≤ 0
x : β
hx : 0 ≤ f x
hrx : 0 < r * f x
⊢ False

tactic: exact (mul_nonpos_of_nonpos_of_nonneg hr hx).not_lt hrx
state_before: case intro.intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : LinearOrderedSemifield α
l : Filter β
f : β → α
r c : α
n : ℕ
inst✝ : l.NeBot
h : Tendsto f l atTop
hrf : Tendsto (fun x => r * f x) l atTop
hr : r ≤ 0
x : β
hx : 0 ≤ f x
hrx : 0 < r * f x
⊢ False
state_after: no goals
Theorem: Set.diff_iInter
File: Mathlib/Data/Set/Lattice.lean

tactic: rw [diff_eq, compl_iInter, inter_iUnion]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set β
t : ι → Set β
⊢ s \ ⋂ i, t i = ⋃ i, s \ t i
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set β
t : ι → Set β
⊢ ⋃ i, s ∩ (t i)ᶜ = ⋃ i, s \ t i

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set β
t : ι → Set β
⊢ ⋃ i, s ∩ (t i)ᶜ = ⋃ i, s \ t i
state_after: no goals
Theorem: Polynomial.leadingCoeff_cubic
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rw [add_assoc, add_assoc, ← add_assoc (C b * X ^ 2), add_comm,
  leadingCoeff_add_of_degree_lt <| degree_quadratic_lt_degree_C_mul_X_cb ha,
  leadingCoeff_C_mul_X_pow]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
ha : a ≠ 0
⊢ (C a * X ^ 3 + C b * X ^ 2 + C c * X + C d).leadingCoeff = a
state_after: no goals
Theorem: Nat.factors_multiset_prod_of_irreducible
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: rw [← Multiset.rel_eq, ← associated_eq_eq]
state_before: α : Type u_1
s : Multiset ℕ
h : ∀ x ∈ s, Irreducible x
⊢ normalizedFactors s.prod = s
state_after: α : Type u_1
s : Multiset ℕ
h : ∀ x ∈ s, Irreducible x
⊢ Multiset.Rel (fun x x_1 => x ~ᵤ x_1) (normalizedFactors s.prod) s

tactic: apply UniqueFactorizationMonoid.factors_unique irreducible_of_normalized_factor h
  (normalizedFactors_prod _)
state_before: α : Type u_1
s : Multiset ℕ
h : ∀ x ∈ s, Irreducible x
⊢ Multiset.Rel (fun x x_1 => x ~ᵤ x_1) (normalizedFactors s.prod) s
state_after: α : Type u_1
s : Multiset ℕ
h : ∀ x ∈ s, Irreducible x
⊢ s.prod ≠ 0

tactic: rw [Ne, Multiset.prod_eq_zero_iff]
state_before: α : Type u_1
s : Multiset ℕ
h : ∀ x ∈ s, Irreducible x
⊢ s.prod ≠ 0
state_after: α : Type u_1
s : Multiset ℕ
h : ∀ x ∈ s, Irreducible x
⊢ 0 ∉ s

tactic: exact fun con ↦ not_irreducible_zero (h 0 con)
state_before: α : Type u_1
s : Multiset ℕ
h : ∀ x ∈ s, Irreducible x
⊢ 0 ∉ s
state_after: no goals
Theorem: Polynomial.scaleRoots_C
File: Mathlib/RingTheory/Polynomial/ScaleRoots.lean

tactic: ext
state_before: R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
r c : R
⊢ (C c).scaleRoots r = C c
state_after: case a
R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
r c : R
n✝ : ℕ
⊢ ((C c).scaleRoots r).coeff n✝ = (C c).coeff n✝

tactic: simp
state_before: case a
R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
r c : R
n✝ : ℕ
⊢ ((C c).scaleRoots r).coeff n✝ = (C c).coeff n✝
state_after: no goals
Theorem: MeasureTheory.indicatorConstLp_add
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: simp_rw [indicatorConstLp, ← Memℒp.toLp_add, indicator_add]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
s : Set α
hs : MeasurableSet s
hμs : μ s ≠ ⊤
c c' : E
⊢ indicatorConstLp p hs hμs c + indicatorConstLp p hs hμs c' = indicatorConstLp p hs hμs (c + c')
state_after: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
s : Set α
hs : MeasurableSet s
hμs : μ s ≠ ⊤
c c' : E
⊢ Memℒp.toLp ((s.indicator fun x => c) + s.indicator fun x => c') ⋯ =
    Memℒp.toLp (fun a => s.indicator (fun x => c) a + s.indicator (fun x => c') a) ⋯

tactic: rfl
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
s : Set α
hs : MeasurableSet s
hμs : μ s ≠ ⊤
c c' : E
⊢ Memℒp.toLp ((s.indicator fun x => c) + s.indicator fun x => c') ⋯ =
    Memℒp.toLp (fun a => s.indicator (fun x => c) a + s.indicator (fun x => c') a) ⋯
state_after: no goals
Theorem: Rel.comp_right_top
File: Mathlib/Data/Rel.lean

tactic: ext x z
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r : Rel α β
⊢ r • ⊤ = fun x x_1 => x ∈ r.dom
state_after: case a.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r : Rel α β
x : α
z : γ
⊢ (r • ⊤) x z ↔ x ∈ r.dom

tactic: simp [comp, Top.top, dom]
state_before: case a.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r : Rel α β
x : α
z : γ
⊢ (r • ⊤) x z ↔ x ∈ r.dom
state_after: no goals
Theorem: Finset.mem_shadow_iterate_iff_exists_mem_card_add
File: Mathlib/Combinatorics/SetFamily/Shadow.lean

tactic: refine mem_shadow_iterate_iff_exists_sdiff.trans <| exists_congr fun t ↦ and_congr_right fun _ ↦
  and_congr_right fun hst ↦ ?_
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
s t : Finset α
a : α
k r : ℕ
⊢ t ∈ ∂ ^[k] 𝒜 ↔ ∃ s ∈ 𝒜, t ⊆ s ∧ s.card = t.card + k
state_after: α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
s t✝ : Finset α
a : α
k r : ℕ
t : Finset α
x✝ : t ∈ 𝒜
hst : t✝ ⊆ t
⊢ (t \ t✝).card = k ↔ t.card = t✝.card + k

tactic: rw [card_sdiff hst, tsub_eq_iff_eq_add_of_le, add_comm]
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
s t✝ : Finset α
a : α
k r : ℕ
t : Finset α
x✝ : t ∈ 𝒜
hst : t✝ ⊆ t
⊢ (t \ t✝).card = k ↔ t.card = t✝.card + k
state_after: α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
s t✝ : Finset α
a : α
k r : ℕ
t : Finset α
x✝ : t ∈ 𝒜
hst : t✝ ⊆ t
⊢ t✝.card ≤ t.card

tactic: exact card_mono hst
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
s t✝ : Finset α
a : α
k r : ℕ
t : Finset α
x✝ : t ∈ 𝒜
hst : t✝ ⊆ t
⊢ t✝.card ≤ t.card
state_after: no goals
Theorem: IsRightRegular.star
File: Mathlib/Algebra/Star/Basic.lean

tactic: simpa using congr_arg Star.star h
state_before: R : Type u
inst✝¹ : Mul R
inst✝ : StarMul R
x : R
hx : IsRightRegular x
a b : R
h : (fun x_1 => star x * x_1) a = (fun x_1 => star x * x_1) b
⊢ (fun x_1 => x_1 * x) (star a) = (fun x_1 => x_1 * x) (star b)
state_after: no goals
Theorem: List.get?_pmap
File: Mathlib/Data/List/Basic.lean

tactic: simp only [get?_eq_getElem?]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
l : List α
h : ∀ (a : α), a ∈ l → p a
n : ℕ
⊢ (pmap f l h).get? n = Option.pmap f (l.get? n) ⋯
state_after: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
l : List α
h : ∀ (a : α), a ∈ l → p a
n : ℕ
⊢ (pmap f l h)[n]? = Option.pmap f l[n]? ⋯

tactic: simp [getElem?_pmap, h]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
l : List α
h : ∀ (a : α), a ∈ l → p a
n : ℕ
⊢ (pmap f l h)[n]? = Option.pmap f l[n]? ⋯
state_after: no goals
Theorem: Set.preimage_iInter
File: Mathlib/Data/Set/Lattice.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β
s : ι → Set β
⊢ f ⁻¹' ⋂ i, s i = ⋂ i, f ⁻¹' s i
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β
s : ι → Set β
x✝ : α
⊢ x✝ ∈ f ⁻¹' ⋂ i, s i ↔ x✝ ∈ ⋂ i, f ⁻¹' s i

tactic: simp
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β
s : ι → Set β
x✝ : α
⊢ x✝ ∈ f ⁻¹' ⋂ i, s i ↔ x✝ ∈ ⋂ i, f ⁻¹' s i
state_after: no goals
Theorem: IsPrimitiveRoot.zero
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

tactic: simpa [zero_pow_eq, show ∀ p, ¬p → False ↔ p from @Classical.not_not] using hl
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l✝ : ℕ
M₀ : Type u_7
inst✝¹ : CommMonoidWithZero M₀
inst✝ : Nontrivial M₀
l : ℕ
hl : 0 ^ l = 1
⊢ 0 ∣ l
state_after: no goals
Theorem: NormedSpace.exp_zsmul
File: Mathlib/Analysis/NormedSpace/Exponential.lean

tactic: obtain ⟨n, rfl | rfl⟩ := z.eq_nat_or_neg
state_before: 𝕂 : Type u_1
𝔸 : Type u_2
inst✝³ : RCLike 𝕂
inst✝² : NormedDivisionRing 𝔸
inst✝¹ : NormedAlgebra 𝕂 𝔸
inst✝ : CompleteSpace 𝔸
z : ℤ
x : 𝔸
⊢ exp 𝕂 (z • x) = exp 𝕂 x ^ z
state_after: case intro.inl
𝕂 : Type u_1
𝔸 : Type u_2
inst✝³ : RCLike 𝕂
inst✝² : NormedDivisionRing 𝔸
inst✝¹ : NormedAlgebra 𝕂 𝔸
inst✝ : CompleteSpace 𝔸
x : 𝔸
n : ℕ
⊢ exp 𝕂 (↑n • x) = exp 𝕂 x ^ ↑n

case intro.inr
𝕂 : Type u_1
𝔸 : Type u_2
inst✝³ : RCLike 𝕂
inst✝² : NormedDivisionRing 𝔸
inst✝¹ : NormedAlgebra 𝕂 𝔸
inst✝ : CompleteSpace 𝔸
x : 𝔸
n : ℕ
⊢ exp 𝕂 (-↑n • x) = exp 𝕂 x ^ (-↑n)

tactic: rw [zpow_natCast, natCast_zsmul, exp_nsmul]
state_before: case intro.inl
𝕂 : Type u_1
𝔸 : Type u_2
inst✝³ : RCLike 𝕂
inst✝² : NormedDivisionRing 𝔸
inst✝¹ : NormedAlgebra 𝕂 𝔸
inst✝ : CompleteSpace 𝔸
x : 𝔸
n : ℕ
⊢ exp 𝕂 (↑n • x) = exp 𝕂 x ^ ↑n
state_after: no goals

tactic: rw [zpow_neg, zpow_natCast, neg_smul, exp_neg, natCast_zsmul, exp_nsmul]
state_before: case intro.inr
𝕂 : Type u_1
𝔸 : Type u_2
inst✝³ : RCLike 𝕂
inst✝² : NormedDivisionRing 𝔸
inst✝¹ : NormedAlgebra 𝕂 𝔸
inst✝ : CompleteSpace 𝔸
x : 𝔸
n : ℕ
⊢ exp 𝕂 (-↑n • x) = exp 𝕂 x ^ (-↑n)
state_after: no goals
Theorem: Matrix.cons_sub_cons
File: Mathlib/Data/Fin/VecNotation.lean

tactic: simp
state_before: α : Type u
m n o : ℕ
m' : Type u_1
n' : Type u_2
o' : Type u_3
inst✝ : Sub α
x : α
v : Fin n → α
y : α
w : Fin n → α
⊢ vecCons x v - vecCons y w = vecCons (x - y) (v - w)
state_after: no goals
Theorem: Finset.coe_subset_singleton
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [← coe_subset, coe_singleton]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s : Finset α
a b : α
⊢ ↑s ⊆ {a} ↔ s ⊆ {a}
state_after: no goals
Theorem: SimpleGraph.Subgraph.IsMatching.toEdge_eq_of_adj
File: Mathlib/Combinatorics/SimpleGraph/Matching.lean

tactic: simp only [IsMatching.toEdge, Subtype.mk_eq_mk]
state_before: V : Type u
G : SimpleGraph V
M✝ M : G.Subgraph
h : M.IsMatching
v w : V
hv : v ∈ M.verts
hvw : M.Adj v w
⊢ h.toEdge ⟨v, hv⟩ = ⟨s(v, w), hvw⟩
state_after: V : Type u
G : SimpleGraph V
M✝ M : G.Subgraph
h : M.IsMatching
v w : V
hv : v ∈ M.verts
hvw : M.Adj v w
⊢ s(v, Exists.choose ⋯) = s(v, w)

tactic: congr
state_before: V : Type u
G : SimpleGraph V
M✝ M : G.Subgraph
h : M.IsMatching
v w : V
hv : v ∈ M.verts
hvw : M.Adj v w
⊢ s(v, Exists.choose ⋯) = s(v, w)
state_after: case e_p.e_snd
V : Type u
G : SimpleGraph V
M✝ M : G.Subgraph
h : M.IsMatching
v w : V
hv : v ∈ M.verts
hvw : M.Adj v w
⊢ Exists.choose ⋯ = w

tactic: exact ((h (M.edge_vert hvw)).choose_spec.2 w hvw).symm
state_before: case e_p.e_snd
V : Type u
G : SimpleGraph V
M✝ M : G.Subgraph
h : M.IsMatching
v w : V
hv : v ∈ M.verts
hvw : M.Adj v w
⊢ Exists.choose ⋯ = w
state_after: no goals
Theorem: Matroid.Indep.exists_base_subset_union_base
File: Mathlib/Data/Matroid/Basic.lean

tactic: obtain ⟨B', hB', hIB'⟩ := hI.subset_basis_of_subset <| subset_union_left (t := B)
state_before: α : Type u_1
M : Matroid α
I B : Set α
hI : M.Indep I
hB : M.Base B
⊢ ∃ B', M.Base B' ∧ I ⊆ B' ∧ B' ⊆ I ∪ B
state_after: case intro.intro
α : Type u_1
M : Matroid α
I B : Set α
hI : M.Indep I
hB : M.Base B
B' : Set α
hB' : M.Basis B' (I ∪ B)
hIB' : I ⊆ B'
⊢ ∃ B', M.Base B' ∧ I ⊆ B' ∧ B' ⊆ I ∪ B

tactic: exact ⟨B', hB.base_of_basis_superset subset_union_right hB', hIB', hB'.subset⟩
state_before: case intro.intro
α : Type u_1
M : Matroid α
I B : Set α
hI : M.Indep I
hB : M.Base B
B' : Set α
hB' : M.Basis B' (I ∪ B)
hIB' : I ⊆ B'
⊢ ∃ B', M.Base B' ∧ I ⊆ B' ∧ B' ⊆ I ∪ B
state_after: no goals
Theorem: hasSum_geometric_of_lt_one
File: Mathlib/Analysis/SpecificLimits/Basic.lean

tactic: simp_all [neg_inv, geom_sum_eq, div_eq_mul_inv]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ
h₁ : 0 ≤ r
h₂ : r < 1
this✝ : r ≠ 1
this : Tendsto (fun n => (r ^ n - 1) * (r - 1)⁻¹) atTop (𝓝 ((0 - 1) * (r - 1)⁻¹))
⊢ Tendsto (fun n => ∑ i ∈ Finset.range n, r ^ i) atTop (𝓝 (1 - r)⁻¹)
state_after: no goals
Theorem: Matrix.bit1_apply_ne
File: Mathlib/Data/Matrix/Basic.lean

tactic: simp [bit1_apply, h]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : DecidableEq n
inst✝¹ : AddZeroClass α
inst✝ : One α
M : Matrix n n α
i j : n
h : i ≠ j
⊢ bit1 M i j = bit0 (M i j)
state_after: no goals
Theorem: CategoryTheory.ShortComplex.mono_homologyMap_of_mono_opcyclesMap'
File: Mathlib/Algebra/Homology/ShortComplex/Homology.lean

tactic: have : Mono (homologyMap φ ≫ S₂.homologyι) := by
  rw [homologyι_naturality φ]
  apply mono_comp
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
h : Mono (opcyclesMap φ)
⊢ Mono (homologyMap φ)
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
h : Mono (opcyclesMap φ)
this : Mono (homologyMap φ ≫ S₂.homologyι)
⊢ Mono (homologyMap φ)

tactic: exact mono_of_mono (homologyMap φ) S₂.homologyι
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
h : Mono (opcyclesMap φ)
this : Mono (homologyMap φ ≫ S₂.homologyι)
⊢ Mono (homologyMap φ)
state_after: no goals

tactic: rw [homologyι_naturality φ]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
h : Mono (opcyclesMap φ)
⊢ Mono (homologyMap φ ≫ S₂.homologyι)
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
h : Mono (opcyclesMap φ)
⊢ Mono (S₁.homologyι ≫ opcyclesMap φ)

tactic: apply mono_comp
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
h : Mono (opcyclesMap φ)
⊢ Mono (S₁.homologyι ≫ opcyclesMap φ)
state_after: no goals
Theorem: lift_nhds_right
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: rw [nhds_eq_comap_uniformity', comap_lift_eq2 hg]
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
x : α
g : Set α → Filter β
hg : Monotone g
⊢ (𝓝 x).lift g = (𝓤 α).lift fun s => g {y | (y, x) ∈ s}
state_after: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
x : α
g : Set α → Filter β
hg : Monotone g
⊢ (𝓤 α).lift (g ∘ preimage fun y => (y, x)) = (𝓤 α).lift fun s => g {y | (y, x) ∈ s}

tactic: simp_rw [Function.comp, preimage]
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
x : α
g : Set α → Filter β
hg : Monotone g
⊢ (𝓤 α).lift (g ∘ preimage fun y => (y, x)) = (𝓤 α).lift fun s => g {y | (y, x) ∈ s}
state_after: no goals
Theorem: HahnSeries.SummableFamily.hsum_embDomain
File: Mathlib/RingTheory/HahnSeries/Summable.lean

tactic: ext g
state_before: Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
β : Type u_4
s : SummableFamily Γ R α
f : α ↪ β
a : α
b : β
⊢ (s.embDomain f).hsum = s.hsum
state_after: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
β : Type u_4
s : SummableFamily Γ R α
f : α ↪ β
a : α
b : β
g : Γ
⊢ (s.embDomain f).hsum.coeff g = s.hsum.coeff g

tactic: simp only [hsum_coeff, embDomain_apply, apply_dite HahnSeries.coeff, dite_apply, zero_coeff]
state_before: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
β : Type u_4
s : SummableFamily Γ R α
f : α ↪ β
a : α
b : β
g : Γ
⊢ (s.embDomain f).hsum.coeff g = s.hsum.coeff g
state_after: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
β : Type u_4
s : SummableFamily Γ R α
f : α ↪ β
a : α
b : β
g : Γ
⊢ (∑ᶠ (i : β), if h : i ∈ Set.range ⇑f then (s (Classical.choose ⋯)).coeff g else 0) = ∑ᶠ (i : α), (s i).coeff g

tactic: exact finsum_emb_domain f fun a => (s a).coeff g
state_before: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
β : Type u_4
s : SummableFamily Γ R α
f : α ↪ β
a : α
b : β
g : Γ
⊢ (∑ᶠ (i : β), if h : i ∈ Set.range ⇑f then (s (Classical.choose ⋯)).coeff g else 0) = ∑ᶠ (i : α), (s i).coeff g
state_after: no goals
Theorem: ZMod.val_natCast
File: Mathlib/Data/ZMod/Basic.lean

tactic: cases n
state_before: n a : ℕ
⊢ (↑a).val = a % n
state_after: case zero
a : ℕ
⊢ (↑a).val = a % 0

case succ
a n✝ : ℕ
⊢ (↑a).val = a % (n✝ + 1)

tactic: rw [Nat.mod_zero]
state_before: case zero
a : ℕ
⊢ (↑a).val = a % 0
state_after: case zero
a : ℕ
⊢ (↑a).val = a

tactic: exact Int.natAbs_ofNat a
state_before: case zero
a : ℕ
⊢ (↑a).val = a
state_after: no goals

tactic: apply Fin.val_natCast
state_before: case succ
a n✝ : ℕ
⊢ (↑a).val = a % (n✝ + 1)
state_after: no goals
Theorem: hausdorffMeasure_of_lt_dimH
File: Mathlib/Topology/MetricSpace/HausdorffDimension.lean

tactic: simp only [dimH_def, lt_iSup_iff] at h
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
s : Set X
d : ℝ≥0
h : ↑d < dimH s
⊢ μH[↑d] s = ⊤
state_after: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
s : Set X
d : ℝ≥0
h : ∃ i, ∃ (_ : μH[↑i] s = ⊤), ↑d < ↑i
⊢ μH[↑d] s = ⊤

tactic: rcases h with ⟨d', hsd', hdd'⟩
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
s : Set X
d : ℝ≥0
h : ∃ i, ∃ (_ : μH[↑i] s = ⊤), ↑d < ↑i
⊢ μH[↑d] s = ⊤
state_after: case intro.intro
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
s : Set X
d d' : ℝ≥0
hsd' : μH[↑d'] s = ⊤
hdd' : ↑d < ↑d'
⊢ μH[↑d] s = ⊤

tactic: exact top_unique (hsd' ▸ hausdorffMeasure_mono hdd'.le _)
state_before: case intro.intro
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
s : Set X
d d' : ℝ≥0
hsd' : μH[↑d'] s = ⊤
hdd' : ↑d < ↑d'
⊢ μH[↑d] s = ⊤
state_after: no goals
Theorem: CategoryTheory.BasedFunctor.isHomLift_map
File: Mathlib/CategoryTheory/FiberedCategory/BasedCategory.lean

tactic: apply of_fac 𝒳.p f φ  (F.w_obj a ▸ domain_eq 𝒴.p f (F.map φ))
  (F.w_obj b ▸ codomain_eq 𝒴.p f (F.map φ))
state_before: 𝒮 : Type u₁
inst✝¹ : Category.{v₁, u₁} 𝒮
𝒳 : BasedCategory 𝒮
𝒴 : BasedCategory 𝒮
F : 𝒳 ⥤ᵇ 𝒴
R S : 𝒮
a b : 𝒳.obj
f : R ⟶ S
φ : a ⟶ b
inst✝ : 𝒴.p.IsHomLift f (F.map φ)
⊢ 𝒳.p.IsHomLift f φ
state_after: 𝒮 : Type u₁
inst✝¹ : Category.{v₁, u₁} 𝒮
𝒳 : BasedCategory 𝒮
𝒴 : BasedCategory 𝒮
F : 𝒳 ⥤ᵇ 𝒴
R S : 𝒮
a b : 𝒳.obj
f : R ⟶ S
φ : a ⟶ b
inst✝ : 𝒴.p.IsHomLift f (F.map φ)
⊢ f = eqToHom ⋯ ≫ 𝒳.p.map φ ≫ eqToHom ⋯

tactic: simp [congr_hom F.w.symm, fac 𝒴.p f (F.map φ)]
state_before: 𝒮 : Type u₁
inst✝¹ : Category.{v₁, u₁} 𝒮
𝒳 : BasedCategory 𝒮
𝒴 : BasedCategory 𝒮
F : 𝒳 ⥤ᵇ 𝒴
R S : 𝒮
a b : 𝒳.obj
f : R ⟶ S
φ : a ⟶ b
inst✝ : 𝒴.p.IsHomLift f (F.map φ)
⊢ f = eqToHom ⋯ ≫ 𝒳.p.map φ ≫ eqToHom ⋯
state_after: no goals