ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: PowerSeries.coeff_pow
File: Mathlib/RingTheory/PowerSeries/Basic.lean

Proof steps:
state_before: R✝ : Type u_1
R : Type u_2
inst✝¹ : CommSemiring R
ι : Type u_3
inst✝ : DecidableEq ι
k n : ℕ
φ : R⟦X⟧
⊢ (coeff R n) (φ ^ k) = ∑ l ∈ (range k).finsuppAntidiag n, ∏ i ∈ range k, (coeff R (l i)) φ
state_after: R✝ : Type u_1
R : Type u_2
inst✝¹ : CommSemiring R
ι : Type u_3
inst✝ : DecidableEq ι
k n : ℕ
φ : R⟦X⟧
h₁ : ∀ (i : ℕ), Function.const ℕ φ i = φ
⊢ (coeff R n) (φ ^ k) = ∑ l ∈ (range k).finsuppAntidiag n, ∏ i ∈ range k, (coeff R (l i)) φ
tactic: have h₁ (i : ℕ) : Function.const ℕ φ i = φ := rfl
state_before: R✝ : Type u_1
R : Type u_2
inst✝¹ : CommSemiring R
ι : Type u_3
inst✝ : DecidableEq ι
k n : ℕ
φ : R⟦X⟧
h₁ : ∀ (i : ℕ), Function.const ℕ φ i = φ
⊢ (coeff R n) (φ ^ k) = ∑ l ∈ (range k).finsuppAntidiag n, ∏ i ∈ range k, (coeff R (l i)) φ
state_after: R✝ : Type u_1
R : Type u_2
inst✝¹ : CommSemiring R
ι : Type u_3
inst✝ : DecidableEq ι
k n : ℕ
φ : R⟦X⟧
h₁ : ∀ (i : ℕ), Function.const ℕ φ i = φ
h₂ : ∀ (i : ℕ), ∏ j ∈ range i, Function.const ℕ φ j = φ ^ i
⊢ (coeff R n) (φ ^ k) = ∑ l ∈ (range k).finsuppAntidiag n, ∏ i ∈ range k, (coeff R (l i)) φ
tactic: have h₂ (i : ℕ) : ∏ j ∈ range i, Function.const ℕ φ j = φ ^ i := by
    apply prod_range_induction (fun _ => φ) (fun i => φ ^ i) rfl (congrFun rfl) i
state_before: R✝ : Type u_1
R : Type u_2
inst✝¹ : CommSemiring R
ι : Type u_3
inst✝ : DecidableEq ι
k n : ℕ
φ : R⟦X⟧
h₁ : ∀ (i : ℕ), Function.const ℕ φ i = φ
h₂ : ∀ (i : ℕ), ∏ j ∈ range i, Function.const ℕ φ j = φ ^ i
⊢ (coeff R n) (φ ^ k) = ∑ l ∈ (range k).finsuppAntidiag n, ∏ i ∈ range k, (coeff R (l i)) φ
state_after: R✝ : Type u_1
R : Type u_2
inst✝¹ : CommSemiring R
ι : Type u_3
inst✝ : DecidableEq ι
k n : ℕ
φ : R⟦X⟧
h₁ : ∀ (i : ℕ), Function.const ℕ φ i = φ
h₂ : ∀ (i : ℕ), ∏ j ∈ range i, Function.const ℕ φ j = φ ^ i
⊢ (coeff R n) (∏ j ∈ range k, Function.const ℕ (Function.const ℕ φ k) j) =
    ∑ l ∈ (range k).finsuppAntidiag n, ∏ i ∈ range k, (coeff R (l i)) (Function.const ℕ φ k)
tactic: rw [← h₂, ← h₁ k]
state_before: R✝ : Type u_1
R : Type u_2
inst✝¹ : CommSemiring R
ι : Type u_3
inst✝ : DecidableEq ι
k n : ℕ
φ : R⟦X⟧
h₁ : ∀ (i : ℕ), Function.const ℕ φ i = φ
h₂ : ∀ (i : ℕ), ∏ j ∈ range i, Function.const ℕ φ j = φ ^ i
⊢ (coeff R n) (∏ j ∈ range k, Function.const ℕ (Function.const ℕ φ k) j) =
    ∑ l ∈ (range k).finsuppAntidiag n, ∏ i ∈ range k, (coeff R (l i)) (Function.const ℕ φ k)
