ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: HasDerivAt.clm_comp
File: Mathlib/Analysis/Calculus/Deriv/Mul.lean

Proof steps:
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
E : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
G✝ : Type u_1
inst✝³ : NormedAddCommGroup G✝
inst✝² : NormedSpace 𝕜 G✝
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
c : 𝕜 → F →L[𝕜] G
c' : F →L[𝕜] G
d : 𝕜 → E →L[𝕜] F
d' : E →L[𝕜] F
u : 𝕜 → F
u' : F
hc : HasDerivAt c c' x
hd : HasDerivAt d d' x
⊢ HasDerivAt (fun y => (c y).comp (d y)) (c'.comp (d x) + (c x).comp d') x
state_after: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
E : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
G✝ : Type u_1
inst✝³ : NormedAddCommGroup G✝
inst✝² : NormedSpace 𝕜 G✝
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
c : 𝕜 → F →L[𝕜] G
c' : F →L[𝕜] G
d : 𝕜 → E →L[𝕜] F
d' : E →L[𝕜] F
u : 𝕜 → F
u' : F
hc : HasDerivWithinAt c c' univ x
hd : HasDerivWithinAt d d' univ x
⊢ HasDerivWithinAt (fun y => (c y).comp (d y)) (c'.comp (d x) + (c x).comp d') univ x
tactic: rw [← hasDerivWithinAt_univ] at *
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
E : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
G✝ : Type u_1
inst✝³ : NormedAddCommGroup G✝
inst✝² : NormedSpace 𝕜 G✝
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
c : 𝕜 → F →L[𝕜] G
c' : F →L[𝕜] G
d : 𝕜 → E →L[𝕜] F
d' : E →L[𝕜] F
u : 𝕜 → F
u' : F
hc : HasDerivWithinAt c c' univ x
hd : HasDerivWithinAt d d' univ x
⊢ HasDerivWithinAt (fun y => (c y).comp (d y)) (c'.comp (d x) + (c x).comp d') univ x
state_after: no goals
tactic: exact hc.clm_comp hd
Theorem: ProbabilityTheory.Kernel.comp_apply'
File: Mathlib/Probability/Kernel/Composition.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
η : Kernel β γ
κ : Kernel α β
a : α
s : Set γ
hs : MeasurableSet s
⊢ ((η ∘ₖ κ) a) s = ∫⁻ (b : β), (η b) s ∂κ a
state_after: no goals
tactic: rw [comp_apply, Measure.bind_apply hs (Kernel.measurable _)]
Theorem: HolorIndex.drop_drop
File: Mathlib/Data/Holor.lean

Proof steps:
state_before: ds₁ ds₂ ds₃ is : List ℕ
h : Forall₂ (fun x x_1 => x < x_1) is (ds₁ ++ ds₂ ++ ds₃)
⊢ ↑(assocRight ⟨is, h⟩).drop.drop = ↑(drop ⟨is, h⟩)
state_after: no goals
tactic: simp [add_comm, assocRight, drop, cast_type, List.drop_drop]
Theorem: WeierstrassCurve.Affine.evalEval_polynomialX
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
W : Affine R
x y : R
⊢ evalEval x y W.polynomialX = W.a₁ * y - (3 * x ^ 2 + 2 * W.a₂ * x + W.a₄)
state_after: R : Type u
inst✝ : CommRing R
W : Affine R
x y : R
⊢ evalEval x y (C (C W.a₁) * Y - C (C 3 * X ^ 2 + C (2 * W.a₂) * X + C W.a₄)) =
    W.a₁ * y - (3 * x ^ 2 + 2 * W.a₂ * x + W.a₄)
tactic: simp only [polynomialX]
state_before: R : Type u
inst✝ : CommRing R
W : Affine R
x y : R
⊢ evalEval x y (C (C W.a₁) * Y - C (C 3 * X ^ 2 + C (2 * W.a₂) * X + C W.a₄)) =
    W.a₁ * y - (3 * x ^ 2 + 2 * W.a₂ * x + W.a₄)
