1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Finsupp.cons_tail
File: Mathlib/Data/Finsupp/Fin.lean

tactic: ext a
state_before: n : ℕ
i : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
⊢ cons (t 0) t.tail = t
state_after: case h
n : ℕ
i : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
a : Fin (n + 1)
⊢ (cons (t 0) t.tail) a = t a

tactic: by_cases c_a : a = 0
state_before: case h
n : ℕ
i : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
a : Fin (n + 1)
⊢ (cons (t 0) t.tail) a = t a
state_after: case pos
n : ℕ
i : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
a : Fin (n + 1)
c_a : a = 0
⊢ (cons (t 0) t.tail) a = t a

case neg
n : ℕ
i : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
a : Fin (n + 1)
c_a : ¬a = 0
⊢ (cons (t 0) t.tail) a = t a

tactic: rw [c_a, cons_zero]
state_before: case pos
n : ℕ
i : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
a : Fin (n + 1)
c_a : a = 0
⊢ (cons (t 0) t.tail) a = t a
state_after: no goals

tactic: rw [← Fin.succ_pred a c_a, cons_succ, ← tail_apply]
state_before: case neg
n : ℕ
i : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
a : Fin (n + 1)
c_a : ¬a = 0
⊢ (cons (t 0) t.tail) a = t a
state_after: no goals
Theorem: Submodule.mkQ_map_self
File: Mathlib/LinearAlgebra/Quotient.lean

tactic: rw [eq_bot_iff, map_le_iff_le_comap, comap_bot, ker_mkQ]
state_before: R : Type u_1
M : Type u_2
r : R
x y : M
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝² : Ring R₂
inst✝¹ : AddCommGroup M₂
inst✝ : Module R₂ M₂
τ₁₂ : R →+* R₂
⊢ map p.mkQ p = ⊥
state_after: no goals
Theorem: Matrix.map_updateRow
File: Mathlib/Data/Matrix/RowCol.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
M : Matrix m n α
i : m
j : n
b : n → α
c : m → α
inst✝ : DecidableEq m
f : α → β
⊢ (M.updateRow i b).map f = (M.map f).updateRow i (f ∘ b)
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
M : Matrix m n α
i : m
j : n
b : n → α
c : m → α
inst✝ : DecidableEq m
f : α → β
i✝ : m
j✝ : n
⊢ (M.updateRow i b).map f i✝ j✝ = (M.map f).updateRow i (f ∘ b) i✝ j✝

tactic: rw [updateRow_apply, map_apply, map_apply, updateRow_apply]
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
M : Matrix m n α
i : m
j : n
b : n → α
c : m → α
inst✝ : DecidableEq m
f : α → β
i✝ : m
j✝ : n
⊢ (M.updateRow i b).map f i✝ j✝ = (M.map f).updateRow i (f ∘ b) i✝ j✝
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
M : Matrix m n α
i : m
j : n
b : n → α
c : m → α
inst✝ : DecidableEq m
f : α → β
i✝ : m
j✝ : n
⊢ f (if i✝ = i then b j✝ else M i✝ j✝) = if i✝ = i then (f ∘ b) j✝ else f (M i✝ j✝)

tactic: exact apply_ite f _ _ _
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
M : Matrix m n α
i : m
j : n
b : n → α
c : m → α
inst✝ : DecidableEq m
f : α → β
i✝ : m
j✝ : n
⊢ f (if i✝ = i then b j✝ else M i✝ j✝) = if i✝ = i then (f ∘ b) j✝ else f (M i✝ j✝)
state_after: no goals
Theorem: ENNReal.mul_self_lt_top_iff
File: Mathlib/Data/ENNReal/Operations.lean

tactic: rw [ENNReal.mul_lt_top_iff, and_self, or_self, or_iff_left_iff_imp]
state_before: a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
a : ℝ≥0∞
⊢ a * a < ⊤ ↔ a < ⊤
state_after: a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
a : ℝ≥0∞
⊢ a = 0 → a < ⊤

tactic: rintro rfl
state_before: a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
a : ℝ≥0∞
⊢ a = 0 → a < ⊤
state_after: a b c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
⊢ 0 < ⊤

tactic: exact zero_lt_top
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
⊢ 0 < ⊤
state_after: no goals
Theorem: Submodule.colon_top
File: Mathlib/RingTheory/Ideal/Colon.lean

