ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: ENNReal.coe_nnreal_eq
File: Mathlib/Data/ENNReal/Basic.lean

Proof steps:
state_before: α : Type u_1
a b c d : ℝ≥0∞
r✝ p q r : ℝ≥0
⊢ ↑r = ENNReal.ofReal ↑r
state_after: no goals
tactic: rw [ENNReal.ofReal, Real.toNNReal_coe]
Theorem: CategoryTheory.Bicategory.leftUnitor_whiskerRight
File: Mathlib/CategoryTheory/Bicategory/Basic.lean

Proof steps:
state_before: B : Type u
inst✝ : Bicategory B
a b c d e : B
f : a ⟶ b
g : b ⟶ c
⊢ (λ_ f).hom ▷ g = (α_ (𝟙 a) f g).hom ≫ (λ_ (f ≫ g)).hom
state_after: no goals
tactic: rw [← whiskerLeft_iff, whiskerLeft_comp, ← cancel_epi (α_ _ _ _).hom, ←
      cancel_epi ((α_ _ _ _).hom ▷ _), pentagon_assoc, triangle, ← associator_naturality_middle, ←
      comp_whiskerRight_assoc, triangle, associator_naturality_left]
Theorem: PerfectRing.lift_comp_apply
File: Mathlib/FieldTheory/IsPerfectClosure.lean