state_after: no goals
tactic: eval_simp
Theorem: Besicovitch.ae_tendsto_measure_inter_div
File: Mathlib/MeasureTheory/Covering/Besicovitch.lean

Proof steps:
state_before: α : Type u_1
inst✝¹⁰ : MetricSpace α
β : Type u
inst✝⁹ : SecondCountableTopology α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : OpensMeasurableSpace α
inst✝⁶ : HasBesicovitchCovering α
inst✝⁵ : MetricSpace β
inst✝⁴ : MeasurableSpace β
inst✝³ : BorelSpace β
inst✝² : SecondCountableTopology β
inst✝¹ : HasBesicovitchCovering β
μ : Measure β
inst✝ : IsLocallyFiniteMeasure μ
s : Set β
⊢ ∀ᵐ (x : β) ∂μ.restrict s, Tendsto (fun r => μ (s ∩ closedBall x r) / μ (closedBall x r)) (𝓝[>] 0) (𝓝 1)
state_after: no goals
tactic: filter_upwards [VitaliFamily.ae_tendsto_measure_inter_div (Besicovitch.vitaliFamily μ) s] with x
    hx using hx.comp (tendsto_filterAt μ x)
Theorem: Multiset.bind_bind
File: Mathlib/Data/Multiset/Bind.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s t : Multiset α
f✝ g : α → Multiset β
m : Multiset α
n : Multiset β
f : α → β → Multiset γ
⊢ (bind 0 fun a => n.bind fun b => f a b) = n.bind fun b => bind 0 fun a => f a b
state_after: no goals
tactic: simp
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s t : Multiset α
f✝ g : α → Multiset β
m : Multiset α
n : Multiset β
f : α → β → Multiset γ
⊢ ∀ (a : α) (s : Multiset α),
    ((s.bind fun a => n.bind fun b => f a b) = n.bind fun b => s.bind fun a => f a b) →
      ((a ::ₘ s).bind fun a => n.bind fun b => f a b) = n.bind fun b => (a ::ₘ s).bind fun a => f a b
state_after: no goals
tactic: simp (config := { contextual := true })
Theorem: CategoryTheory.LaxBraidedFunctor.mapCommMonFunctor_map_app_hom
File: Mathlib/CategoryTheory/Monoidal/CommMon_.lean

Proof steps:
state_before: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
inst✝⁴ : MonoidalCategory C
inst✝³ : BraidedCategory C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : MonoidalCategory D
inst✝ : BraidedCategory D
X✝ Y✝ : LaxBraidedFunctor C D
α : X✝ ⟶ Y✝
⊢ ∀ ⦃X Y : CommMon_ C⦄ (f : X ⟶ Y),
    X✝.mapCommMon.map f ≫ (fun A => { hom := α.app A.X, one_hom := ⋯, mul_hom := ⋯ }) Y =
      (fun A => { hom := α.app A.X, one_hom := ⋯, mul_hom := ⋯ }) X ≫ Y✝.mapCommMon.map f
state_after: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
inst✝⁴ : MonoidalCategory C
inst✝³ : BraidedCategory C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : MonoidalCategory D
inst✝ : BraidedCategory D
X✝¹ Y✝¹ : LaxBraidedFunctor C D
α : X✝¹ ⟶ Y✝¹
X✝ Y✝ : CommMon_ C
f✝ : X✝ ⟶ Y✝
⊢ X✝¹.mapCommMon.map f✝ ≫ (fun A => { hom := α.app A.X, one_hom := ⋯, mul_hom := ⋯ }) Y✝ =
    (fun A => { hom := α.app A.X, one_hom := ⋯, mul_hom := ⋯ }) X✝ ≫ Y✝¹.mapCommMon.map f✝