tactic: simp_rw [SetLike.ext_iff, mem_colon, smul_eq_mul]
state_before: R : Type u_1
M : Type u_2
M' : Type u_3
F : Type u_4
G : Type u_5
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
N N₁ N₂ P P₁ P₂ : Submodule R M
I : Ideal R
⊢ colon I ⊤ = I
state_after: R : Type u_1
M : Type u_2
M' : Type u_3
F : Type u_4
G : Type u_5
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
N N₁ N₂ P P₁ P₂ : Submodule R M
I : Ideal R
⊢ ∀ (x : R), (∀ p ∈ ⊤, x * p ∈ I) ↔ x ∈ I

tactic: exact fun x ↦ ⟨fun h ↦ mul_one x ▸ h 1 trivial, fun h _ _ ↦ I.mul_mem_right _ h⟩
state_before: R : Type u_1
M : Type u_2
M' : Type u_3
F : Type u_4
G : Type u_5
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
N N₁ N₂ P P₁ P₂ : Submodule R M
I : Ideal R
⊢ ∀ (x : R), (∀ p ∈ ⊤, x * p ∈ I) ↔ x ∈ I
state_after: no goals
Theorem: Isometry.diam_image
File: Mathlib/Topology/MetricSpace/Isometry.lean

tactic: rw [Metric.diam, Metric.diam, hf.ediam_image]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
f : α → β
hf : Isometry f
s : Set α
⊢ Metric.diam (f '' s) = Metric.diam s
state_after: no goals
Theorem: MeasureTheory.Measure.addHaar_ball_mul
File: Mathlib/MeasureTheory/Measure/Lebesgue/EqHaar.lean

tactic: rcases hr.eq_or_lt with (rfl | h)
state_before: E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : μ.IsAddHaarMeasure
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s✝ : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
hr : 0 ≤ r
s : ℝ
⊢ μ (ball x (r * s)) = ENNReal.ofReal (r ^ finrank ℝ E) * μ (ball 0 s)
state_after: case inl
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : μ.IsAddHaarMeasure
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s✝ : Set E
inst✝ : Nontrivial E
x : E
s : ℝ
hr : 0 ≤ 0
⊢ μ (ball x (0 * s)) = ENNReal.ofReal (0 ^ finrank ℝ E) * μ (ball 0 s)

case inr
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : μ.IsAddHaarMeasure
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s✝ : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
hr : 0 ≤ r
s : ℝ
h : 0 < r
⊢ μ (ball x (r * s)) = ENNReal.ofReal (r ^ finrank ℝ E) * μ (ball 0 s)

tactic: simp only [zero_pow (finrank_pos (R := ℝ) (M := E)).ne', measure_empty, zero_mul,
  ENNReal.ofReal_zero, ball_zero]
state_before: case inl
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : μ.IsAddHaarMeasure
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s✝ : Set E
inst✝ : Nontrivial E
x : E
s : ℝ
hr : 0 ≤ 0
⊢ μ (ball x (0 * s)) = ENNReal.ofReal (0 ^ finrank ℝ E) * μ (ball 0 s)
state_after: no goals

tactic: exact addHaar_ball_mul_of_pos μ x h s
state_before: case inr
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : μ.IsAddHaarMeasure
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s✝ : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
hr : 0 ≤ r
s : ℝ
h : 0 < r
⊢ μ (ball x (r * s)) = ENNReal.ofReal (r ^ finrank ℝ E) * μ (ball 0 s)
state_after: no goals
Theorem: MeasureTheory.upcrossingsBefore_pos_eq
File: Mathlib/Probability/Martingale/Upcrossing.lean

tactic: simp_rw [upcrossingsBefore, (crossing_pos_eq hab).1]
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
a b : ℝ
f : ℕ → Ω → ℝ
N n m : ℕ
ω : Ω
ℱ : Filtration ℕ m0
hab : a < b
⊢ upcrossingsBefore 0 (b - a) (fun n ω => (f n ω - a)⁺) N ω = upcrossingsBefore a b f N ω
state_after: no goals
Theorem: CategoryTheory.Limits.hasEqualizer_of_common_retraction
File: Mathlib/CategoryTheory/Limits/Shapes/Reflexive.lean