state_after: no goals
tactic: apply coeff_prod (f := Function.const ℕ φ) (d := n) (s := range k)
Theorem: ProbabilityTheory.sum_meas_smul_cond_fiber
File: Mathlib/Probability/ConditionalProbability.lean

Proof steps:
state_before: Ω : Type u_1
Ω' : Type u_2
α : Type u_3
m : MeasurableSpace Ω
m' : MeasurableSpace Ω'
μ✝ : Measure Ω
s t : Set Ω
inst✝³ : Fintype α
inst✝² : MeasurableSpace α
inst✝¹ : DiscreteMeasurableSpace α
X : Ω → α
hX : Measurable X
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
⊢ ∑ x : α, μ (X ⁻¹' {x}) • μ[|X ⁻¹' {x}] = μ
state_after: case h
Ω : Type u_1
Ω' : Type u_2
α : Type u_3
m : MeasurableSpace Ω
m' : MeasurableSpace Ω'
μ✝ : Measure Ω
s t : Set Ω
inst✝³ : Fintype α
inst✝² : MeasurableSpace α
inst✝¹ : DiscreteMeasurableSpace α
X : Ω → α
hX : Measurable X
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
E : Set Ω
hE : MeasurableSet E
⊢ (∑ x : α, μ (X ⁻¹' {x}) • μ[|X ⁻¹' {x}]) E = μ E
tactic: ext E hE
state_before: case h
Ω : Type u_1
Ω' : Type u_2
α : Type u_3
m : MeasurableSpace Ω
m' : MeasurableSpace Ω'
μ✝ : Measure Ω
s t : Set Ω
inst✝³ : Fintype α
inst✝² : MeasurableSpace α
inst✝¹ : DiscreteMeasurableSpace α
X : Ω → α
hX : Measurable X
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
E : Set Ω
hE : MeasurableSet E
⊢ (∑ x : α, μ (X ⁻¹' {x}) • μ[|X ⁻¹' {x}]) E = μ E
state_after: no goals
tactic: calc
    _ = ∑ x, μ (X ⁻¹' {x} ∩ E) := by
      simp only [Measure.coe_finset_sum, Measure.coe_smul, Finset.sum_apply,
        Pi.smul_apply, smul_eq_mul]
      simp_rw [mul_comm (μ _), cond_mul_eq_inter _ (hX (.singleton _))]
    _ = _ := by
      have : ⋃ x ∈ Finset.univ, X ⁻¹' {x} ∩ E = E := by
        simp only [Finset.mem_univ, iUnion_true]; ext _; simp
      rw [← measure_biUnion_finset _ fun _ _ ↦ (hX (.singleton _)).inter hE, this]
      aesop (add simp [PairwiseDisjoint, Set.Pairwise, Function.onFun, disjoint_left])
Theorem: isGLB_biInf
File: Mathlib/Order/CompleteLattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f✝ g s✝ t : ι → α
a b : α
s : Set β
f : β → α
⊢ IsGLB (f '' s) (⨅ x ∈ s, f x)
state_after: no goals
tactic: simpa only [range_comp, Subtype.range_coe, iInf_subtype'] using
    @isGLB_iInf α s _ (f ∘ fun x => (x : β))
Theorem: bernsteinApproximation.apply
File: Mathlib/Analysis/SpecialFunctions/Bernstein.lean

Proof steps:
state_before: n : ℕ
f : C(↑I, ℝ)
x : ↑I
⊢ (bernsteinApproximation n f) x = ∑ k : Fin (n + 1), f k/ₙ * (bernstein n ↑k) x
state_after: no goals
tactic: simp [bernsteinApproximation]
Theorem: IsLindelof.elim_nhds_subcover
File: Mathlib/Topology/Compactness/Lindelof.lean

Proof steps:
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
hs : IsLindelof s
U : X → Set X
hU : ∀ x ∈ s, U x ∈ 𝓝 x
⊢ ∃ t, t.Countable ∧ (∀ x ∈ t, x ∈ s) ∧ s ⊆ ⋃ x ∈ t, U x
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
hs : IsLindelof s
U : X → Set X
hU : ∀ x ∈ s, U x ∈ 𝓝 x
t : Set ↑s
htc : t.Countable
htsub : s ⊆ ⋃ x ∈ t, U ↑x
⊢ ∃ t, t.Countable ∧ (∀ x ∈ t, x ∈ s) ∧ s ⊆ ⋃ x ∈ t, U x
tactic: let ⟨t, ⟨htc, htsub⟩⟩ := hs.elim_nhds_subcover' (fun x _ ↦ U x) hU
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
hs : IsLindelof s
U : X → Set X
hU : ∀ x ∈ s, U x ∈ 𝓝 x
t : Set ↑s
htc : t.Countable
htsub : s ⊆ ⋃ x ∈ t, U ↑x
⊢ ∃ t, t.Countable ∧ (∀ x ∈ t, x ∈ s) ∧ s ⊆ ⋃ x ∈ t, U x
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
hs : IsLindelof s
U : X → Set X
hU : ∀ x ∈ s, U x ∈ 𝓝 x
t : Set ↑s
htc : t.Countable
htsub : s ⊆ ⋃ x ∈ t, U ↑x
⊢ (∀ x ∈ Subtype.val '' t, x ∈ s) ∧ s ⊆ ⋃ x ∈ Subtype.val '' t, U x
tactic: refine ⟨↑t, Countable.image htc Subtype.val, ?_⟩
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
hs : IsLindelof s
U : X → Set X
hU : ∀ x ∈ s, U x ∈ 𝓝 x
t : Set ↑s
htc : t.Countable
htsub : s ⊆ ⋃ x ∈ t, U ↑x
⊢ (∀ x ∈ Subtype.val '' t, x ∈ s) ∧ s ⊆ ⋃ x ∈ Subtype.val '' t, U x
state_after: case left
X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
hs : IsLindelof s
U : X → Set X
hU : ∀ x ∈ s, U x ∈ 𝓝 x
t : Set ↑s
htc : t.Countable
htsub : s ⊆ ⋃ x ∈ t, U ↑x
⊢ ∀ x ∈ Subtype.val '' t, x ∈ s

case right
X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
hs : IsLindelof s
U : X → Set X
hU : ∀ x ∈ s, U x ∈ 𝓝 x
t : Set ↑s
htc : t.Countable
htsub : s ⊆ ⋃ x ∈ t, U ↑x
⊢ s ⊆ ⋃ x ∈ Subtype.val '' t, U x
tactic: constructor
Theorem: MeasureTheory.AEEqFun.comp_eq_mk
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 δ
g : β → γ
hg : Continuous g
f : α →ₘ[μ] β
⊢ comp g hg f = mk (g ∘ ↑f) ⋯
state_after: no goals
tactic: rw [← comp_mk g hg f f.aestronglyMeasurable, mk_coeFn]
Theorem: Mathlib.Meta.NormNum.IsNat.to_isInt
File: Mathlib/Tactic/NormNum/Result.lean

Proof steps:
state_before: α✝ : Type u
u : Level
α : Type u_1
inst✝ : Ring α
n✝ : ℕ
⊢ ↑n✝ = ↑(Int.ofNat n✝)
state_after: no goals
tactic: simp
Theorem: Set.preimage_const_mul_Ico
File: Mathlib/Data/Set/Pointwise/Interval.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a✝ a b c : α
h : 0 < c
⊢ (fun x => c * x) ⁻¹' Ico a b = Ico (a / c) (b / c)
state_after: no goals
tactic: simp [← Ici_inter_Iio, h]
Theorem: MeasureTheory.integrable_iff_integrableAtFilter_atBot_atTop
File: Mathlib/MeasureTheory/Function/LocallyIntegrable.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝⁷ : MeasurableSpace X
inst✝⁶ : TopologicalSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : TopologicalSpace Y
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
f g : X → E
μ : Measure X
s : Set X
inst✝¹ : LinearOrder X
inst✝ : CompactIccSpace X
⊢ Integrable f μ ↔ (IntegrableAtFilter f atBot μ ∧ IntegrableAtFilter f atTop μ) ∧ LocallyIntegrable f μ
state_after: case mp
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝⁷ : MeasurableSpace X
inst✝⁶ : TopologicalSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : TopologicalSpace Y
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
f g : X → E
μ : Measure X
s : Set X
inst✝¹ : LinearOrder X
inst✝ : CompactIccSpace X
⊢ Integrable f μ → (IntegrableAtFilter f atBot μ ∧ IntegrableAtFilter f atTop μ) ∧ LocallyIntegrable f μ

case mpr
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝⁷ : MeasurableSpace X
inst✝⁶ : TopologicalSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : TopologicalSpace Y
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
f g : X → E
μ : Measure X
s : Set X
inst✝¹ : LinearOrder X
inst✝ : CompactIccSpace X
⊢ (IntegrableAtFilter f atBot μ ∧ IntegrableAtFilter f atTop μ) ∧ LocallyIntegrable f μ → Integrable f μ
tactic: constructor
Theorem: eq_inv_smul_iff
File: Mathlib/Algebra/Group/Action/Defs.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
G : Type u_3
H : Type u_4
A : Type u_5
B : Type u_6
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
inst✝³ : Monoid M
inst✝² : MulAction M α
inst✝¹ : Group G
inst✝ : MulAction G α
g : G
a b : α
h : a = g⁻¹ • b
⊢ g • a = b
state_after: no goals
tactic: rw [h, smul_inv_smul]
state_before: M : Type u_1
N : Type u_2
G : Type u_3
H : Type u_4
A : Type u_5
B : Type u_6
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
inst✝³ : Monoid M
inst✝² : MulAction M α
inst✝¹ : Group G
inst✝ : MulAction G α
g : G
a b : α
h : g • a = b
⊢ a = g⁻¹ • b
state_after: no goals
tactic: rw [← h, inv_smul_smul]
Theorem: List.append_join_map_append
File: Mathlib/Data/List/Join.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
L : List (List α)
x : List α
⊢ x ++ (map (fun x_1 => x_1 ++ x) L).join = (map (fun x_1 => x ++ x_1) L).join ++ x
state_after: case nil
α : Type u_1
β : Type u_2
x : List α
⊢ x ++ (map (fun x_1 => x_1 ++ x) []).join = (map (fun x_1 => x ++ x_1) []).join ++ x

case cons
α : Type u_1
β : Type u_2
x head✝ : List α
tail✝ : List (List α)
ih : x ++ (map (fun x_1 => x_1 ++ x) tail✝).join = (map (fun x_1 => x ++ x_1) tail✝).join ++ x
⊢ x ++ (map (fun x_1 => x_1 ++ x) (head✝ :: tail✝)).join = (map (fun x_1 => x ++ x_1) (head✝ :: tail✝)).join ++ x
tactic: induction' L with _ _ ih
Theorem: FreeAddGroup.norm_neg_eq
File: Mathlib/GroupTheory/FreeGroup/Basic.lean

Proof steps:
state_before: α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
inst✝ : DecidableEq α
x : FreeGroup α
⊢ x⁻¹.norm = x.norm
state_after: no goals
tactic: simp only [norm, toWord_inv, invRev_length]
Theorem: CategoryTheory.Functor.isTriangulated_of_precomp
File: Mathlib/CategoryTheory/Triangulated/Functor.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
E : Type u_3
inst✝²² : Category.{u_4, u_1} C
inst✝²¹ : Category.{u_6, u_2} D
inst✝²⁰ : Category.{u_5, u_3} E
inst✝¹⁹ : HasShift C ℤ
inst✝¹⁸ : HasShift D ℤ
inst✝¹⁷ : HasShift E ℤ
F : C ⥤ D
inst✝¹⁶ : F.CommShift ℤ
G : D ⥤ E
inst✝¹⁵ : G.CommShift ℤ
inst✝¹⁴ : HasZeroObject C
inst✝¹³ : HasZeroObject D
inst✝¹² : HasZeroObject E
inst✝¹¹ : Preadditive C
inst✝¹⁰ : Preadditive D
inst✝⁹ : Preadditive E
inst✝⁸ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝⁷ : ∀ (n : ℤ), (shiftFunctor D n).Additive
inst✝⁶ : ∀ (n : ℤ), (shiftFunctor E n).Additive
inst✝⁵ : Pretriangulated C
inst✝⁴ : Pretriangulated D
inst✝³ : Pretriangulated E
inst✝² : (F ⋙ G).IsTriangulated
inst✝¹ : F.IsTriangulated
inst✝ : F.mapArrow.EssSurj
T : Triangle D
hT : T ∈ distinguishedTriangles
⊢ G.mapTriangle.obj T ∈ distinguishedTriangles
state_after: case intro.intro.intro
C : Type u_1
D : Type u_2
E : Type u_3
inst✝²² : Category.{u_4, u_1} C
inst✝²¹ : Category.{u_6, u_2} D
inst✝²⁰ : Category.{u_5, u_3} E
inst✝¹⁹ : HasShift C ℤ
inst✝¹⁸ : HasShift D ℤ
inst✝¹⁷ : HasShift E ℤ
F : C ⥤ D
inst✝¹⁶ : F.CommShift ℤ
G : D ⥤ E
inst✝¹⁵ : G.CommShift ℤ
inst✝¹⁴ : HasZeroObject C
inst✝¹³ : HasZeroObject D
inst✝¹² : HasZeroObject E
inst✝¹¹ : Preadditive C
inst✝¹⁰ : Preadditive D
inst✝⁹ : Preadditive E
inst✝⁸ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝⁷ : ∀ (n : ℤ), (shiftFunctor D n).Additive
inst✝⁶ : ∀ (n : ℤ), (shiftFunctor E n).Additive
inst✝⁵ : Pretriangulated C
inst✝⁴ : Pretriangulated D
inst✝³ : Pretriangulated E
inst✝² : (F ⋙ G).IsTriangulated
inst✝¹ : F.IsTriangulated
inst✝ : F.mapArrow.EssSurj
T : Triangle D
hT : T ∈ distinguishedTriangles
T' : Triangle C
hT' : T' ∈ distinguishedTriangles
e : F.mapTriangle.obj T' ≅ T
⊢ G.mapTriangle.obj T ∈ distinguishedTriangles
tactic: obtain ⟨T', hT', ⟨e⟩⟩ := F.mem_mapTriangle_essImage_of_distinguished T hT
state_before: case intro.intro.intro
C : Type u_1
D : Type u_2
E : Type u_3
inst✝²² : Category.{u_4, u_1} C
inst✝²¹ : Category.{u_6, u_2} D
inst✝²⁰ : Category.{u_5, u_3} E
inst✝¹⁹ : HasShift C ℤ
inst✝¹⁸ : HasShift D ℤ
inst✝¹⁷ : HasShift E ℤ
F : C ⥤ D
inst✝¹⁶ : F.CommShift ℤ
G : D ⥤ E
inst✝¹⁵ : G.CommShift ℤ
inst✝¹⁴ : HasZeroObject C
inst✝¹³ : HasZeroObject D
inst✝¹² : HasZeroObject E
inst✝¹¹ : Preadditive C
inst✝¹⁰ : Preadditive D
inst✝⁹ : Preadditive E
inst✝⁸ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝⁷ : ∀ (n : ℤ), (shiftFunctor D n).Additive
inst✝⁶ : ∀ (n : ℤ), (shiftFunctor E n).Additive
inst✝⁵ : Pretriangulated C
inst✝⁴ : Pretriangulated D
inst✝³ : Pretriangulated E
inst✝² : (F ⋙ G).IsTriangulated
inst✝¹ : F.IsTriangulated
inst✝ : F.mapArrow.EssSurj
T : Triangle D
hT : T ∈ distinguishedTriangles
T' : Triangle C
hT' : T' ∈ distinguishedTriangles
e : F.mapTriangle.obj T' ≅ T
⊢ G.mapTriangle.obj T ∈ distinguishedTriangles
state_after: no goals
tactic: exact isomorphic_distinguished _ ((F ⋙ G).map_distinguished T' hT') _
      (G.mapTriangle.mapIso e.symm ≪≫ (mapTriangleCompIso F G).symm.app _)
Theorem: WithBot.image_coe_Ici
File: Mathlib/Order/Interval/Set/WithBotTop.lean

Proof steps:
state_before: α : Type u_1
inst✝ : Preorder α
a b : α
⊢ some '' Ici a = Ici ↑a
state_after: no goals
tactic: rw [← preimage_coe_Ici, image_preimage_eq_inter_range, range_coe,
    inter_eq_self_of_subset_left (Ici_subset_Ioi.2 <| bot_lt_coe a)]
Theorem: HomologicalComplex.homotopyCofiber.inrX_sndX
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
i : ι
⊢ inrX φ i ≫ sndX φ i = 𝟙 (G.X i)
state_after: 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
i : ι
⊢ ((if hi : c.Rel i (c.next i) then biprod.inr ≫ (XIsoBiprod φ i (c.next i) hi).inv else (XIso φ i hi).inv) ≫
      if hi : c.Rel i (c.next i) then (XIsoBiprod φ i (c.next i) hi).hom ≫ biprod.snd else (XIso φ i hi).hom) =
    𝟙 (G.X i)
tactic: dsimp [sndX, inrX]
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
i : ι
⊢ ((if hi : c.Rel i (c.next i) then biprod.inr ≫ (XIsoBiprod φ i (c.next i) hi).inv else (XIso φ i hi).inv) ≫
      if hi : c.Rel i (c.next i) then (XIsoBiprod φ i (c.next i) hi).hom ≫ biprod.snd else (XIso φ i hi).hom) =
    𝟙 (G.X i)
state_after: no goals
tactic: split_ifs with hi <;> simp
Theorem: ConcaveOn.slope_le_of_hasDerivWithinAt
File: Mathlib/Analysis/Convex/Deriv.lean

Proof steps:
state_before: S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : ConcaveOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hfd : HasDerivWithinAt f f' S x
⊢ slope f x y ≤ f'
state_after: S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : ConcaveOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hfd : HasDerivWithinAt f f' S x
⊢ S ∈ 𝓝[>] x
tactic: refine hfc.slope_le_of_hasDerivWithinAt_Ioi hx hy hxy (hfd.mono_of_mem ?_)
state_before: S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : ConcaveOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hfd : HasDerivWithinAt f f' S x
⊢ S ∈ 𝓝[>] x
state_after: S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : ConcaveOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hfd : HasDerivWithinAt f f' S x
⊢ ∃ u ∈ Ioi x, Ioc x u ⊆ S
tactic: rw [mem_nhdsWithin_Ioi_iff_exists_Ioc_subset]
state_before: S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : ConcaveOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hfd : HasDerivWithinAt f f' S x
⊢ ∃ u ∈ Ioi x, Ioc x u ⊆ S
state_after: no goals
tactic: exact ⟨y, hxy, Ioc_subset_Icc_self.trans (hfc.1.ordConnected.out hx hy)⟩
Theorem: LieModule.Weight.hasEigenvalueAt
File: Mathlib/Algebra/Lie/Weights/Basic.lean

Proof steps:
state_before: K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
inst✝⁴ : LieAlgebra.IsNilpotent R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
χ : Weight R L M
x : L
⊢ ((toEnd R L M) x).HasEigenvalue (χ x)
state_after: case intro
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
inst✝⁴ : LieAlgebra.IsNilpotent R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
χ : Weight R L M
x : L
k : ℕ
hk : (((toEnd R L M) x).genEigenspace (χ x)) k ≠ ⊥
⊢ ((toEnd R L M) x).HasEigenvalue (χ x)
tactic: obtain ⟨k : ℕ, hk : (toEnd R L M x).genEigenspace (χ x) k ≠ ⊥⟩ := by
    simpa [Module.End.maxGenEigenspace, weightSpaceOf] using χ.weightSpaceOf_ne_bot x
state_before: case intro
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
inst✝⁴ : LieAlgebra.IsNilpotent R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
χ : Weight R L M
x : L
k : ℕ
hk : (((toEnd R L M) x).genEigenspace (χ x)) k ≠ ⊥
⊢ ((toEnd R L M) x).HasEigenvalue (χ x)
state_after: no goals
tactic: exact Module.End.hasEigenvalue_of_hasGenEigenvalue hk
Theorem: String.ltb_cons_addChar
File: Mathlib/Data/String/Basic.lean

Proof steps:
state_before: c : Char
cs₁ cs₂ : List Char
i₁ i₂ : Pos
⊢ ltb { s := { data := c :: cs₁ }, i := i₁ + c } { s := { data := c :: cs₂ }, i := i₂ + c } =
    ltb { s := { data := cs₁ }, i := i₁ } { s := { data := cs₂ }, i := i₂ }
state_after: case ind
c : Char
cs₁✝ cs₂✝ : List Char
i₁✝ i₂✝ : Pos
cs₁ cs₂ : List Char
i₁ i₂ : Pos
a✝³ : { s := { data := cs₂ }, i := i₂ }.hasNext = true
a✝² : { s := { data := cs₁ }, i := i₁ }.hasNext = true
a✝¹ : { data := cs₁ }.get i₁ = { data := cs₂ }.get i₂
a✝ :
  ltb
      { s := { data := c :: { s := { data := cs₁ }, i := i₁ }.next.1.data },
        i := { s := { data := cs₁ }, i := i₁ }.next.i + c }
      { s := { data := c :: { s := { data := cs₂ }, i := i₂ }.next.1.data },
        i := { s := { data := cs₂ }, i := i₂ }.next.i + c } =
    ltb
      { s := { data := { s := { data := cs₁ }, i := i₁ }.next.1.data }, i := { s := { data := cs₁ }, i := i₁ }.next.i }
      { s := { data := { s := { data := cs₂ }, i := i₂ }.next.1.data }, i := { s := { data := cs₂ }, i := i₂ }.next.i }
⊢ (if { s := { data := c :: cs₁ }, i := i₁ + c }.curr = { s := { data := c :: cs₂ }, i := i₂ + c }.curr then
      ltb { s := { data := c :: cs₁ }, i := i₁ + c }.next { s := { data := c :: cs₂ }, i := i₂ + c }.next
    else decide ({ s := { data := c :: cs₁ }, i := i₁ + c }.curr < { s := { data := c :: cs₂ }, i := i₂ + c }.curr)) =
    if { s := { data := cs₁ }, i := i₁ }.curr = { s := { data := cs₂ }, i := i₂ }.curr then
      ltb { s := { data := cs₁ }, i := i₁ }.next { s := { data := cs₂ }, i := i₂ }.next
    else decide ({ s := { data := cs₁ }, i := i₁ }.curr < { s := { data := cs₂ }, i := i₂ }.curr)

case eq
c : Char
cs₁✝ cs₂✝ : List Char
i₁✝ i₂✝ : Pos
cs₁ cs₂ : List Char
i₁ i₂ : Pos
a✝² : { s := { data := cs₂ }, i := i₂ }.hasNext = true
a✝¹ : { s := { data := cs₁ }, i := i₁ }.hasNext = true
a✝ : ¬{ data := cs₁ }.get i₁ = { data := cs₂ }.get i₂
⊢ (if { s := { data := c :: cs₁ }, i := i₁ + c }.curr = { s := { data := c :: cs₂ }, i := i₂ + c }.curr then
      ltb { s := { data := c :: cs₁ }, i := i₁ + c }.next { s := { data := c :: cs₂ }, i := i₂ + c }.next
    else decide ({ s := { data := c :: cs₁ }, i := i₁ + c }.curr < { s := { data := c :: cs₂ }, i := i₂ + c }.curr)) =
    if { s := { data := cs₁ }, i := i₁ }.curr = { s := { data := cs₂ }, i := i₂ }.curr then
      ltb { s := { data := cs₁ }, i := i₁ }.next { s := { data := cs₂ }, i := i₂ }.next
    else decide ({ s := { data := cs₁ }, i := i₁ }.curr < { s := { data := cs₂ }, i := i₂ }.curr)
tactic: apply ltb.inductionOn ⟨⟨cs₁⟩, i₁⟩ ⟨⟨cs₂⟩, i₂⟩ (motive := fun ⟨⟨cs₁⟩, i₁⟩ ⟨⟨cs₂⟩, i₂⟩ ↦
    ltb ⟨⟨c :: cs₁⟩, i₁ + c⟩ ⟨⟨c :: cs₂⟩, i₂ + c⟩ =
    ltb ⟨⟨cs₁⟩, i₁⟩ ⟨⟨cs₂⟩, i₂⟩) <;> simp only <;>
  intro ⟨cs₁⟩ ⟨cs₂⟩ i₁ i₂ <;>
  intros <;>
  (conv => lhs; unfold ltb) <;> (conv => rhs; unfold ltb) <;>
  simp only [Iterator.hasNext_cons_addChar, ite_false, ite_true, *]
Theorem: isEllSequence_id
File: Mathlib/NumberTheory/EllipticDivisibilitySequence.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : ℤ → R
f : R →+* S
x✝² x✝¹ x✝ : ℤ
⊢ id (x✝² + x✝¹) * id (x✝² - x✝¹) * id x✝ ^ 2 =
    id (x✝² + x✝) * id (x✝² - x✝) * id x✝¹ ^ 2 - id (x✝¹ + x✝) * id (x✝¹ - x✝) * id x✝² ^ 2
state_after: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : ℤ → R
f : R →+* S
x✝² x✝¹ x✝ : ℤ
⊢ (x✝² + x✝¹) * (x✝² - x✝¹) * x✝ ^ 2 = (x✝² + x✝) * (x✝² - x✝) * x✝¹ ^ 2 - (x✝¹ + x✝) * (x✝¹ - x✝) * x✝² ^ 2
tactic: simp only [id_eq]
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : ℤ → R
f : R →+* S
x✝² x✝¹ x✝ : ℤ
⊢ (x✝² + x✝¹) * (x✝² - x✝¹) * x✝ ^ 2 = (x✝² + x✝) * (x✝² - x✝) * x✝¹ ^ 2 - (x✝¹ + x✝) * (x✝¹ - x✝) * x✝² ^ 2
state_after: no goals
tactic: ring1
Theorem: SimpleGraph.adjMatrix_vecMul_apply
File: Mathlib/Combinatorics/SimpleGraph/AdjMatrix.lean

Proof steps:
state_before: V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype V
inst✝ : NonAssocSemiring α
v : V
vec : V → α
⊢ (vec ᵥ* adjMatrix α G) v = ∑ u ∈ G.neighborFinset v, vec u
state_after: V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype V
inst✝ : NonAssocSemiring α
v : V
vec : V → α
⊢ (vec ⬝ᵥ fun i => adjMatrix α G i v) = vec ⬝ᵥ adjMatrix α G v
tactic: simp only [← dotProduct_adjMatrix, vecMul]
state_before: V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype V
inst✝ : NonAssocSemiring α
v : V
vec : V → α
⊢ (vec ⬝ᵥ fun i => adjMatrix α G i v) = vec ⬝ᵥ adjMatrix α G v
state_after: V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype V
inst✝ : NonAssocSemiring α
v : V
vec : V → α
⊢ (fun i => adjMatrix α G i v) = adjMatrix α G v
tactic: refine congr rfl ?_
state_before: V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype V
inst✝ : NonAssocSemiring α
v : V
vec : V → α
⊢ (fun i => adjMatrix α G i v) = adjMatrix α G v
state_after: case h
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype V
inst✝ : NonAssocSemiring α
v : V
vec : V → α
x : V
⊢ adjMatrix α G x v = adjMatrix α G v x
tactic: ext x
state_before: case h
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype V
inst✝ : NonAssocSemiring α
v : V
vec : V → α
x : V
⊢ adjMatrix α G x v = adjMatrix α G v x
state_after: no goals
tactic: rw [← transpose_apply (adjMatrix α G) x v, transpose_adjMatrix]