tactic: intros
state_before: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
inst✝⁴ : MonoidalCategory C
inst✝³ : BraidedCategory C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : MonoidalCategory D
inst✝ : BraidedCategory D
X✝¹ Y✝¹ : LaxBraidedFunctor C D
α : X✝¹ ⟶ Y✝¹
X✝ Y✝ : CommMon_ C
f✝ : X✝ ⟶ Y✝
⊢ X✝¹.mapCommMon.map f✝ ≫ (fun A => { hom := α.app A.X, one_hom := ⋯, mul_hom := ⋯ }) Y✝ =
    (fun A => { hom := α.app A.X, one_hom := ⋯, mul_hom := ⋯ }) X✝ ≫ Y✝¹.mapCommMon.map f✝
state_after: case h
C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
inst✝⁴ : MonoidalCategory C
inst✝³ : BraidedCategory C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : MonoidalCategory D
inst✝ : BraidedCategory D
X✝¹ Y✝¹ : LaxBraidedFunctor C D
α : X✝¹ ⟶ Y✝¹
X✝ Y✝ : CommMon_ C
f✝ : X✝ ⟶ Y✝
⊢ (X✝¹.mapCommMon.map f✝ ≫ (fun A => { hom := α.app A.X, one_hom := ⋯, mul_hom := ⋯ }) Y✝).hom =
    ((fun A => { hom := α.app A.X, one_hom := ⋯, mul_hom := ⋯ }) X✝ ≫ Y✝¹.mapCommMon.map f✝).hom
tactic: ext
state_before: case h
C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
inst✝⁴ : MonoidalCategory C
inst✝³ : BraidedCategory C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : MonoidalCategory D
inst✝ : BraidedCategory D
X✝¹ Y✝¹ : LaxBraidedFunctor C D
α : X✝¹ ⟶ Y✝¹
X✝ Y✝ : CommMon_ C
f✝ : X✝ ⟶ Y✝
⊢ (X✝¹.mapCommMon.map f✝ ≫ (fun A => { hom := α.app A.X, one_hom := ⋯, mul_hom := ⋯ }) Y✝).hom =
    ((fun A => { hom := α.app A.X, one_hom := ⋯, mul_hom := ⋯ }) X✝ ≫ Y✝¹.mapCommMon.map f✝).hom
state_after: no goals
tactic: simp
Theorem: Set.preimage_const_sub_Ioo
File: Mathlib/Data/Set/Pointwise/Interval.lean

Proof steps:
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ (fun x => a - x) ⁻¹' Ioo b c = Ioo (a - c) (a - b)
state_after: no goals
tactic: simp [← Ioi_inter_Iio, inter_comm]
Theorem: LieIdeal.comap_incl_self
File: Mathlib/Algebra/Lie/Submodule.lean

Proof steps:
state_before: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I : LieIdeal R L
J : LieIdeal R L'
⊢ comap I.incl I = ⊤
state_after: case h
R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I : LieIdeal R L
J : LieIdeal R L'
m✝ : ↥↑I
⊢ m✝ ∈ comap I.incl I ↔ m✝ ∈ ⊤
tactic: ext
state_before: case h
R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I : LieIdeal R L
J : LieIdeal R L'
m✝ : ↥↑I
⊢ m✝ ∈ comap I.incl I ↔ m✝ ∈ ⊤
state_after: no goals
tactic: simp
Theorem: Finset.sum_sdiff_le_sum_sdiff
File: Mathlib/Algebra/Order/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝¹ : OrderedCancelCommMonoid M
f g : ι → M
s t : Finset ι
inst✝ : DecidableEq ι
⊢ ∏ i ∈ s \ t, f i ≤ ∏ i ∈ t \ s, f i ↔ ∏ i ∈ s, f i ≤ ∏ i ∈ t, f i
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝¹ : OrderedCancelCommMonoid M
f g : ι → M
s t : Finset ι
inst✝ : DecidableEq ι
⊢ Disjoint (t \ s) (s ∩ t)
tactic: rw [← mul_le_mul_iff_right, ← prod_union (disjoint_sdiff_inter _ _), sdiff_union_inter,
    ← prod_union, inter_comm, sdiff_union_inter]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝¹ : OrderedCancelCommMonoid M