tactic: letI := IsCoreflexivePair.mk' r fr gr
state_before: C : Type u
inst✝² : Category.{v, u} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
A✝ B✝ : C
f✝ g✝ : A✝ ⟶ B✝
F : C ⥤ D
G : D ⥤ C
adj : F ⊣ G
inst✝ : HasCoreflexiveEqualizers C
A B : C
f g : A ⟶ B
r : B ⟶ A
fr : f ≫ r = 𝟙 A
gr : g ≫ r = 𝟙 A
⊢ HasEqualizer f g
state_after: C : Type u
inst✝² : Category.{v, u} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
A✝ B✝ : C
f✝ g✝ : A✝ ⟶ B✝
F : C ⥤ D
G : D ⥤ C
adj : F ⊣ G
inst✝ : HasCoreflexiveEqualizers C
A B : C
f g : A ⟶ B
r : B ⟶ A
fr : f ≫ r = 𝟙 A
gr : g ≫ r = 𝟙 A
this : IsCoreflexivePair f g := IsCoreflexivePair.mk' r fr gr
⊢ HasEqualizer f g

tactic: infer_instance
state_before: C : Type u
inst✝² : Category.{v, u} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
A✝ B✝ : C
f✝ g✝ : A✝ ⟶ B✝
F : C ⥤ D
G : D ⥤ C
adj : F ⊣ G
inst✝ : HasCoreflexiveEqualizers C
A B : C
f g : A ⟶ B
r : B ⟶ A
fr : f ≫ r = 𝟙 A
gr : g ≫ r = 𝟙 A
this : IsCoreflexivePair f g := IsCoreflexivePair.mk' r fr gr
⊢ HasEqualizer f g
state_after: no goals
Theorem: Real.abs_rpow_of_nonneg
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: have h_rpow_nonneg : 0 ≤ x ^ y := Real.rpow_nonneg hx_nonneg _
state_before: x✝ y✝ z x y : ℝ
hx_nonneg : 0 ≤ x
⊢ |x ^ y| = |x| ^ y
state_after: x✝ y✝ z x y : ℝ
hx_nonneg : 0 ≤ x
h_rpow_nonneg : 0 ≤ x ^ y
⊢ |x ^ y| = |x| ^ y

tactic: rw [abs_eq_self.mpr hx_nonneg, abs_eq_self.mpr h_rpow_nonneg]
state_before: x✝ y✝ z x y : ℝ
hx_nonneg : 0 ≤ x
h_rpow_nonneg : 0 ≤ x ^ y
⊢ |x ^ y| = |x| ^ y
state_after: no goals
Theorem: ProperCone.nonempty
File: Mathlib/Analysis/Convex/Cone/Proper.lean

tactic: simp_rw [SetLike.mem_coe, ← ProperCone.mem_coe, Submodule.zero_mem]
state_before: 𝕜 : Type u_1
inst✝³ : OrderedSemiring 𝕜
E : Type u_2
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
K : ProperCone 𝕜 E
⊢ 0 ∈ ↑K
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.triangle_assoc_comp_right
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: rw [← triangle, Iso.inv_hom_id_assoc]
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 : C
⊢ (α_ X (𝟙_ C) Y).inv ≫ (ρ_ X).hom ▷ Y = X ◁ (λ_ Y).hom
state_after: no goals
Theorem: Profinite.NobelingProof.swapTrue_eq_true
File: Mathlib/Topology/Category/Profinite/Nobeling.lean

tactic: simp only [SwapTrue, ord_term_aux, ite_true]
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun x x_1 => x < x_1
x : I → Bool
⊢ SwapTrue o x (term I ho) = true
state_after: no goals
Theorem: Hyperreal.neg_lt_of_tendsto_zero_of_pos
File: Mathlib/Data/Real/Hyperreal.lean

tactic: rw [neg_zero] at hg
state_before: f : ℕ → ℝ
hf : Tendsto f atTop (𝓝 0)
r✝ : ℝ
hr : 0 < r✝
hg : Tendsto (fun x => -f x) atTop (𝓝 (-0))
⊢ -ofSeq f < ↑r✝
state_after: f : ℕ → ℝ
hf : Tendsto f atTop (𝓝 0)
r✝ : ℝ
hr : 0 < r✝
hg : Tendsto (fun x => -f x) atTop (𝓝 0)
⊢ -ofSeq f < ↑r✝