Proof steps:
state_before: K : Type u_1
L : Type u_2
M : Type u_3
N : Type u_4
inst✝⁹ : CommRing K
inst✝⁸ : CommRing L
inst✝⁷ : CommRing M
inst✝⁶ : CommRing N
i : K →+* L
j : K →+* M
k : K →+* N
f : L →+* M
g : L →+* N
p : ℕ
inst✝⁵ : ExpChar K p
inst✝⁴ : ExpChar L p
inst✝³ : ExpChar M p
inst✝² : ExpChar N p
inst✝¹ : PerfectRing M p
inst✝ : IsPRadical i p
x : K
⊢ (lift i j p) (i x) = j x
state_after: K : Type u_1
L : Type u_2
M : Type u_3
N : Type u_4
inst✝⁹ : CommRing K
inst✝⁸ : CommRing L
inst✝⁷ : CommRing M
inst✝⁶ : CommRing N
i : K →+* L
j : K →+* M
k : K →+* N
f : L →+* M
g : L →+* N
p : ℕ
inst✝⁵ : ExpChar K p
inst✝⁴ : ExpChar L p
inst✝³ : ExpChar M p
inst✝² : ExpChar N p
inst✝¹ : PerfectRing M p
inst✝ : IsPRadical i p
x : K
⊢ (RingEquiv.refl M).symm (j x) = j x
tactic: rw [lift_apply i j p _ 0 x (by rw [pow_zero, pow_one]), iterateFrobeniusEquiv_zero]
state_before: K : Type u_1
L : Type u_2
M : Type u_3
N : Type u_4
inst✝⁹ : CommRing K
inst✝⁸ : CommRing L
inst✝⁷ : CommRing M
inst✝⁶ : CommRing N
i : K →+* L
j : K →+* M
k : K →+* N
f : L →+* M
g : L →+* N
p : ℕ
inst✝⁵ : ExpChar K p
inst✝⁴ : ExpChar L p
inst✝³ : ExpChar M p
inst✝² : ExpChar N p
inst✝¹ : PerfectRing M p
inst✝ : IsPRadical i p
x : K
⊢ (RingEquiv.refl M).symm (j x) = j x
state_after: no goals
tactic: rfl
Theorem: SemiconjBy.add_right
File: Mathlib/Algebra/Ring/Semiconj.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
R : Type x
inst✝ : Distrib R
a x y x' y' : R
h : SemiconjBy a x y
h' : SemiconjBy a x' y'
⊢ SemiconjBy a (x + x') (y + y')
state_after: no goals
tactic: simp only [SemiconjBy, left_distrib, right_distrib, h.eq, h'.eq]
Theorem: CategoryTheory.Limits.coprod.map_comp_inl_inr_codiag
File: Mathlib/CategoryTheory/Limits/Shapes/BinaryProducts.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ : C
inst✝ : HasColimitsOfShape (Discrete WalkingPair) C
X X' Y Y' : C
g : X ⟶ Y
g' : X' ⟶ Y'
⊢ map (g ≫ inl) (g' ≫ inr) ≫ codiag (Y ⨿ Y') = map g g'
state_after: no goals
tactic: simp
Theorem: CategoryTheory.Limits.HasZeroObject.zeroIsoInitial_inv
File: Mathlib/CategoryTheory/Limits/Shapes/ZeroMorphisms.lean

Proof steps:
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
inst✝² : HasZeroObject C
inst✝¹ : HasZeroMorphisms C
inst✝ : HasInitial C
⊢ zeroIsoInitial.inv = 0
state_after: no goals
tactic: ext
Theorem: AddSubgroup.index_inf_ne_zero
File: Mathlib/GroupTheory/Index.lean

Proof steps:
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
hH : H.index ≠ 0
hK : K.index ≠ 0
⊢ (H ⊓ K).index ≠ 0
state_after: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
hH : H.relindex ⊤ ≠ 0
hK : K.relindex ⊤ ≠ 0
⊢ (H ⊓ K).relindex ⊤ ≠ 0
tactic: rw [← relindex_top_right] at hH hK ⊢
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
hH : H.relindex ⊤ ≠ 0
hK : K.relindex ⊤ ≠ 0
⊢ (H ⊓ K).relindex ⊤ ≠ 0
state_after: no goals
tactic: exact relindex_inf_ne_zero hH hK
Theorem: Ctop.Realizer.isOpen
File: Mathlib/Data/Analysis/Topology.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
σ : Type u_3
τ : Type u_4
inst✝ : TopologicalSpace α
F : Realizer α
s : F.σ
a : α
m : a ∈ F.F.f s
⊢ 𝓝 a ≤ 𝓟 (F.F.f s)
state_after: no goals
tactic: simpa using F.mem_nhds.2 ⟨s, m, Subset.refl _⟩
Theorem: Polynomial.natSepDegree_zero
File: Mathlib/FieldTheory/SeparableDegree.lean

Proof steps:
state_before: F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
f : F[X]
⊢ natSepDegree 0 = 0
state_after: no goals
tactic: rw [← C_0, natSepDegree_C]
Theorem: PrimeSpectrum.coe_vanishingIdeal
File: Mathlib/RingTheory/PrimeSpectrum.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
⊢ ↑(vanishingIdeal t) = {f | ∀ x ∈ t, f ∈ x.asIdeal}
state_after: case h
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
f : R
⊢ f ∈ ↑(vanishingIdeal t) ↔ f ∈ {f | ∀ x ∈ t, f ∈ x.asIdeal}
tactic: ext f
state_before: case h
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
f : R
⊢ f ∈ ↑(vanishingIdeal t) ↔ f ∈ {f | ∀ x ∈ t, f ∈ x.asIdeal}
state_after: case h
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
f : R
⊢ (∀ (i : PrimeSpectrum R), f ∈ ⨅ (_ : i ∈ t), i.asIdeal) ↔ f ∈ {f | ∀ x ∈ t, f ∈ x.asIdeal}
tactic: rw [vanishingIdeal, SetLike.mem_coe, Submodule.mem_iInf]
state_before: case h
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
f : R
⊢ (∀ (i : PrimeSpectrum R), f ∈ ⨅ (_ : i ∈ t), i.asIdeal) ↔ f ∈ {f | ∀ x ∈ t, f ∈ x.asIdeal}
state_after: case h.h
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
f : R
⊢ ∀ (a : PrimeSpectrum R), f ∈ ⨅ (_ : a ∈ t), a.asIdeal ↔ a ∈ t → f ∈ a.asIdeal
tactic: apply forall_congr'
state_before: case h.h
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
f : R
⊢ ∀ (a : PrimeSpectrum R), f ∈ ⨅ (_ : a ∈ t), a.asIdeal ↔ a ∈ t → f ∈ a.asIdeal
state_after: case h.h
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
f : R
x : PrimeSpectrum R
⊢ f ∈ ⨅ (_ : x ∈ t), x.asIdeal ↔ x ∈ t → f ∈ x.asIdeal
tactic: intro x
state_before: case h.h
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
f : R
x : PrimeSpectrum R
⊢ f ∈ ⨅ (_ : x ∈ t), x.asIdeal ↔ x ∈ t → f ∈ x.asIdeal
state_after: no goals
tactic: rw [Submodule.mem_iInf]
Theorem: Right.neg_neg_iff
File: Mathlib/Algebra/Order/Group/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LT α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c : α
⊢ a⁻¹ < 1 ↔ 1 < a
state_after: no goals
tactic: rw [← mul_lt_mul_iff_right a, inv_mul_self, one_mul]
Theorem: PFunctor.fst_map
File: Mathlib/Data/PFunctor/Univariate/Basic.lean

Proof steps:
state_before: P : PFunctor.{u}
α : Type v₁
β : Type v₂
γ : Type v₃
x : ↑P α
f : α → β
⊢ (P.map f x).fst = x.fst
state_after: case mk
P : PFunctor.{u}
α : Type v₁
β : Type v₂
γ : Type v₃
f : α → β
fst✝ : P.A
snd✝ : P.B fst✝ → α
⊢ (P.map f ⟨fst✝, snd✝⟩).fst = ⟨fst✝, snd✝⟩.fst
tactic: cases x
state_before: case mk
P : PFunctor.{u}
α : Type v₁
β : Type v₂
γ : Type v₃
f : α → β
fst✝ : P.A
snd✝ : P.B fst✝ → α
⊢ (P.map f ⟨fst✝, snd✝⟩).fst = ⟨fst✝, snd✝⟩.fst
state_after: no goals
tactic: rfl
Theorem: schnirelmannDensity_nonneg
File: Mathlib/Combinatorics/Schnirelmann.lean

Proof steps:
state_before: A : Set ℕ
inst✝ : DecidablePred fun x => x ∈ A
x✝ : { n // 0 < n }
⊢ 0 ≤ ↑(filter (fun x => x ∈ A) (Ioc 0 ↑x✝)).card / ↑↑x✝
state_after: no goals
tactic: positivity
Theorem: SmoothBumpFunction.isClosed_image_of_isClosed
File: Mathlib/Geometry/Manifold/BumpFunction.lean

Proof steps:
state_before: E : Type uE
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : FiniteDimensional ℝ E
H : Type uH
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
c : M
f : SmoothBumpFunction I c
x : M
s : Set M
hsc : IsClosed s
hs : s ⊆ support ↑f
⊢ IsClosed (↑(extChartAt I c) '' s)
state_after: E : Type uE
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : FiniteDimensional ℝ E
H : Type uH
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
c : M
f : SmoothBumpFunction I c
x : M
s : Set M
hsc : IsClosed s
hs : s ⊆ support ↑f
⊢ IsClosed (closedBall (↑(extChartAt I c) c) f.rOut ∩ range ↑I ∩ ↑(extChartAt I c).symm ⁻¹' s)
tactic: rw [f.image_eq_inter_preimage_of_subset_support hs]
state_before: E : Type uE
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : FiniteDimensional ℝ E
H : Type uH
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
c : M
f : SmoothBumpFunction I c
x : M
s : Set M
hsc : IsClosed s
hs : s ⊆ support ↑f
⊢ IsClosed (closedBall (↑(extChartAt I c) c) f.rOut ∩ range ↑I ∩ ↑(extChartAt I c).symm ⁻¹' s)
state_after: E : Type uE
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : FiniteDimensional ℝ E
H : Type uH
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
c : M
f : SmoothBumpFunction I c
x : M
s : Set M
hsc : IsClosed s
hs : s ⊆ support ↑f
⊢ IsClosed (closedBall (↑(extChartAt I c) c) f.rOut ∩ range ↑I)
tactic: refine ContinuousOn.preimage_isClosed_of_isClosed
    ((continuousOn_extChartAt_symm _ _).mono f.closedBall_subset) ?_ hsc
state_before: E : Type uE
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : FiniteDimensional ℝ E
H : Type uH
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
c : M
f : SmoothBumpFunction I c
x : M
s : Set M
hsc : IsClosed s
hs : s ⊆ support ↑f
⊢ IsClosed (closedBall (↑(extChartAt I c) c) f.rOut ∩ range ↑I)
state_after: no goals
tactic: exact IsClosed.inter isClosed_ball I.isClosed_range
Theorem: AddSubgroup.relindex_inf_le
File: Mathlib/GroupTheory/Index.lean

Proof steps:
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
⊢ (H ⊓ K).relindex L ≤ H.relindex L * K.relindex L
state_after: case pos
G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
h : H.relindex L = 0
⊢ (H ⊓ K).relindex L ≤ H.relindex L * K.relindex L

case neg
G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
h : ¬H.relindex L = 0
⊢ (H ⊓ K).relindex L ≤ H.relindex L * K.relindex L
tactic: by_cases h : H.relindex L = 0
state_before: case neg
G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
h : ¬H.relindex L = 0
⊢ (H ⊓ K).relindex L ≤ H.relindex L * K.relindex L
state_after: case neg
G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
h : ¬H.relindex L = 0
⊢ H.relindex (K ⊓ L) * K.relindex L ≤ H.relindex L * K.relindex L
tactic: rw [← inf_relindex_right, inf_assoc, ← relindex_mul_relindex _ _ L inf_le_right inf_le_right,
    inf_relindex_right, inf_relindex_right]
state_before: case neg
G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
h : ¬H.relindex L = 0
⊢ H.relindex (K ⊓ L) * K.relindex L ≤ H.relindex L * K.relindex L
state_after: no goals
tactic: exact mul_le_mul_right' (relindex_le_of_le_right inf_le_right h) (K.relindex L)
Theorem: ENNReal.rpow_eq_top_iff_of_pos
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

Proof steps:
state_before: x : ℝ≥0∞
y : ℝ
hy : 0 < y
⊢ x ^ y = ⊤ ↔ x = ⊤
state_after: no goals
tactic: simp [rpow_eq_top_iff, hy, asymm hy]
Theorem: CategoryTheory.ShortComplex.HomologyData.unop_right
File: Mathlib/Algebra/Homology/ShortComplex/Homology.lean

Proof steps:
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
S : ShortComplex Cᵒᵖ
h : S.HomologyData
⊢ (h.right.unop.π ≫ h.iso.unop.hom ≫ h.left.unop.ι).op = (h.right.unop.i ≫ h.left.unop.p).op
state_after: no goals
tactic: simp
Theorem: ZFSet.toSet_union
File: Mathlib/SetTheory/ZFC/Basic.lean

Proof steps:
state_before: x y : ZFSet
⊢ (x ∪ y).toSet = x.toSet ∪ y.toSet
state_after: x y : ZFSet
⊢ (⋃₀ {x, y}).toSet = x.toSet ∪ y.toSet
tactic: change (⋃₀ {x, y}).toSet = _
state_before: x y : ZFSet
⊢ (⋃₀ {x, y}).toSet = x.toSet ∪ y.toSet
state_after: no goals
tactic: simp
Theorem: Nat.Primrec'.to_prim
File: Mathlib/Computability/Primrec.lean

Proof steps:
state_before: n : ℕ
f : Vector ℕ n → ℕ
pf : Primrec' f
⊢ Primrec f
state_after: no goals
tactic: induction pf with
  | zero => exact .const 0
  | succ => exact _root_.Primrec.succ.comp .vector_head
  | get i => exact Primrec.vector_get.comp .id (.const i)
  | comp _ _ _ hf hg => exact hf.comp (.vector_ofFn fun i => hg i)
  | @prec n f g _ _ hf hg =>
    exact
      .nat_rec' .vector_head (hf.comp Primrec.vector_tail)
        (hg.comp <|
          Primrec.vector_cons.comp (Primrec.fst.comp .snd) <|
          Primrec.vector_cons.comp (Primrec.snd.comp .snd) <|
            (@Primrec.vector_tail _ _ (n + 1)).comp .fst).to₂
Theorem: rootsOfUnity.coe_pow
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

Proof steps:
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 : ℕ+
inst✝ : CommMonoid R
ζ : ↥(rootsOfUnity k R)
m : ℕ
⊢ ↑↑(ζ ^ m) = ↑↑ζ ^ m
state_after: no goals
tactic: rw [Subgroup.coe_pow, Units.val_pow_eq_pow_val]
Theorem: StrictConvexOn.lt_slope_of_hasDerivWithinAt_Ioi
File: Mathlib/Analysis/Convex/Deriv.lean

Proof steps:
state_before: S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : StrictConvexOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hf' : HasDerivWithinAt f f' (Ioi x) x
⊢ f' < slope f x y
state_after: case intro.intro
S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : StrictConvexOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hf' : HasDerivWithinAt f f' (Ioi x) x
u : ℝ
hxu : x < u
huy : u < y
⊢ f' < slope f x y
tactic: obtain ⟨u, hxu, huy⟩ := exists_between hxy
state_before: case intro.intro
S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : StrictConvexOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hf' : HasDerivWithinAt f f' (Ioi x) x
u : ℝ
hxu : x < u
huy : u < y
⊢ f' < slope f x y
state_after: case intro.intro
S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : StrictConvexOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hf' : HasDerivWithinAt f f' (Ioi x) x
u : ℝ
hxu : x < u
huy : u < y
hu : u ∈ S
⊢ f' < slope f x y
tactic: have hu : u ∈ S := hfc.1.ordConnected.out hx hy ⟨hxu.le, huy.le⟩
state_before: case intro.intro
S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : StrictConvexOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hf' : HasDerivWithinAt f f' (Ioi x) x
u : ℝ
hxu : x < u
huy : u < y
hu : u ∈ S
⊢ f' < slope f x y
state_after: case intro.intro
S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : StrictConvexOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hf' : HasDerivWithinAt f f' (Ioi x) x
u : ℝ
hxu : x < u
huy : u < y
hu : u ∈ S
this : (f u - f x) / (u - x) < (f y - f x) / (y - x)
⊢ f' < slope f x y
tactic: have := hfc.secant_strict_mono hx hu hy hxu.ne' hxy.ne' huy
state_before: case intro.intro
S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : StrictConvexOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hf' : HasDerivWithinAt f f' (Ioi x) x
u : ℝ
hxu : x < u
huy : u < y
hu : u ∈ S
this : (f u - f x) / (u - x) < (f y - f x) / (y - x)
⊢ f' < slope f x y
state_after: case intro.intro
S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : StrictConvexOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hf' : HasDerivWithinAt f f' (Ioi x) x
u : ℝ
hxu : x < u
huy : u < y
hu : u ∈ S
this : slope f x u < slope f x y
⊢ f' < slope f x y
tactic: simp only [← slope_def_field] at this
state_before: case intro.intro
S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : StrictConvexOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hf' : HasDerivWithinAt f f' (Ioi x) x
u : ℝ
hxu : x < u
huy : u < y
hu : u ∈ S
this : slope f x u < slope f x y
⊢ f' < slope f x y
state_after: no goals
tactic: exact (hfc.convexOn.le_slope_of_hasDerivWithinAt_Ioi hx hu hxu hf').trans_lt this
Theorem: MeasureTheory.indicatorConstLp_add
File: Mathlib/MeasureTheory/Function/LpSpace.lean

Proof steps:
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: 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
⊢ 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
tactic: rfl
Theorem: MeasureTheory.setIntegral_indicatorConstLp
File: Mathlib/MeasureTheory/Integral/SetIntegral.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝³ : MeasurableSpace X
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
inst✝ : CompleteSpace E
p : ℝ≥0∞
hs : MeasurableSet s
ht : MeasurableSet t
hμt : μ t ≠ ⊤
e : E
⊢ ∫ (x : X) in s, ↑↑(indicatorConstLp p ht hμt e) x ∂μ = ∫ (x : X) in s, t.indicator (fun x => e) x ∂μ
state_after: no goals
tactic: rw [setIntegral_congr_ae hs (indicatorConstLp_coeFn.mono fun x hx _ => hx)]
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝³ : MeasurableSpace X
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
inst✝ : CompleteSpace E
p : ℝ≥0∞
hs : MeasurableSet s
ht : MeasurableSet t
hμt : μ t ≠ ⊤
e : E
⊢ ∫ (x : X) in s, t.indicator (fun x => e) x ∂μ = (μ (t ∩ s)).toReal • e
state_after: no goals
tactic: rw [integral_indicator_const _ ht, Measure.restrict_apply ht]
Theorem: LocalizedModule.mk_smul_mk
File: Mathlib/Algebra/Module/LocalizedModule.lean

Proof steps:
state_before: R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
r : R
m : M
s t : ↥S
⊢ Localization.mk r s • mk m t = mk (r • m) (s * t)
state_after: R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
r : R
m : M
s t : ↥S
⊢ IsLocalization.mk' (Localization S) r s • mk m t = mk (r • m) (s * t)
tactic: rw [Localization.mk_eq_mk']
state_before: R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
r : R
m : M
s t : ↥S
⊢ IsLocalization.mk' (Localization S) r s • mk m t = mk (r • m) (s * t)
state_after: no goals
tactic: exact mk'_smul_mk ..
Theorem: Ordinal.enumOrd_le_of_subset
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

Proof steps:
state_before: S✝ : Set Ordinal.{u}
S T : Set Ordinal.{u_1}
hS : Unbounded (fun x x_1 => x < x_1) S
hST : S ⊆ T
a : Ordinal.{u_1}
⊢ enumOrd T a ≤ enumOrd S a
state_after: S✝ : Set Ordinal.{u}
S T : Set Ordinal.{u_1}
hS : Unbounded (fun x x_1 => x < x_1) S
hST : S ⊆ T
a : Ordinal.{u_1}
⊢ ∀ (j : Ordinal.{u_1}), (∀ k < j, enumOrd T k ≤ enumOrd S k) → enumOrd T j ≤ enumOrd S j
tactic: apply Ordinal.induction a
state_before: S✝ : Set Ordinal.{u}
S T : Set Ordinal.{u_1}
hS : Unbounded (fun x x_1 => x < x_1) S
hST : S ⊆ T
a : Ordinal.{u_1}
⊢ ∀ (j : Ordinal.{u_1}), (∀ k < j, enumOrd T k ≤ enumOrd S k) → enumOrd T j ≤ enumOrd S j
state_after: S✝ : Set Ordinal.{u}
S T : Set Ordinal.{u_1}
hS : Unbounded (fun x x_1 => x < x_1) S
hST : S ⊆ T
a b : Ordinal.{u_1}
H : ∀ k < b, enumOrd T k ≤ enumOrd S k
⊢ enumOrd T b ≤ enumOrd S b
tactic: intro b H
state_before: S✝ : Set Ordinal.{u}
S T : Set Ordinal.{u_1}
hS : Unbounded (fun x x_1 => x < x_1) S
hST : S ⊆ T
a b : Ordinal.{u_1}
H : ∀ k < b, enumOrd T k ≤ enumOrd S k
⊢ enumOrd T b ≤ enumOrd S b
state_after: S✝ : Set Ordinal.{u}
S T : Set Ordinal.{u_1}
hS : Unbounded (fun x x_1 => x < x_1) S
hST : S ⊆ T
a b : Ordinal.{u_1}
H : ∀ k < b, enumOrd T k ≤ enumOrd S k
⊢ sInf (T ∩ {b_1 | ∀ c < b, enumOrd T c < b_1}) ≤ enumOrd S b
tactic: rw [enumOrd_def]
state_before: S✝ : Set Ordinal.{u}
S T : Set Ordinal.{u_1}
hS : Unbounded (fun x x_1 => x < x_1) S
hST : S ⊆ T
a b : Ordinal.{u_1}
H : ∀ k < b, enumOrd T k ≤ enumOrd S k
⊢ sInf (T ∩ {b_1 | ∀ c < b, enumOrd T c < b_1}) ≤ enumOrd S b
state_after: no goals
tactic: exact csInf_le' ⟨hST (enumOrd_mem hS b), fun c h => (H c h).trans_lt (enumOrd_strictMono hS h)⟩
Theorem: HomologicalComplex.homotopyCofiber.descSigma_ext_iff
File: Mathlib/Algebra/Homology/HomotopyCofiber.lean

Proof steps:
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K✝ : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
K : HomologicalComplex C c
x y : (α : G ⟶ K) × Homotopy (φ ≫ α) 0
⊢ x = y ↔ x.fst = y.fst ∧ ∀ (i j : ι), c.Rel j i → x.snd.hom i j = y.snd.hom i j
state_after: case mp
C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K✝ : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
K : HomologicalComplex C c
x y : (α : G ⟶ K) × Homotopy (φ ≫ α) 0
⊢ x = y → x.fst = y.fst ∧ ∀ (i j : ι), c.Rel j i → x.snd.hom i j = y.snd.hom i j

case mpr
C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K✝ : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
K : HomologicalComplex C c
x y : (α : G ⟶ K) × Homotopy (φ ≫ α) 0
⊢ (x.fst = y.fst ∧ ∀ (i j : ι), c.Rel j i → x.snd.hom i j = y.snd.hom i j) → x = y
tactic: constructor
Theorem: Finset.image_add_right_Ico
File: Mathlib/Algebra/Order/Interval/Finset.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
inst✝³ : OrderedCancelAddCommMonoid α
inst✝² : ExistsAddOfLE α
inst✝¹ : LocallyFiniteOrder α
inst✝ : DecidableEq α
a b c : α
⊢ image (fun x => x + c) (Ico a b) = Ico (a + c) (b + c)
state_after: no goals
tactic: rw [← map_add_right_Ico, map_eq_image, addRightEmbedding, Embedding.coeFn_mk]
Theorem: ENNReal.log_pow
File: Mathlib/Analysis/SpecialFunctions/Log/ENNRealLog.lean

Proof steps:
state_before: x : ℝ≥0∞
n : ℕ
⊢ (x ^ n).log = ↑n * x.log
state_after: case inl
x : ℝ≥0∞
n : ℕ
n_zero : n = 0
⊢ (x ^ n).log = ↑n * x.log

case inr
x : ℝ≥0∞
n : ℕ
n_pos : n > 0
⊢ (x ^ n).log = ↑n * x.log
tactic: cases' Nat.eq_zero_or_pos n with n_zero n_pos
state_before: case inr
x : ℝ≥0∞
n : ℕ
n_pos : n > 0
⊢ (x ^ n).log = ↑n * x.log
state_after: case inr.inl
n : ℕ
n_pos : n > 0
⊢ (0 ^ n).log = ↑n * log 0

case inr.inr.inl
n : ℕ
n_pos : n > 0
⊢ (⊤ ^ n).log = ↑n * ⊤.log

case inr.inr.inr
x : ℝ≥0∞
n : ℕ
n_pos : n > 0
x_real : 0 < x.toReal
⊢ (x ^ n).log = ↑n * x.log
tactic: rcases ENNReal.trichotomy x with (rfl | rfl | x_real)