f g : ι → M
s t : Finset ι
inst✝ : DecidableEq ι
⊢ Disjoint (t \ s) (s ∩ t)
state_after: no goals
tactic: simpa only [inter_comm] using disjoint_sdiff_inter t s
Theorem: QuotientMap.continuousOn_isOpen_iff
File: Mathlib/Topology/ContinuousOn.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝³ : (i : ι) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
g : β → γ
h : QuotientMap f
s : Set β
hs : IsOpen s
⊢ ContinuousOn g s ↔ ContinuousOn (g ∘ f) (f ⁻¹' s)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝³ : (i : ι) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
g : β → γ
h : QuotientMap f
s : Set β
hs : IsOpen s
⊢ Continuous (s.restrict g ∘ s.restrictPreimage f) ↔ Continuous ((f ⁻¹' s).restrict (g ∘ f))
tactic: simp only [continuousOn_iff_continuous_restrict, (h.restrictPreimage_isOpen hs).continuous_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝³ : (i : ι) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
g : β → γ
h : QuotientMap f
s : Set β
hs : IsOpen s
⊢ Continuous (s.restrict g ∘ s.restrictPreimage f) ↔ Continuous ((f ⁻¹' s).restrict (g ∘ f))
state_after: no goals
tactic: rfl
Theorem: CategoryTheory.IsHomLift.comp_lift_id_right'
File: Mathlib/CategoryTheory/FiberedCategory/HomLift.lean

Proof steps:
state_before: 𝒮 : Type u₁
𝒳 : Type u₂
inst✝³ : Category.{v₁, u₂} 𝒳
inst✝² : Category.{v₂, u₁} 𝒮
p : 𝒳 ⥤ 𝒮
R S : 𝒮
a b c : 𝒳
f : R ⟶ S
φ : a ⟶ b
inst✝¹ : p.IsHomLift f φ
T : 𝒮
ψ : b ⟶ c
inst✝ : p.IsHomLift (𝟙 T) ψ
⊢ p.IsHomLift f (φ ≫ ψ)
state_after: 𝒮 : Type u₁
𝒳 : Type u₂
inst✝³ : Category.{v₁, u₂} 𝒳
inst✝² : Category.{v₂, u₁} 𝒮
p : 𝒳 ⥤ 𝒮
R S : 𝒮
a b c : 𝒳
f : R ⟶ S
φ : a ⟶ b
inst✝¹ : p.IsHomLift f φ
ψ : b ⟶ c
inst✝ : p.IsHomLift (𝟙 S) ψ
⊢ p.IsHomLift f (φ ≫ ψ)
tactic: obtain rfl : S = T := by rw [← codomain_eq p f φ, domain_eq p (𝟙 T) ψ]
state_before: 𝒮 : Type u₁
𝒳 : Type u₂
inst✝³ : Category.{v₁, u₂} 𝒳
inst✝² : Category.{v₂, u₁} 𝒮
p : 𝒳 ⥤ 𝒮
R S : 𝒮
a b c : 𝒳
f : R ⟶ S
φ : a ⟶ b
inst✝¹ : p.IsHomLift f φ
ψ : b ⟶ c
inst✝ : p.IsHomLift (𝟙 S) ψ
⊢ p.IsHomLift f (φ ≫ ψ)
state_after: no goals
tactic: infer_instance
Theorem: PowerSeries.coeff_mul_one_sub_of_lt_order
File: Mathlib/RingTheory/PowerSeries/Order.lean

Proof steps:
state_before: R✝ : Type u_1
inst✝¹ : Semiring R✝
φ✝ : R✝⟦X⟧
R : Type u_2
inst✝ : CommRing R
φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
⊢ (coeff R n) (φ * (1 - ψ)) = (coeff R n) φ
state_after: no goals
tactic: simp [coeff_mul_of_lt_order h, mul_sub]
Theorem: Finset.coe_eq_empty
File: Mathlib/Data/Finset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s✝ s : Finset α
⊢ ↑s = ∅ ↔ s = ∅
state_after: no goals
tactic: rw [← coe_empty, coe_inj]
Theorem: PartialHomeomorph.restrContDiff_target
File: Mathlib/Analysis/Calculus/ContDiff/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type u_2
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
f : PartialHomeomorph E F
n : ℕ
x : E
hx : x ∈ f.source
⊢ ↑f x ∈ {y | ContDiffAt 𝕜 (↑n) (↑f.symm) y ∧ ContDiffAt 𝕜 (↑n) (↑f) (↑f.symm y)} ↔
    x ∈ {x | ContDiffAt 𝕜 (↑n) (↑f) x ∧ ContDiffAt 𝕜 (↑n) (↑f.symm) (↑f x)}
state_after: no goals
tactic: simp [hx, and_comm]
Theorem: Emetric.exists_smooth_forall_closedBall_subset
File: Mathlib/Geometry/Manifold/PartitionOfUnity.lean

Proof steps:
state_before: ι : Type uι
E : Type uE
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace ℝ E
inst✝¹² : FiniteDimensional ℝ E
F : Type uF
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace ℝ F
H : Type uH
inst✝⁹ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M✝ : Type uM
inst✝⁸ : TopologicalSpace M✝
inst✝⁷ : ChartedSpace H M✝
inst✝⁶ : SmoothManifoldWithCorners I M✝
inst✝⁵ : SigmaCompactSpace M✝
inst✝⁴ : T2Space M✝
t : M✝ → Set F
n : ℕ∞
M : Type u_1
inst✝³ : EMetricSpace M
inst✝² : ChartedSpace H M
inst✝¹ : SmoothManifoldWithCorners I M
inst✝ : SigmaCompactSpace M
K U : ι → Set M
hK : ∀ (i : ι), IsClosed (K i)
hU : ∀ (i : ι), IsOpen (U i)
hKU : ∀ (i : ι), K i ⊆ U i
hfin : LocallyFinite K
⊢ ∃ δ, (∀ (x : M), 0 < δ x) ∧ ∀ (i : ι), ∀ x ∈ K i, EMetric.closedBall x (ENNReal.ofReal (δ x)) ⊆ U i
state_after: no goals
tactic: simpa only [mem_inter_iff, forall_and, mem_preimage, mem_iInter, @forall_swap ι M]
    using exists_smooth_forall_mem_convex_of_local_const I
      EMetric.exists_forall_closedBall_subset_aux₂
      (EMetric.exists_forall_closedBall_subset_aux₁ hK hU hKU hfin)
Theorem: abs_sub_lt_iff
File: Mathlib/Algebra/Order/Group/Abs.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a b c d : α
⊢ |a - b| < c ↔ a - b < c ∧ b - a < c
state_after: no goals
tactic: rw [@abs_lt α, neg_lt_sub_iff_lt_add', sub_lt_iff_lt_add', and_comm, sub_lt_iff_lt_add']
Theorem: PrimrecPred.or
File: Mathlib/Computability/Primrec.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
σ : Type u_5
inst✝⁶ : Primcodable α
inst✝⁵ : Primcodable β
inst✝⁴ : Primcodable γ
inst✝³ : Primcodable δ
inst✝² : Primcodable σ
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hp : PrimrecPred p
hq : PrimrecPred q
n : α
⊢ (decide (p n) || decide (q n)) = decide ((fun a => p a ∨ q a) n)
state_after: no goals
tactic: simp
Theorem: Mathlib.Vector.naturality
File: Mathlib/Data/Vector/Basic.lean

Proof steps:
state_before: n : ℕ
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : Applicative G
inst✝¹ : LawfulApplicative G
α✝ β✝ γ : Type u
inst✝ : LawfulApplicative F
η : ApplicativeTransformation F G
α β : Type u
f : α → F β
x : Vector α n
⊢ (fun {α} => η.app α) (Vector.traverse f x) = Vector.traverse ((fun {α} => η.app α) ∘ f) x
state_after: case nil
n : ℕ
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : Applicative G
inst✝¹ : LawfulApplicative G
α✝ β✝ γ : Type u
inst✝ : LawfulApplicative F
η : ApplicativeTransformation F G
α β : Type u
f : α → F β
⊢ (fun {α} => η.app α) (Vector.traverse f nil) = Vector.traverse ((fun {α} => η.app α) ∘ f) nil

case cons
n✝ : ℕ
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : Applicative G
inst✝¹ : LawfulApplicative G
α✝ β✝ γ : Type u
inst✝ : LawfulApplicative F
η : ApplicativeTransformation F G
α β : Type u
f : α → F β
n : ℕ
x : α
xs : Vector α n
ih : (fun {α} => η.app α) (Vector.traverse f xs) = Vector.traverse ((fun {α} => η.app α) ∘ f) xs
⊢ (fun {α} => η.app α) (Vector.traverse f (x ::ᵥ xs)) = Vector.traverse ((fun {α} => η.app α) ∘ f) (x ::ᵥ xs)
tactic: induction' x with n x xs ih
Theorem: frattini_le_comap_frattini_of_surjective
File: Mathlib/GroupTheory/Frattini.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
inst✝¹ : Group G
inst✝ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
⊢ frattini G ≤ comap φ (frattini H)
state_after: G : Type u_1
H : Type u_2
inst✝¹ : Group G
inst✝ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
⊢ ∀ i ∈ {H_1 | IsCoatom H_1}, ⨅ a ∈ {H | IsCoatom H}, a ≤ comap φ i
tactic: simp_rw [frattini, Order.radical, comap_iInf, le_iInf_iff]
state_before: G : Type u_1
H : Type u_2
inst✝¹ : Group G
inst✝ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
⊢ ∀ i ∈ {H_1 | IsCoatom H_1}, ⨅ a ∈ {H | IsCoatom H}, a ≤ comap φ i
state_after: G : Type u_1
H : Type u_2
inst✝¹ : Group G
inst✝ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
M : Subgroup H
hM : M ∈ {H_1 | IsCoatom H_1}
⊢ ⨅ a ∈ {H | IsCoatom H}, a ≤ comap φ M
tactic: intro M hM
state_before: G : Type u_1
H : Type u_2
inst✝¹ : Group G
inst✝ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
M : Subgroup H
hM : M ∈ {H_1 | IsCoatom H_1}
⊢ ⨅ a ∈ {H | IsCoatom H}, a ≤ comap φ M
state_after: case hi
G : Type u_1
H : Type u_2
inst✝¹ : Group G
inst✝ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
M : Subgroup H
hM : M ∈ {H_1 | IsCoatom H_1}
⊢ comap φ M ∈ {H | IsCoatom H}
tactic: apply biInf_le
state_before: case hi
G : Type u_1
H : Type u_2
inst✝¹ : Group G
inst✝ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
M : Subgroup H
hM : M ∈ {H_1 | IsCoatom H_1}
⊢ comap φ M ∈ {H | IsCoatom H}
state_after: no goals
tactic: exact isCoatom_comap_of_surjective hφ hM
Theorem: Finset.card_pair_eq_one_or_two
File: Mathlib/Data/Finset/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t : Finset α
a b : α
inst✝ : DecidableEq α
⊢ {a, b}.card = 1 ∨ {a, b}.card = 2
state_after: α : Type u_1
β : Type u_2
R : Type u_3
s t : Finset α
a b : α
inst✝ : DecidableEq α
⊢ a = b ∨ ¬a = b
tactic: simp [card_insert_eq_ite]
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t : Finset α
a b : α
inst✝ : DecidableEq α
⊢ a = b ∨ ¬a = b
state_after: no goals
tactic: tauto
Theorem: SimpleGraph.cliqueFree_of_card_lt
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
hc : Fintype.card α < n
⊢ G.CliqueFree n
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
hc : Fintype.card α < n
h : ¬G.CliqueFree n
⊢ False
tactic: by_contra h
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
hc : Fintype.card α < n
h : ¬G.CliqueFree n
⊢ False
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
hc : Fintype.card α < n
h : ¬G.CliqueFree n
⊢ n ≤ Fintype.card α
tactic: refine Nat.lt_le_asymm hc ?_
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
hc : Fintype.card α < n
h : ¬G.CliqueFree n
⊢ n ≤ Fintype.card α
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
hc : Fintype.card α < n
h : Nonempty (⊤ ↪g G)
⊢ n ≤ Fintype.card α
tactic: rw [cliqueFree_iff, not_isEmpty_iff] at h
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
hc : Fintype.card α < n
h : Nonempty (⊤ ↪g G)
⊢ n ≤ Fintype.card α
state_after: no goals
tactic: simpa only [Fintype.card_fin] using Fintype.card_le_of_embedding h.some.toEmbedding
Theorem: Finset.prod_subtype_of_mem
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝¹ : CommMonoid β
f : α → β
p : α → Prop
inst✝ : DecidablePred p
h : ∀ x ∈ s, p x
⊢ ∏ x ∈ Finset.subtype p s, f ↑x = ∏ x ∈ s, f x
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝¹ : CommMonoid β
f : α → β
p : α → Prop
inst✝ : DecidablePred p
h : ∀ x ∈ s, p x
⊢ ∀ x ∈ s, p x
tactic: rw [prod_subtype_eq_prod_filter, filter_true_of_mem]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝¹ : CommMonoid β
f : α → β
p : α → Prop
inst✝ : DecidablePred p
h : ∀ x ∈ s, p x
⊢ ∀ x ∈ s, p x
state_after: no goals
tactic: simpa using h
Theorem: HasGradientAtFilter.congr_of_eventuallyEq
File: Mathlib/Analysis/Calculus/Gradient/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
f₀ f₁ : F → 𝕜
f₀' f₁' x₀ x₁ : F
s₀ s₁ t : Set F
L₀ L₁ : Filter F
h : HasGradientAtFilter f f' x L
hL : f₁ =ᶠ[L] f
hx : f₁ x = f x
⊢ HasGradientAtFilter f₁ f' x L
state_after: no goals
tactic: rwa [hL.hasGradientAtFilter_iff hx rfl]
Theorem: List.sum_eq_zero
File: Mathlib/Algebra/BigOperators/Group/List.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l l₁ l₂ : List M
a : M
hl : ∀ x ∈ l, x = 1
⊢ l.prod = 1
state_after: case nil
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l l₁ l₂ : List M
a : M
hl : ∀ x ∈ [], x = 1
⊢ [].prod = 1

case cons
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l✝ l₁ l₂ : List M
a i : M
l : List M
hil : (∀ x ∈ l, x = 1) → l.prod = 1
hl : ∀ x ∈ i :: l, x = 1
⊢ (i :: l).prod = 1
tactic: induction' l with i l hil
state_before: case cons
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l✝ l₁ l₂ : List M
a i : M
l : List M
hil : (∀ x ∈ l, x = 1) → l.prod = 1
hl : ∀ x ∈ i :: l, x = 1
⊢ (i :: l).prod = 1
state_after: no goals
tactic: rw [List.prod_cons, hil fun x hx ↦ hl _ (mem_cons_of_mem i hx), hl _ (mem_cons_self i l), one_mul]