tactic: exact lt_of_tendsto_zero_of_pos hg hr
state_before: f : ℕ → ℝ
hf : Tendsto f atTop (𝓝 0)
r✝ : ℝ
hr : 0 < r✝
hg : Tendsto (fun x => -f x) atTop (𝓝 0)
⊢ -ofSeq f < ↑r✝
state_after: no goals
Theorem: hom_coe_pow
File: Mathlib/Algebra/GroupPower/IterateHom.lean

tactic: rw [pow_zero, h1]
state_before: M : Type u_1
N : Type u_2
G : Type u_3
H : Type u_4
F : Type u_5
inst✝ : Monoid F
c : F → M → M
h1 : c 1 = id
hmul : ∀ (f g : F), c (f * g) = c f ∘ c g
f : F
⊢ c (f ^ 0) = (c f)^[0]
state_after: M : Type u_1
N : Type u_2
G : Type u_3
H : Type u_4
F : Type u_5
inst✝ : Monoid F
c : F → M → M
h1 : c 1 = id
hmul : ∀ (f g : F), c (f * g) = c f ∘ c g
f : F
⊢ id = (c f)^[0]

tactic: rfl
state_before: M : Type u_1
N : Type u_2
G : Type u_3
H : Type u_4
F : Type u_5
inst✝ : Monoid F
c : F → M → M
h1 : c 1 = id
hmul : ∀ (f g : F), c (f * g) = c f ∘ c g
f : F
⊢ id = (c f)^[0]
state_after: no goals

tactic: rw [pow_succ, iterate_succ, hmul, hom_coe_pow c h1 hmul f n]
state_before: M : Type u_1
N : Type u_2
G : Type u_3
H : Type u_4
F : Type u_5
inst✝ : Monoid F
c : F → M → M
h1 : c 1 = id
hmul : ∀ (f g : F), c (f * g) = c f ∘ c g
f : F
n : ℕ
⊢ c (f ^ (n + 1)) = (c f)^[n + 1]
state_after: no goals
Theorem: sdiff_inf_self_right
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [sdiff_inf, sdiff_self, sup_bot_eq]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a✝ b✝ c d a b : α
⊢ b \ (a ⊓ b) = b \ a
state_after: no goals
Theorem: Complex.im_mul_ofReal
File: Mathlib/Data/Complex/Basic.lean

