ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: contMDiffAt_iff_target
File: Mathlib/Geometry/Manifold/ContMDiff/Defs.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝³⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³⁶ : NormedAddCommGroup E
inst✝³⁵ : NormedSpace 𝕜 E
H : Type u_3
inst✝³⁴ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝³³ : TopologicalSpace M
inst✝³² : ChartedSpace H M
inst✝³¹ : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝³⁰ : NormedAddCommGroup E'
inst✝²⁹ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝²⁸ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝²⁷ : TopologicalSpace M'
inst✝²⁶ : ChartedSpace H' M'
inst✝²⁵ : SmoothManifoldWithCorners I' M'
E'' : Type u_8
inst✝²⁴ : NormedAddCommGroup E''
inst✝²³ : NormedSpace 𝕜 E''
H'' : Type u_9
inst✝²² : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M'' : Type u_10
inst✝²¹ : TopologicalSpace M''
inst✝²⁰ : ChartedSpace H'' M''
F : Type u_11
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type u_12
inst✝¹⁷ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_13
inst✝¹⁶ : TopologicalSpace N
inst✝¹⁵ : ChartedSpace G N
inst✝¹⁴ : SmoothManifoldWithCorners J N
F' : Type u_14
inst✝¹³ : NormedAddCommGroup F'
inst✝¹² : NormedSpace 𝕜 F'
G' : Type u_15
inst✝¹¹ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_16
inst✝¹⁰ : TopologicalSpace N'
inst✝⁹ : ChartedSpace G' N'
inst✝⁸ : SmoothManifoldWithCorners J' N'
F₁ : Type u_17
inst✝⁷ : NormedAddCommGroup F₁
inst✝⁶ : NormedSpace 𝕜 F₁
F₂ : Type u_18
inst✝⁵ : NormedAddCommGroup F₂
inst✝⁴ : NormedSpace 𝕜 F₂
F₃ : Type u_19
inst✝³ : NormedAddCommGroup F₃
inst✝² : NormedSpace 𝕜 F₃
F₄ : Type u_20
inst✝¹ : NormedAddCommGroup F₄
inst✝ : NormedSpace 𝕜 F₄
e : PartialHomeomorph M H
e' : PartialHomeomorph M' H'
f f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x : M
⊢ ContMDiffAt I I' n f x ↔ ContinuousAt f x ∧ ContMDiffAt I 𝓘(𝕜, E') n (↑(extChartAt I' (f x)) ∘ f) x
state_after: no goals
tactic: rw [ContMDiffAt, ContMDiffAt, contMDiffWithinAt_iff_target, continuousWithinAt_univ]
Theorem: Real.pi_gt_three
File: Mathlib/Data/Real/Pi/Bounds.lean

Proof steps:
state_before: ⊢ 3 < π
state_after: no goals
tactic: pi_lower_bound [23/16]
Theorem: ContDiffWithinAt.dist
File: Mathlib/Analysis/InnerProductSpace/Calculus.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : _root_.RCLike 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
inst✝² : NormedSpace ℝ E
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
f g : G → E
f' g' : G →L[ℝ] E
s : Set G
x : G
n : ℕ∞
hf : ContDiffWithinAt ℝ n f s x
hg : ContDiffWithinAt ℝ n g s x
hne : f x ≠ g x
⊢ ContDiffWithinAt ℝ n (fun y => Dist.dist (f y) (g y)) s x
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : _root_.RCLike 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
inst✝² : NormedSpace ℝ E
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
f g : G → E
f' g' : G →L[ℝ] E
s : Set G
x : G
n : ℕ∞
hf : ContDiffWithinAt ℝ n f s x
hg : ContDiffWithinAt ℝ n g s x
hne : f x ≠ g x
⊢ ContDiffWithinAt ℝ n (fun y => ‖f y - g y‖) s x
tactic: simp only [dist_eq_norm]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : _root_.RCLike 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
inst✝² : NormedSpace ℝ E
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
f g : G → E
f' g' : G →L[ℝ] E
s : Set G
x : G
n : ℕ∞
hf : ContDiffWithinAt ℝ n f s x
hg : ContDiffWithinAt ℝ n g s x
hne : f x ≠ g x
⊢ ContDiffWithinAt ℝ n (fun y => ‖f y - g y‖) s x
state_after: no goals
tactic: exact (hf.sub hg).norm 𝕜 (sub_ne_zero.2 hne)
Theorem: Polynomial.comp_eq_sum_left
File: Mathlib/Algebra/Polynomial/Eval.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
⊢ p.comp q = p.sum fun e a => C a * q ^ e
state_after: no goals
tactic: rw [comp, eval₂_eq_sum]
Theorem: RCLike.isCauSeq_im
File: Mathlib/Analysis/RCLike/Basic.lean

Proof steps:
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z : K
f : CauSeq K norm
ε : ℝ
ε0 : ε > 0
i : ℕ
H : ∀ j ≥ i, ‖↑f j - ↑f i‖ < ε
j : ℕ
ij : j ≥ i
⊢ |(fun n => im (↑f n)) j - (fun n => im (↑f n)) i| ≤ ‖↑f j - ↑f i‖
state_after: no goals
tactic: simpa only [map_sub] using abs_im_le_norm (f j - f i)
Theorem: Set.smul_set_disjoint_iff
File: Mathlib/Data/Set/Pointwise/SMul.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : Group α
inst✝ : MulAction α β
s t A B : Set β
a : α
x : β
⊢ Disjoint (a • s) (a • t) ↔ Disjoint s t
state_after: no goals
tactic: simp [disjoint_iff, ← smul_set_inter]
Theorem: Complex.cos_int_mul_two_pi_sub_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

Proof steps:
state_before: n : ℤ
⊢ cos (↑n * (2 * ↑π) - ↑π) = -1
state_after: no goals
tactic: simpa only [cos_zero] using (cos_periodic.int_mul n).sub_antiperiod_eq cos_antiperiodic
Theorem: Wbtw.oangle₃₁₂_eq_zero
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Affine.lean

Proof steps:
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : Wbtw ℝ p₁ p₂ p₃
⊢ ∡ p₃ p₁ p₂ = 0
state_after: no goals
tactic: rw [oangle_eq_zero_iff_oangle_rev_eq_zero, h.oangle₂₁₃_eq_zero]
Theorem: AddSubmonoid.mul_mem_mul
File: Mathlib/Algebra/Group/Submonoid/Pointwise.lean

Proof steps:
state_before: α : Type u_1
G : Type u_2
M✝ : Type u_3
R : Type u_4
A : Type u_5
inst✝² : Monoid M✝
inst✝¹ : AddMonoid A
inst✝ : NonUnitalNonAssocSemiring R
M N : AddSubmonoid R
m n : R
hm : m ∈ M
hn : n ∈ N
⊢ (AddMonoidHom.mul ↑⟨m, hm⟩) n = m * n
state_after: no goals
tactic: rfl
Theorem: Matrix.det_add_mul
File: Mathlib/LinearAlgebra/Matrix/SchurComplement.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A : Matrix m m α
U : Matrix m n α
V : Matrix n m α
hA : IsUnit A.det
⊢ (A + U * V).det = A.det * (1 + V * A⁻¹ * U).det
state_after: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A : Matrix m m α
U : Matrix m n α
V : Matrix n m α
hA : IsUnit A.det
⊢ (A * 1 + U * V).det = A.det * (1 + V * A⁻¹ * U).det
tactic: nth_rewrite 1 [← Matrix.mul_one A]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A : Matrix m m α
U : Matrix m n α
V : Matrix n m α
hA : IsUnit A.det
⊢ (A * 1 + U * V).det = A.det * (1 + V * A⁻¹ * U).det
state_after: no goals
tactic: rwa [← Matrix.mul_nonsing_inv_cancel_left A (U * V), ← Matrix.mul_add,
    det_mul, ← Matrix.mul_assoc, det_one_add_mul_comm, ← Matrix.mul_assoc]
Theorem: Finset.coe_singleton
File: Mathlib/Data/Finset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s : Finset α
a✝ b a : α
⊢ ↑{a} = {a}
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
s : Finset α
a✝ b a x✝ : α
⊢ x✝ ∈ ↑{a} ↔ x✝ ∈ {a}
tactic: ext
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
s : Finset α
a✝ b a x✝ : α
⊢ x✝ ∈ ↑{a} ↔ x✝ ∈ {a}
state_after: no goals
tactic: simp
Theorem: mellin_comp_mul_right
File: Mathlib/Analysis/MellinTransform.lean

Proof steps:
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℝ → E
s : ℂ
a : ℝ
ha : 0 < a
⊢ mellin (fun t => f (t * a)) s = ↑a ^ (-s) • mellin f s
state_after: no goals
tactic: simpa only [mul_comm] using mellin_comp_mul_left f s ha
Theorem: Filter.subsingleton_iff_exists_singleton_mem
File: Mathlib/Order/Filter/Subsingleton.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
l : Filter α
inst✝ : Nonempty α
⊢ l.Subsingleton ↔ ∃ a, {a} ∈ l
state_after: no goals
tactic: simp only [subsingleton_iff_exists_le_pure, le_pure_iff]
Theorem: CategoryTheory.Limits.Multicofork.toSigmaCofork_pt
File: Mathlib/CategoryTheory/Limits/Shapes/Multiequalizer.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
I : MultispanIndex C
K✝ : Multicofork I
inst✝¹ : HasCoproduct I.left
inst✝ : HasCoproduct I.right
K : Multicofork I
⊢ ∀ ⦃X Y : WalkingParallelPair⦄ (f : X ⟶ Y),
    (parallelPair I.fstSigmaMap I.sndSigmaMap).map f ≫
        (fun x =>
            match x with
            | WalkingParallelPair.zero => I.fstSigmaMap ≫ Sigma.desc K.π
            | WalkingParallelPair.one => Sigma.desc K.π)
          Y =
      (fun x =>
            match x with
            | WalkingParallelPair.zero => I.fstSigmaMap ≫ Sigma.desc K.π
            | WalkingParallelPair.one => Sigma.desc K.π)
          X ≫
        ((Functor.const WalkingParallelPair).obj K.pt).map f
state_after: no goals
tactic: rintro (_ | _) (_ | _) (_ | _ | _) <;> dsimp <;>
          simp only [Functor.map_id, parallelPair_obj_zero,
            parallelPair_obj_one, sigma_condition, Category.id_comp, Category.comp_id]
Theorem: MeasureTheory.AEEqFun.lintegral_add
File: Mathlib/MeasureTheory/Function/AEEqFun.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f✝ g✝ : α →ₘ[μ] ℝ≥0∞
f : α → ℝ≥0∞
hf : AEStronglyMeasurable f μ
g : α → ℝ≥0∞
x✝ : AEStronglyMeasurable g μ
⊢ (mk f hf + mk g x✝).lintegral = (mk f hf).lintegral + (mk g x✝).lintegral
state_after: no goals
tactic: simp [lintegral_add_left' hf.aemeasurable]
Theorem: CategoryTheory.Limits.biproduct.matrix_π
File: Mathlib/CategoryTheory/Limits/Shapes/Biproducts.lean

Proof steps:
state_before: J : Type
inst✝⁴ : Finite J
K : Type
inst✝³ : Finite K
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
inst✝ : HasFiniteBiproducts C
f : J → C
g : K → C
m : (j : J) → (k : K) → f j ⟶ g k
k : K
⊢ matrix m ≫ π g k = desc fun j => m j k
state_after: case w
J : Type
inst✝⁴ : Finite J
K : Type
inst✝³ : Finite K
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
inst✝ : HasFiniteBiproducts C
f : J → C
g : K → C
m : (j : J) → (k : K) → f j ⟶ g k
k : K
j✝ : J
⊢ ι f j✝ ≫ matrix m ≫ π g k = ι f j✝ ≫ desc fun j => m j k
tactic: ext
state_before: case w
J : Type
inst✝⁴ : Finite J
K : Type
inst✝³ : Finite K
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
inst✝ : HasFiniteBiproducts C
f : J → C
g : K → C
m : (j : J) → (k : K) → f j ⟶ g k
k : K
j✝ : J
⊢ ι f j✝ ≫ matrix m ≫ π g k = ι f j✝ ≫ desc fun j => m j k
state_after: no goals
tactic: simp [biproduct.matrix]
Theorem: Sym.cons_equiv_eq_equiv_cons
File: Mathlib/Data/Sym/Basic.lean

Proof steps:
state_before: α✝ : Type u_1
β : Type u_2
n✝ n' m : ℕ
s✝ : Sym α✝ n✝
a✝ b : α✝
α : Type u_3
n : ℕ
a : α
s : Sym α n
⊢ (a :: symEquivSym' s) = symEquivSym' (a ::ₛ s)
state_after: case mk.mk
α✝ : Type u_1
β : Type u_2
n✝ n' m : ℕ
s : Sym α✝ n✝
a✝ b : α✝
α : Type u_3
n : ℕ
a : α
val✝ : Multiset α
l : List α
property✝ : Multiset.card (Quot.mk Setoid.r l) = n
⊢ (a :: symEquivSym' ⟨Quot.mk Setoid.r l, property✝⟩) = symEquivSym' (a ::ₛ ⟨Quot.mk Setoid.r l, property✝⟩)
tactic: rcases s with ⟨⟨l⟩, _⟩
state_before: case mk.mk
α✝ : Type u_1
β : Type u_2
n✝ n' m : ℕ
s : Sym α✝ n✝
a✝ b : α✝
α : Type u_3
n : ℕ
a : α
val✝ : Multiset α
l : List α
property✝ : Multiset.card (Quot.mk Setoid.r l) = n
⊢ (a :: symEquivSym' ⟨Quot.mk Setoid.r l, property✝⟩) = symEquivSym' (a ::ₛ ⟨Quot.mk Setoid.r l, property✝⟩)
state_after: no goals
tactic: rfl
Theorem: Set.image_update_Ioo_right
File: Mathlib/Order/Interval/Set/Pi.lean

Proof steps:
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → PartialOrder (α i)
f : (i : ι) → α i
i : ι
b : α i
⊢ update f i '' Ioo (f i) b = Ioo f (update f i b)
state_after: no goals
tactic: simpa using image_update_Ioo f i (f i) b
Theorem: MeasureTheory.SimpleFunc.memℒp_approxOn_range
File: Mathlib/MeasureTheory/Function/SimpleFuncDenseLp.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
inst✝ : SeparableSpace ↑(Set.range f ∪ {0})
hf : Memℒp f p μ
n : ℕ
⊢ 0 ∈ Set.range f ∪ {0}
state_after: no goals
tactic: simp
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
inst✝ : SeparableSpace ↑(Set.range f ∪ {0})
hf : Memℒp f p μ
n : ℕ
⊢ 0 ∈ Set.range f ∪ {0}
state_after: no goals
tactic: simp
Theorem: CategoryTheory.StrongOplaxNatTrans.whiskerRight_naturality_naturality
File: Mathlib/CategoryTheory/Bicategory/NaturalTransformation/Strong.lean

Proof steps:
state_before: B : Type u₁
inst✝¹ : Bicategory B
C : Type u₂
inst✝ : Bicategory C
F G H : OplaxFunctor B C
η : StrongOplaxNatTrans F G
θ : StrongOplaxNatTrans G H
a b c : B
a' : C
f g : a ⟶ b
β : f ⟶ g
h : G.obj b ⟶ a'
⊢ F.map₂ β ▷ η.app b ▷ h ≫ (η.naturality g).hom ▷ h =
    (η.naturality f).hom ▷ h ≫ (α_ (η.app a) (G.map f) h).hom ≫ η.app a ◁ G.map₂ β ▷ h ≫ (α_ (η.app a) (G.map g) h).inv
state_after: no goals
tactic: apply η.toOplax.whiskerRight_naturality_naturality
Theorem: EReal.liminf_add_gt_of_gt
File: Mathlib/Topology/Instances/EReal.lean

Proof steps:
state_before: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : a < liminf u f
hb : b < liminf v f
⊢ a + b < liminf (u + v) f
state_after: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : a < liminf u f
hb : b < liminf v f
ha' : a ≠ ⊤
⊢ a + b < liminf (u + v) f
tactic: have ha' : a ≠ ⊤ := ha.ne_top
state_before: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : a < liminf u f
hb : b < liminf v f
ha' : a ≠ ⊤
⊢ a + b < liminf (u + v) f
state_after: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : a < liminf u f
hb : b < liminf v f
ha' : a ≠ ⊤
hb' : b ≠ ⊤
⊢ a + b < liminf (u + v) f
tactic: have hb' : b ≠ ⊤ := hb.ne_top
state_before: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : a < liminf u f
hb : b < liminf v f
ha' : a ≠ ⊤
hb' : b ≠ ⊤
⊢ a + b < liminf (u + v) f
state_after: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : a < liminf u f
hb : b < liminf v f
ha' : a ≠ ⊤
hb' : b ≠ ⊤
h : limsup (-(u + v)) f = limsup (-u + -v) f
⊢ a + b < liminf (u + v) f
tactic: have h : limsup (-(u + v)) f = limsup (-u + -v) f := by
    apply limsup_congr
    filter_upwards [eventually_lt_of_lt_liminf ha, eventually_lt_of_lt_liminf hb] with x hax hbx
    dsimp
    rw [neg_add (Or.inl hax.ne_bot) (Or.inr hbx.ne_bot), sub_eq_add_neg]
state_before: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : a < liminf u f
hb : b < liminf v f
ha' : a ≠ ⊤
hb' : b ≠ ⊤
h : limsup (-(u + v)) f = limsup (-u + -v) f
⊢ a + b < liminf (u + v) f
state_after: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup (-u) f < -a
hb : limsup (-v) f < -b
ha' : a ≠ ⊤
hb' : b ≠ ⊤
h : limsup (-(u + v)) f = limsup (-u + -v) f
⊢ limsup (-(u + v)) f < -(a + b)
tactic: rw [← neg_lt_neg_iff, ← limsup_neg] at ha hb ⊢
state_before: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup (-u) f < -a
hb : limsup (-v) f < -b
ha' : a ≠ ⊤
hb' : b ≠ ⊤
h : limsup (-(u + v)) f = limsup (-u + -v) f
⊢ limsup (-(u + v)) f < -(a + b)
state_after: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup (-u) f < -a
hb : limsup (-v) f < -b
ha' : a ≠ ⊤
hb' : b ≠ ⊤
h : limsup (-(u + v)) f = limsup (-u + -v) f
⊢ limsup (-u + -v) f < -a - b
tactic: rw [neg_add (Or.inr hb') (Or.inl ha'), h]
state_before: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup (-u) f < -a
hb : limsup (-v) f < -b
ha' : a ≠ ⊤
hb' : b ≠ ⊤
h : limsup (-(u + v)) f = limsup (-u + -v) f
⊢ limsup (-u + -v) f < -a - b
state_after: no goals
tactic: exact limsup_add_lt_of_lt ha hb
Theorem: Quaternion.coeComplex_mul
File: Mathlib/Analysis/Quaternion.lean

Proof steps:
state_before: z w : ℂ
⊢ ↑(z * w) = ↑z * ↑w
state_after: no goals
tactic: ext <;> simp
Theorem: ENNReal.coe_div
File: Mathlib/Data/ENNReal/Inv.lean

Proof steps:
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
hr : r ≠ 0
⊢ ↑(p / r) = ↑p / ↑r
state_after: no goals
tactic: rw [div_eq_mul_inv, div_eq_mul_inv, coe_mul, coe_inv hr]
Theorem: HurwitzZeta.completedHurwitzZetaEven₀_neg
File: Mathlib/NumberTheory/LSeries/HurwitzZetaEven.lean

Proof steps:
state_before: a : UnitAddCircle
s : ℂ
⊢ completedHurwitzZetaEven₀ (-a) s = completedHurwitzZetaEven₀ a s
state_after: no goals
tactic: simp only [completedHurwitzZetaEven₀, hurwitzEvenFEPair_neg]
Theorem: Filter.Tendsto.finset_sup'_nhds
File: Mathlib/Topology/Order/Lattice.lean

Proof steps:
state_before: L : Type u_1
X : Type u_2
inst✝³ : TopologicalSpace L
inst✝² : TopologicalSpace X
ι : Type u_3
α : Type u_4
s : Finset ι
f : ι → α → L
l : Filter α
g : ι → L
inst✝¹ : SemilatticeSup L
inst✝ : ContinuousSup L
hne : s.Nonempty
hs : ∀ i ∈ s, Tendsto (f i) l (𝓝 (g i))
⊢ Tendsto (s.sup' hne f) l (𝓝 (s.sup' hne g))
state_after: no goals
tactic: induction hne using Finset.Nonempty.cons_induction with
  | singleton => simpa using hs
  | cons a s ha hne ihs =>
    rw [forall_mem_cons] at hs
    simp only [sup'_cons, hne]
    exact hs.1.sup_nhds (ihs hs.2)
Theorem: List.length_bind
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
l : List α
f : α → List β
⊢ (l.bind f).length = (map (length ∘ f) l).sum
state_after: no goals
tactic: rw [List.bind, length_join, map_map]
Theorem: CategoryTheory.Limits.limLax_μ
File: Mathlib/CategoryTheory/Monoidal/Limits.lean

Proof steps:
state_before: J : Type w
inst✝³ : SmallCategory J
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasLimitsOfShape J C
inst✝ : MonoidalCategory C
F G : J ⥤ C
j j' : J
f : j ⟶ j'
⊢ ((Functor.const J).obj (limit F ⊗ limit G)).map f ≫ (fun j => limit.π F j ⊗ limit.π G j) j' =
    (fun j => limit.π F j ⊗ limit.π G j) j ≫ (F ⊗ G).map f
state_after: J : Type w
inst✝³ : SmallCategory J
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasLimitsOfShape J C
inst✝ : MonoidalCategory C
F G : J ⥤ C
j j' : J
f : j ⟶ j'
⊢ 𝟙 (limit F ⊗ limit G) ≫ (limit.π F j' ⊗ limit.π G j') = (limit.π F j ⊗ limit.π G j) ≫ (F.map f ⊗ G.map f)
tactic: dsimp
state_before: J : Type w
inst✝³ : SmallCategory J
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasLimitsOfShape J C
inst✝ : MonoidalCategory C
F G : J ⥤ C
j j' : J
f : j ⟶ j'
⊢ 𝟙 (limit F ⊗ limit G) ≫ (limit.π F j' ⊗ limit.π G j') = (limit.π F j ⊗ limit.π G j) ≫ (F.map f ⊗ G.map f)
state_after: no goals
tactic: simp only [Category.id_comp, ← tensor_comp, limit.w]
Theorem: SimpleGraph.cliqueFinset_map
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
inst✝⁵ : Fintype α
inst✝⁴ : DecidableEq α
inst✝³ : DecidableRel G.Adj
n : ℕ
a b c : α
s : Finset α
inst✝² : DecidableRel H.Adj
inst✝¹ : Fintype β
inst✝ : DecidableEq β
f : α ↪ β
hn : n ≠ 1
⊢ ↑((SimpleGraph.map f G).cliqueFinset n) = ↑(map { toFun := map f, inj' := ⋯ } (G.cliqueFinset n))
state_after: no goals
tactic: simp_rw [coe_cliqueFinset, cliqueSet_map hn, coe_map, coe_cliqueFinset, Embedding.coeFn_mk]
Theorem: Order.Ideal.PrimePair.I_isProper
File: Mathlib/Order/PrimeIdeal.lean

Proof steps:
state_before: P : Type u_1
inst✝ : Preorder P
IF : PrimePair P
⊢ IF.I.IsProper
state_after: case intro
P : Type u_1
inst✝ : Preorder P
IF : PrimePair P
w : P
h : w ∈ ↑IF.F
⊢ IF.I.IsProper
tactic: cases' IF.F.nonempty with w h
state_before: case intro
P : Type u_1
inst✝ : Preorder P
IF : PrimePair P
w : P
h : w ∈ ↑IF.F
⊢ IF.I.IsProper
state_after: P : Type u_1
inst✝ : Preorder P
IF : PrimePair P
w : P
h : w ∈ ↑IF.F
⊢ w ∉ IF.I
tactic: apply isProper_of_not_mem (_ : w ∉ IF.I)
state_before: P : Type u_1
inst✝ : Preorder P
IF : PrimePair P
w : P
h : w ∈ ↑IF.F
⊢ w ∉ IF.I
state_after: no goals
tactic: rwa [← IF.compl_I_eq_F] at h
Theorem: addOrderOf_nsmul_eq_zero
File: Mathlib/GroupTheory/OrderOfElement.lean

Proof steps:
state_before: case convert_2
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x✝ y : G
n m : ℕ
x : G
⊢ x ^ orderOf x = (fun x_1 => x * x_1)^[minimalPeriod (fun x_1 => x * x_1) 1] 1
state_after: case convert_2
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x✝ y : G
n m : ℕ
x : G
⊢ x ^ minimalPeriod (fun x_1 => x * x_1) 1 = (fun x_1 => x ^ minimalPeriod (fun x_2 => x * x_2) 1 * x_1) 1
tactic: rw [orderOf, mul_left_iterate]
state_before: case convert_2
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x✝ y : G
n m : ℕ
x : G
⊢ x ^ minimalPeriod (fun x_1 => x * x_1) 1 = (fun x_1 => x ^ minimalPeriod (fun x_2 => x * x_2) 1 * x_1) 1
state_after: case convert_2
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x✝ y : G
n m : ℕ
x : G
⊢ x ^ minimalPeriod (fun x_1 => x * x_1) 1 = x ^ minimalPeriod (fun x_1 => x * x_1) 1 * 1
tactic: beta_reduce
state_before: case convert_2
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x✝ y : G
n m : ℕ
x : G
⊢ x ^ minimalPeriod (fun x_1 => x * x_1) 1 = x ^ minimalPeriod (fun x_1 => x * x_1) 1 * 1
state_after: no goals
tactic: rw [mul_one]
Theorem: Set.infsep_eq_iInf
File: Mathlib/Topology/MetricSpace/Infsep.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PseudoMetricSpace α
x y z : α
s t : Set α
inst✝ : Decidable s.Nontrivial
⊢ s.infsep = if s.Nontrivial then ⨅ d, uncurry dist ↑d else 0
state_after: case pos
α : Type u_1
β : Type u_2
inst✝¹ : PseudoMetricSpace α
x y z : α
s t : Set α
inst✝ : Decidable s.Nontrivial
hs : s.Nontrivial
⊢ s.infsep = ⨅ d, uncurry dist ↑d

case neg
α : Type u_1
β : Type u_2
inst✝¹ : PseudoMetricSpace α
x y z : α
s t : Set α
inst✝ : Decidable s.Nontrivial
hs : ¬s.Nontrivial
⊢ s.infsep = 0
tactic: split_ifs with hs
Theorem: Module.support_eq_empty_iff
File: Mathlib/RingTheory/Support.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
p : PrimeSpectrum R
⊢ support R M = ∅ ↔ Subsingleton M
state_after: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
p : PrimeSpectrum R
⊢ (∀ (m : M), ∃ r ∈ Submonoid.powers 1, r • m = 0) ↔ ∀ (y : M), y = 0
tactic: rw [← Set.subset_empty_iff, ← PrimeSpectrum.zeroLocus_singleton_one,
    ← LocalizedModule.subsingleton_iff_support_subset, LocalizedModule.subsingleton_iff,
    subsingleton_iff_forall_eq 0]
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
p : PrimeSpectrum R
⊢ (∀ (m : M), ∃ r ∈ Submonoid.powers 1, r • m = 0) ↔ ∀ (y : M), y = 0
state_after: no goals
tactic: simp only [Submonoid.powers_one, Submonoid.mem_bot, exists_eq_left, one_smul]