tactic: simp [ofReal']
state_before: z : ℂ
r : ℝ
⊢ (z * ↑r).im = z.im * r
state_after: no goals
Theorem: Int.natAbs_lt_iff_mul_self_lt
File: Mathlib/Data/Int/Order/Lemmas.lean

tactic: rw [← abs_lt_iff_mul_self_lt, abs_eq_natAbs, abs_eq_natAbs]
state_before: a✝ b✝ : ℤ
n : ℕ
a b : ℤ
⊢ a.natAbs < b.natAbs ↔ a * a < b * b
state_after: a✝ b✝ : ℤ
n : ℕ
a b : ℤ
⊢ a.natAbs < b.natAbs ↔ ↑a.natAbs < ↑b.natAbs

tactic: exact Int.ofNat_lt.symm
state_before: a✝ b✝ : ℤ
n : ℕ
a b : ℤ
⊢ a.natAbs < b.natAbs ↔ ↑a.natAbs < ↑b.natAbs
state_after: no goals
Theorem: continuousOn_dslope
File: Mathlib/Analysis/Calculus/Dslope.lean

tactic: refine ⟨fun hc => ⟨hc.of_dslope, continuousAt_dslope_same.1 <| hc.continuousAt h⟩, ?_⟩
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
a b : 𝕜
s : Set 𝕜
h : s ∈ 𝓝 a
⊢ ContinuousOn (dslope f a) s ↔ ContinuousOn f s ∧ DifferentiableAt 𝕜 f a
state_after: 𝕜 : Type u_1
E : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
a b : 𝕜
s : Set 𝕜
h : s ∈ 𝓝 a
⊢ ContinuousOn f s ∧ DifferentiableAt 𝕜 f a → ContinuousOn (dslope f a) s

tactic: rintro ⟨hc, hd⟩ x hx
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
a b : 𝕜
s : Set 𝕜
h : s ∈ 𝓝 a
⊢ ContinuousOn f s ∧ DifferentiableAt 𝕜 f a → ContinuousOn (dslope f a) s
state_after: case intro
𝕜 : Type u_1
E : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
a b : 𝕜
s : Set 𝕜
h : s ∈ 𝓝 a
hc : ContinuousOn f s
hd : DifferentiableAt 𝕜 f a
x : 𝕜
hx : x ∈ s
⊢ ContinuousWithinAt (dslope f a) s x

tactic: rcases eq_or_ne x a with (rfl | hne)
state_before: case intro
𝕜 : Type u_1
E : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
a b : 𝕜
s : Set 𝕜
h : s ∈ 𝓝 a
hc : ContinuousOn f s
hd : DifferentiableAt 𝕜 f a
x : 𝕜
hx : x ∈ s
⊢ ContinuousWithinAt (dslope f a) s x
state_after: case intro.inl
𝕜 : Type u_1
E : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
b : 𝕜
s : Set 𝕜
hc : ContinuousOn f s
x : 𝕜
hx : x ∈ s
h : s ∈ 𝓝 x
hd : DifferentiableAt 𝕜 f x
⊢ ContinuousWithinAt (dslope f x) s x

case intro.inr
𝕜 : Type u_1
E : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
a b : 𝕜
s : Set 𝕜
h : s ∈ 𝓝 a
hc : ContinuousOn f s
hd : DifferentiableAt 𝕜 f a
x : 𝕜
hx : x ∈ s
hne : x ≠ a
⊢ ContinuousWithinAt (dslope f a) s x

tactic: exacts [(continuousAt_dslope_same.2 hd).continuousWithinAt,
  (continuousWithinAt_dslope_of_ne hne).2 (hc x hx)]
state_before: case intro.inl
𝕜 : Type u_1
E : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
b : 𝕜
s : Set 𝕜
hc : ContinuousOn f s
x : 𝕜
hx : x ∈ s
h : s ∈ 𝓝 x
hd : DifferentiableAt 𝕜 f x
⊢ ContinuousWithinAt (dslope f x) s x

case intro.inr
𝕜 : Type u_1
E : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
a b : 𝕜
s : Set 𝕜
h : s ∈ 𝓝 a
hc : ContinuousOn f s
hd : DifferentiableAt 𝕜 f a
x : 𝕜
hx : x ∈ s
hne : x ≠ a
⊢ ContinuousWithinAt (dslope f a) s x
state_after: no goals
Theorem: List.forall₂_drop
File: Mathlib/Data/List/Forall2.lean

tactic: simp only [drop, h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
x✝¹ : List α
x✝ : List β
h : Forall₂ R x✝¹ x✝
⊢ Forall₂ R (drop 0 x✝¹) (drop 0 x✝)
state_after: no goals

tactic: simp only [Forall₂.nil, drop]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
n✝ : ℕ
⊢ Forall₂ R (drop (n✝ + 1) []) (drop (n✝ + 1) [])
state_after: no goals

tactic: simp [And.intro h₁ h₂, forall₂_drop n]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
n : ℕ
a✝ : α
b✝ : β
l₁✝ : List α
l₂✝ : List β
h₁ : R a✝ b✝
h₂ : Forall₂ R l₁✝ l₂✝
⊢ Forall₂ R (drop (n + 1) (a✝ :: l₁✝)) (drop (n + 1) (b✝ :: l₂✝))
state_after: no goals
Theorem: MeasureTheory.levyProkhorovDist_comm
File: Mathlib/MeasureTheory/Measure/LevyProkhorovMetric.lean

tactic: simp only [levyProkhorovDist, levyProkhorovEDist_comm]
state_before: ι : Type u_1
Ω : Type u_2
inst✝¹ : MeasurableSpace Ω
inst✝ : PseudoEMetricSpace Ω
μ ν : Measure Ω
⊢ levyProkhorovDist μ ν = levyProkhorovDist ν μ
state_after: no goals
Theorem: Finsupp.mapDomain_notin_range
File: Mathlib/Data/Finsupp/Basic.lean

tactic: rw [mapDomain, sum_apply, sum]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddCommMonoid M
v v₁ v₂ : α →₀ M
f : α → β
x : α →₀ M
a : β
h : a ∉ Set.range f
⊢ (mapDomain f x) a = 0
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddCommMonoid M
v v₁ v₂ : α →₀ M
f : α → β
x : α →₀ M
a : β
h : a ∉ Set.range f
⊢ ∑ a_1 ∈ x.support, (single (f a_1) (x a_1)) a = 0

tactic: exact Finset.sum_eq_zero fun a' _ => single_eq_of_ne fun eq => h <| eq ▸ Set.mem_range_self _
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddCommMonoid M
v v₁ v₂ : α →₀ M
f : α → β
x : α →₀ M
a : β
h : a ∉ Set.range f
⊢ ∑ a_1 ∈ x.support, (single (f a_1) (x a_1)) a = 0
state_after: no goals
Theorem: Nat.le_succ_iff
File: Mathlib/Data/Nat/Defs.lean

tactic: refine ⟨fun hmn ↦ (Nat.lt_or_eq_of_le hmn).imp_left le_of_lt_succ, ?_⟩
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ m ≤ n.succ ↔ m ≤ n ∨ m = n.succ
state_after: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ m ≤ n ∨ m = n.succ → m ≤ n.succ

tactic: rintro (hmn | rfl)
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ m ≤ n ∨ m = n.succ → m ≤ n.succ
state_after: case inl
a b c d m n k : ℕ
p q : ℕ → Prop
hmn : m ≤ n
⊢ m ≤ n.succ

case inr
a b c d n k : ℕ
p q : ℕ → Prop
⊢ n.succ ≤ n.succ

tactic: exact le_succ_of_le hmn
state_before: case inl
a b c d m n k : ℕ
p q : ℕ → Prop
hmn : m ≤ n
⊢ m ≤ n.succ
state_after: no goals

tactic: exact Nat.le_refl _
state_before: case inr
a b c d n k : ℕ
p q : ℕ → Prop
⊢ n.succ ≤ n.succ
state_after: no goals
Theorem: Matrix.blockTriangular_stdBasisMatrix'
File: Mathlib/LinearAlgebra/Matrix/Block.lean

tactic: exact toDual_le_toDual.mpr hij
state_before: α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
o : Type u_5
m' : α → Type u_6
n' : α → Type u_7
R : Type v
inst✝² : CommRing R
M N : Matrix m m R
b : m → α
inst✝¹ : Preorder α
inst✝ : DecidableEq m
i j : m
hij : b j ≤ b i
c : R
⊢ (⇑toDual ∘ b) i ≤ (⇑toDual ∘ b) j
state_after: no goals
Theorem: Cardinal.toPartENat_lt_natCast_iff
File: Mathlib/SetTheory/Cardinal/Finite.lean

tactic: simp only [← not_le, Cardinal.natCast_le_toPartENat_iff]
state_before: α : Type u_1
β : Type u_2
n : ℕ
c : Cardinal.{u_3}
⊢ toPartENat c < ↑n ↔ c < ↑n
state_after: no goals
Theorem: SimpleGraph.induce_singleton_eq_top
File: Mathlib/Combinatorics/SimpleGraph/Maps.lean

tactic: rw [eq_top_iff]
state_before: V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v✝ v : V
⊢ induce {v} G = ⊤
state_after: V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v✝ v : V
⊢ ⊤ ≤ induce {v} G

tactic: apply le_comap_of_subsingleton
state_before: V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v✝ v : V
⊢ ⊤ ≤ induce {v} G
state_after: no goals
Theorem: Nat.shiftLeft'_ne_zero_left
File: Mathlib/Data/Nat/Size.lean

tactic: induction n <;> simp [bit_ne_zero, shiftLeft', *]
state_before: b : Bool
m : ℕ
h : m ≠ 0
n : ℕ
⊢ shiftLeft' b m n ≠ 0
state_after: no goals
Theorem: Nat.sub_sub_sub_cancel_right
File: Mathlib/Data/Nat/Defs.lean

tactic: omega
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
h : c ≤ b
⊢ a - c - (b - c) = a - b
state_after: no goals
Theorem: Set.image_mul_left_Icc'
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: convert image_mul_right_Icc' b c h using 1 <;> simp only [mul_comm _ a]
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a✝ a : α
h : 0 < a
b c : α
⊢ (fun x => a * x) '' Icc b c = Icc (a * b) (a * c)
state_after: no goals
Theorem: Int.abs_eq_normalize
File: Mathlib/Algebra/GCDMonoid/Nat.lean

tactic: cases le_total 0 z <;> simp [-normalize_apply, normalize_of_nonneg, normalize_of_nonpos, *]
state_before: z : ℤ
⊢ |z| = normalize z
state_after: no goals
Theorem: CategoryTheory.ShortComplex.LeftHomologyMapData.congr_φK
File: Mathlib/Algebra/Homology/ShortComplex/LeftHomology.lean

tactic: rw [eq]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.LeftHomologyData
h₂ : S₂.LeftHomologyData
γ₁ γ₂ : LeftHomologyMapData φ h₁ h₂
eq : γ₁ = γ₂
⊢ γ₁.φK = γ₂.φK
state_after: no goals
Theorem: Fin.pred_lt_castPred_iff
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [lt_castPred_iff, castSucc_pred_lt_iff ha]
state_before: n m : ℕ
a b : Fin (n + 1)
ha : a ≠ 0
hb : b ≠ last n
⊢ a.pred ha < b.castPred hb ↔ a ≤ b
state_after: no goals
Theorem: MeasureTheory.cylinder_eq_cylinder_union
File: Mathlib/MeasureTheory/Constructions/Cylinders.lean

tactic: ext1 f
state_before: ι : Type u_1
α : ι → Type u_2
inst✝ : DecidableEq ι
I : Finset ι
S : Set ((i : { x // x ∈ I }) → α ↑i)
J : Finset ι
⊢ cylinder I S = cylinder (I ∪ J) ((fun f j => f ⟨↑j, ⋯⟩) ⁻¹' S)
state_after: case h
ι : Type u_1
α : ι → Type u_2
inst✝ : DecidableEq ι
I : Finset ι
S : Set ((i : { x // x ∈ I }) → α ↑i)
J : Finset ι
f : (i : ι) → α i
⊢ f ∈ cylinder I S ↔ f ∈ cylinder (I ∪ J) ((fun f j => f ⟨↑j, ⋯⟩) ⁻¹' S)

tactic: simp only [mem_cylinder, mem_preimage]
state_before: case h
ι : Type u_1
α : ι → Type u_2
inst✝ : DecidableEq ι
I : Finset ι
S : Set ((i : { x // x ∈ I }) → α ↑i)
J : Finset ι
f : (i : ι) → α i
⊢ f ∈ cylinder I S ↔ f ∈ cylinder (I ∪ J) ((fun f j => f ⟨↑j, ⋯⟩) ⁻¹' S)
state_after: no goals
Theorem: AddCommGroup.ModEq.sub_iff_right
File: Mathlib/Algebra/ModEq.lean

tactic: simp [sub_sub_sub_comm, hm, sub_smul, ModEq]
state_before: α : Type u_1
inst✝ : AddCommGroup α
p a a₁ a₂ b b₁ b₂ c : α
n : ℕ
z : ℤ
x✝ : a₂ ≡ b₂ [PMOD p]
m : ℤ
hm : b₂ - a₂ = m • p
⊢ (∃ b, b₁ - b₂ - (a₁ - a₂) = (Equiv.subRight m).symm.symm b • p) ↔ a₁ ≡ b₁ [PMOD p]
state_after: no goals
Theorem: isSigmaCompact_iff_isSigmaCompact_univ
File: Mathlib/Topology/Compactness/SigmaCompact.lean

tactic: rw [Subtype.isSigmaCompact_iff, image_univ, Subtype.range_coe]
state_before: X : Type u_1
Y : Type u_2
ι : Type u_3
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s✝ t s : Set X
⊢ IsSigmaCompact s ↔ IsSigmaCompact univ
state_after: no goals
Theorem: Fin.lt_castPred_succ
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [lt_castPred_succ_iff, le_def]
state_before: n m : ℕ
a : Fin (n + 1)
ha : a.succ ≠ last (n + 1)
⊢ a < a.succ.castPred ha
state_after: no goals
Theorem: ProbabilityTheory.cgf_zero_measure
File: Mathlib/Probability/Moments.lean

tactic: simp only [cgf, log_zero, mgf_zero_measure]
state_before: Ω : Type u_1
ι : Type u_2
m : MeasurableSpace Ω
X : Ω → ℝ
p : ℕ
μ : Measure Ω
t : ℝ
⊢ cgf X 0 t = 0
state_after: no goals