ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: SemilatticeInf.ext_inf
File: Mathlib/Order/Lattice.lean

Proof steps:
state_before: α✝ : Type u
β : Type v
inst✝ : SemilatticeInf α✝
a b c✝ d : α✝
α : Type u_1
A B : SemilatticeInf α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
x y c : α
⊢ c ≤ x ⊓ y ↔ c ≤ x ⊓ y
state_after: α✝ : Type u
β : Type v
inst✝ : SemilatticeInf α✝
a b c✝ d : α✝
α : Type u_1
A B : SemilatticeInf α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
x y c : α
⊢ c ≤ x ⊓ y ↔ c ≤ x ∧ c ≤ y
tactic: simp only [le_inf_iff]
state_before: α✝ : Type u
β : Type v
inst✝ : SemilatticeInf α✝
a b c✝ d : α✝
α : Type u_1
A B : SemilatticeInf α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
x y c : α
⊢ c ≤ x ⊓ y ↔ c ≤ x ∧ c ≤ y
state_after: no goals
tactic: rw [← H, @le_inf_iff α A, H, H]
Theorem: SimpleGraph.dart_edge_eq_iff
File: Mathlib/Combinatorics/SimpleGraph/Dart.lean

Proof steps:
state_before: V : Type u_1
G : SimpleGraph V
⊢ ∀ (d₁ d₂ : G.Dart), d₁.edge = d₂.edge ↔ d₁ = d₂ ∨ d₁ = d₂.symm
state_after: case mk.mk
V : Type u_1
G : SimpleGraph V
p : V × V
hp : G.Adj p.1 p.2
q : V × V
hq : G.Adj q.1 q.2
⊢ { toProd := p, adj := hp }.edge = { toProd := q, adj := hq }.edge ↔
    { toProd := p, adj := hp } = { toProd := q, adj := hq } ∨
      { toProd := p, adj := hp } = { toProd := q, adj := hq }.symm
tactic: rintro ⟨p, hp⟩ ⟨q, hq⟩
state_before: case mk.mk
V : Type u_1
G : SimpleGraph V
p : V × V
hp : G.Adj p.1 p.2
q : V × V
hq : G.Adj q.1 q.2
⊢ { toProd := p, adj := hp }.edge = { toProd := q, adj := hq }.edge ↔
    { toProd := p, adj := hp } = { toProd := q, adj := hq } ∨
      { toProd := p, adj := hp } = { toProd := q, adj := hq }.symm
state_after: no goals
tactic: simp
Theorem: isCompact_range_of_support_subset_isCompact
File: Mathlib/Topology/Support.lean

Proof steps:
state_before: X : Type u_1
α : Type u_2
α' : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
M : Type u_7
E : Type u_8
R : Type u_9
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace α'
inst✝³ : One β
inst✝² : One γ
inst✝¹ : One δ
g : β → γ
f : α → β
f₂ : α → γ
m : β → γ → δ
x : α
inst✝ : TopologicalSpace β
hf : Continuous f
k : Set α
hk : IsCompact k
h'f : mulSupport f ⊆ k
⊢ IsCompact (range f)
state_after: case inl
X : Type u_1
α : Type u_2
α' : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
M : Type u_7
E : Type u_8
R : Type u_9
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace α'
inst✝³ : One β
inst✝² : One γ
inst✝¹ : One δ
g : β → γ
f : α → β
f₂ : α → γ
m : β → γ → δ
x : α
inst✝ : TopologicalSpace β
hf : Continuous f
k : Set α
hk : IsCompact k
h'f : mulSupport f ⊆ k
h2 : range f = f '' k
⊢ IsCompact (f '' k)

case inr
X : Type u_1
α : Type u_2
α' : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
M : Type u_7
E : Type u_8
R : Type u_9
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace α'
inst✝³ : One β
inst✝² : One γ
inst✝¹ : One δ
g : β → γ
f : α → β
f₂ : α → γ
m : β → γ → δ
x : α
inst✝ : TopologicalSpace β
hf : Continuous f
k : Set α
hk : IsCompact k
h'f : mulSupport f ⊆ k
h2 : range f = insert 1 (f '' k)
⊢ IsCompact (insert 1 (f '' k))
tactic: cases' range_eq_image_or_of_mulSupport_subset h'f with h2 h2 <;> rw [h2]
state_before: case inl
X : Type u_1
α : Type u_2
α' : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
M : Type u_7
E : Type u_8
R : Type u_9
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace α'
inst✝³ : One β
inst✝² : One γ
inst✝¹ : One δ
g : β → γ
f : α → β
f₂ : α → γ
m : β → γ → δ
x : α
inst✝ : TopologicalSpace β
hf : Continuous f
k : Set α
hk : IsCompact k
h'f : mulSupport f ⊆ k
h2 : range f = f '' k
⊢ IsCompact (f '' k)

case inr
X : Type u_1
α : Type u_2
α' : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
M : Type u_7
E : Type u_8
R : Type u_9
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace α'
inst✝³ : One β
inst✝² : One γ
inst✝¹ : One δ
g : β → γ
f : α → β
f₂ : α → γ
m : β → γ → δ
x : α
inst✝ : TopologicalSpace β
hf : Continuous f
k : Set α
hk : IsCompact k
h'f : mulSupport f ⊆ k
h2 : range f = insert 1 (f '' k)
⊢ IsCompact (insert 1 (f '' k))
state_after: no goals
tactic: exacts [hk.image hf, (hk.image hf).insert 1]
Theorem: ProbabilityTheory.Kernel.prodMkLeft_add
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 δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
κ η : Kernel α β
⊢ prodMkLeft γ (κ + η) = prodMkLeft γ κ + prodMkLeft γ η
state_after: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
δ : Type u_4
mδ : MeasurableSpace δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
κ η : Kernel α β
a✝¹ : γ × α
s✝ : Set β
a✝ : MeasurableSet s✝
⊢ ((prodMkLeft γ (κ + η)) a✝¹) s✝ = ((prodMkLeft γ κ + prodMkLeft γ η) a✝¹) s✝
tactic: ext
state_before: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
δ : Type u_4
mδ : MeasurableSpace δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
κ η : Kernel α β
a✝¹ : γ × α
s✝ : Set β
a✝ : MeasurableSet s✝
⊢ ((prodMkLeft γ (κ + η)) a✝¹) s✝ = ((prodMkLeft γ κ + prodMkLeft γ η) a✝¹) s✝
state_after: no goals
tactic: simp
Theorem: AddSubmonoid.LocalizationMap.eq'
File: Mathlib/GroupTheory/MonoidLocalization/Basic.lean

Proof steps:
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
a₁ b₁ : M
a₂ b₂ : ↥S
⊢ f.mk' a₁ a₂ = f.mk' b₁ b₂ ↔ (Localization.r S) (a₁, a₂) (b₁, b₂)
state_after: no goals
tactic: rw [f.eq, Localization.r_iff_exists]
Theorem: mul_invOf_eq_iff_eq_mul_right
File: Mathlib/Algebra/Group/Invertible/Defs.lean

Proof steps:
state_before: α : Type u
inst✝¹ : Monoid α
a b c : α
inst✝ : Invertible c
⊢ a * ⅟c = b ↔ a = b * c
state_after: no goals
tactic: rw [← mul_right_inj_of_invertible (c := c), mul_invOf_mul_self_cancel]
Theorem: monotoneOn_of_hasDerivWithinAt_nonneg
File: Mathlib/Analysis/Calculus/MeanValue.lean

Proof steps:
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
D : Set ℝ
hD : Convex ℝ D
f f' : ℝ → ℝ
hf : ContinuousOn f D
hf' : ∀ x ∈ interior D, HasDerivWithinAt f (f' x) (interior D) x
hf'₀ : ∀ x ∈ interior D, 0 ≤ f' x
x : ℝ
hx : x ∈ interior D
⊢ 0 ≤ deriv f x
state_after: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
D : Set ℝ
hD : Convex ℝ D
f f' : ℝ → ℝ
hf : ContinuousOn f D
hf' : ∀ x ∈ interior D, HasDerivWithinAt f (f' x) (interior D) x
hf'₀ : ∀ x ∈ interior D, 0 ≤ f' x
x : ℝ
hx : x ∈ interior D
⊢ 0 ≤ f' x
tactic: rw [deriv_eqOn isOpen_interior hf' hx]
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
D : Set ℝ
hD : Convex ℝ D
f f' : ℝ → ℝ
hf : ContinuousOn f D
hf' : ∀ x ∈ interior D, HasDerivWithinAt f (f' x) (interior D) x
hf'₀ : ∀ x ∈ interior D, 0 ≤ f' x
x : ℝ
hx : x ∈ interior D
⊢ 0 ≤ f' x
state_after: no goals
tactic: exact hf'₀ _ hx
Theorem: CategoryTheory.Limits.MonoCoprod.mono_of_injective_aux
File: Mathlib/CategoryTheory/Limits/MonoCoprod.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{u_4, u_1} C
inst✝ : MonoCoprod C
I : Type u_2
J : Type u_3
X : I → C
ι : J → I
hι : Function.Injective ι
c : Cofan X
c₁ : Cofan (X ∘ ι)
hc : IsColimit c
hc₁ : IsColimit c₁
c₂ : Cofan fun k => X ↑k
hc₂ : IsColimit c₂
⊢ Mono (Cofan.IsColimit.desc hc₁ fun i => c.inj (ι i))
state_after: no goals
tactic: classical
  let e := ((Equiv.ofInjective ι hι).sumCongr (Equiv.refl _)).trans (Equiv.Set.sumCompl _)
  refine mono_binaryCofanSum_inl' (Cofan.mk c.pt (fun i' => c.inj (e i'))) _ _ ?_
    hc₁ hc₂ _ (by simp [e])
  exact IsColimit.ofIsoColimit ((IsColimit.ofCoconeEquiv (Cocones.equivalenceOfReindexing
    (Discrete.equivalence e) (Iso.refl _))).symm hc) (Cocones.ext (Iso.refl _))
Theorem: Primrec.list_findIdx₁
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 : α → β → Bool
hp : Primrec₂ p
a : β
l : List β
n : α
⊢ (bif p (id n) a then 0 else (List.findIdx (p n) l).succ) = List.findIdx (p n) (a :: l)
state_after: no goals
tactic: simp [List.findIdx_cons]
Theorem: AddAction.Quotient.mk_vadd_out'
File: Mathlib/GroupTheory/GroupAction/Quotient.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : Group α
inst✝² : Monoid β
inst✝¹ : MulAction β α
H : Subgroup α
inst✝ : QuotientAction β H
b : β
q : α ⧸ H
⊢ ↑(b • Quotient.out' q) = b • q
state_after: no goals
tactic: rw [← Quotient.smul_mk, QuotientGroup.out_eq']
Theorem: List.ofFn_add
File: Mathlib/Data/List/OfFn.lean

Proof steps:
state_before: α : Type u
m n : ℕ
f : Fin (m + n) → α
⊢ ofFn f = (ofFn fun i => f (Fin.castAdd n i)) ++ ofFn fun j => f (Fin.natAdd m j)
state_after: case zero
α : Type u
m : ℕ
f : Fin (m + 0) → α
⊢ ofFn f = (ofFn fun i => f (Fin.castAdd 0 i)) ++ ofFn fun j => f (Fin.natAdd m j)

case succ
α : Type u
m n : ℕ
IH : ∀ (f : Fin (m + n) → α), ofFn f = (ofFn fun i => f (Fin.castAdd n i)) ++ ofFn fun j => f (Fin.natAdd m j)
f : Fin (m + (n + 1)) → α
⊢ ofFn f = (ofFn fun i => f (Fin.castAdd (n + 1) i)) ++ ofFn fun j => f (Fin.natAdd m j)
tactic: induction' n with n IH
Theorem: CategoryTheory.OverPresheafAux.YonedaCollection.ext
File: Mathlib/CategoryTheory/Comma/Presheaf.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X : C
p q : YonedaCollection F X
h : p.fst = q.fst
⊢ op (CostructuredArrow.mk q.fst) = op (CostructuredArrow.mk p.fst)
state_after: no goals
tactic: rw [h]
state_before: C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X : C
p q : YonedaCollection F X
h : p.fst = q.fst
h' : F.map (eqToHom ⋯) q.snd = p.snd
⊢ p = q
state_after: case mk
C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X : C
q : YonedaCollection F X
p : A.obj (op X)
p' : F.obj (op (CostructuredArrow.mk (yonedaEquiv.symm p)))
h : fst ⟨p, p'⟩ = q.fst
h' : F.map (eqToHom ⋯) q.snd = snd ⟨p, p'⟩
⊢ ⟨p, p'⟩ = q
tactic: rcases p with ⟨p, p'⟩
state_before: case mk
C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X : C
q : YonedaCollection F X
p : A.obj (op X)
p' : F.obj (op (CostructuredArrow.mk (yonedaEquiv.symm p)))
h : fst ⟨p, p'⟩ = q.fst
h' : F.map (eqToHom ⋯) q.snd = snd ⟨p, p'⟩
⊢ ⟨p, p'⟩ = q
state_after: case mk.mk
C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X : C
p : A.obj (op X)
p' : F.obj (op (CostructuredArrow.mk (yonedaEquiv.symm p)))
q : A.obj (op X)
q' : F.obj (op (CostructuredArrow.mk (yonedaEquiv.symm q)))
h : fst ⟨p, p'⟩ = fst ⟨q, q'⟩
h' : F.map (eqToHom ⋯) (snd ⟨q, q'⟩) = snd ⟨p, p'⟩
⊢ ⟨p, p'⟩ = ⟨q, q'⟩
tactic: rcases q with ⟨q, q'⟩
state_before: case mk.mk
C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X : C
p : A.obj (op X)
p' : F.obj (op (CostructuredArrow.mk (yonedaEquiv.symm p)))
q : A.obj (op X)
q' : F.obj (op (CostructuredArrow.mk (yonedaEquiv.symm q)))
h : fst ⟨p, p'⟩ = fst ⟨q, q'⟩
h' : F.map (eqToHom ⋯) (snd ⟨q, q'⟩) = snd ⟨p, p'⟩
⊢ ⟨p, p'⟩ = ⟨q, q'⟩
state_after: case mk.mk
C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X : C
p : A.obj (op X)
p' q' : F.obj (op (CostructuredArrow.mk (yonedaEquiv.symm p)))
h : fst ⟨p, p'⟩ = fst ⟨p, q'⟩
h' : F.map (eqToHom ⋯) (snd ⟨p, q'⟩) = snd ⟨p, p'⟩
⊢ ⟨p, p'⟩ = ⟨p, q'⟩
tactic: obtain rfl : p = q := yonedaEquiv.symm.injective h
state_before: case mk.mk
C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X : C
p : A.obj (op X)
p' q' : F.obj (op (CostructuredArrow.mk (yonedaEquiv.symm p)))
h : fst ⟨p, p'⟩ = fst ⟨p, q'⟩
h' : F.map (eqToHom ⋯) (snd ⟨p, q'⟩) = snd ⟨p, p'⟩
⊢ ⟨p, p'⟩ = ⟨p, q'⟩
state_after: no goals
tactic: exact Sigma.ext rfl (by simpa [snd] using h'.symm)
Theorem: ENNReal.one_lt_inv
File: Mathlib/Data/ENNReal/Inv.lean

Proof steps:
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
⊢ 1 < a⁻¹ ↔ a < 1
state_after: no goals
tactic: rw [lt_inv_iff_lt_inv, inv_one]
Theorem: Dilation.ratio_of_subsingleton
File: Mathlib/Topology/MetricSpace/Dilation.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
F : Type u_4
G : Type u_5
inst✝⁴ : PseudoEMetricSpace α
inst✝³ : PseudoEMetricSpace β
inst✝² : FunLike F α β
inst✝¹ : Subsingleton α
inst✝ : DilationClass F α β
f : F
x y : α
⊢ edist x y = 0 ∨ edist x y = ⊤
state_after: no goals
tactic: simp [Subsingleton.elim x y]
Theorem: ProbabilityTheory.Kernel.compProdFun_empty
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 γ
s : Set (β × γ)
κ : Kernel α β
η : Kernel (α × β) γ
a : α
⊢ κ.compProdFun η a ∅ = 0
state_after: no goals
tactic: simp only [compProdFun, Set.mem_empty_iff_false, Set.setOf_false, measure_empty,
    MeasureTheory.lintegral_const, zero_mul]
Theorem: AffineMap.lineMap_same_apply
File: Mathlib/LinearAlgebra/AffineSpace/AffineMap.lean

Proof steps:
state_before: k : Type u_1
V1 : Type u_2
P1 : Type u_3
V2 : Type u_4
P2 : Type u_5
V3 : Type u_6
P3 : Type u_7
V4 : Type u_8
P4 : Type u_9
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V1
inst✝¹⁰ : Module k V1
inst✝⁹ : AffineSpace V1 P1
inst✝⁸ : AddCommGroup V2
inst✝⁷ : Module k V2
inst✝⁶ : AffineSpace V2 P2
inst✝⁵ : AddCommGroup V3
inst✝⁴ : Module k V3
inst✝³ : AffineSpace V3 P3
inst✝² : AddCommGroup V4
inst✝¹ : Module k V4
inst✝ : AffineSpace V4 P4
p : P1
c : k
⊢ (lineMap p p) c = p
state_after: no goals
tactic: simp [lineMap_apply]
Theorem: CategoryTheory.ShortComplex.isoMk_inv
File: Mathlib/Algebra/Homology/ShortComplex/Basic.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.48026, u_1} C
inst✝² : Category.{?u.48030, u_2} D
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
e₁ : S₁.X₁ ≅ S₂.X₁
e₂ : S₁.X₂ ≅ S₂.X₂
e₃ : S₁.X₃ ≅ S₂.X₃
comm₁₂ : autoParam (e₁.hom ≫ S₂.f = S₁.f ≫ e₂.hom) _auto✝
comm₂₃ : autoParam (e₂.hom ≫ S₂.g = S₁.g ≫ e₃.hom) _auto✝
⊢ e₁.inv ≫ S₁.f = S₂.f ≫ e₂.inv
state_after: no goals
tactic: rw [← cancel_mono e₂.hom, assoc, assoc, e₂.inv_hom_id, comp_id,
          ← comm₁₂, e₁.inv_hom_id_assoc]
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.48026, u_1} C
inst✝² : Category.{?u.48030, u_2} D
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
e₁ : S₁.X₁ ≅ S₂.X₁
e₂ : S₁.X₂ ≅ S₂.X₂
e₃ : S₁.X₃ ≅ S₂.X₃
comm₁₂ : autoParam (e₁.hom ≫ S₂.f = S₁.f ≫ e₂.hom) _auto✝
comm₂₃ : autoParam (e₂.hom ≫ S₂.g = S₁.g ≫ e₃.hom) _auto✝
⊢ e₂.inv ≫ S₁.g = S₂.g ≫ e₃.inv
state_after: no goals
tactic: rw [← cancel_mono e₃.hom, assoc, assoc, e₃.inv_hom_id, comp_id,
          ← comm₂₃, e₂.inv_hom_id_assoc]
Theorem: CategoryTheory.Functor.Iteration.Hom.comp_natTrans
File: Mathlib/CategoryTheory/SmallObject/Iteration.lean

Proof steps:
state_before: C : Type u_1
inst✝³ : Category.{?u.33491, u_1} C
Φ : C ⥤ C
ε : 𝟭 C ⟶ Φ
J : Type u
inst✝² : LinearOrder J
inst✝¹ : IsWellOrder J fun x x_1 => x < x_1
inst✝ : OrderBot J
j : J
iter₁ iter₂ iter₃✝ iter₃ : Iteration ε j
f : iter₁.Hom iter₂
g : iter₂.Hom iter₃
i : J
hi : i < j
⊢ (f.natTrans ≫ g.natTrans).app ⟨wellOrderSucc i, ⋯⟩ =
    (iter₁.isoSucc i hi).hom ≫ whiskerRight ((f.natTrans ≫ g.natTrans).app ⟨i, ⋯⟩) Φ ≫ (iter₃.isoSucc i hi).inv
state_after: no goals
tactic: simp [natTrans_app_succ _ _ hi]
Theorem: Order.le_cof
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

Proof steps:
state_before: α : Type u_1
r✝ r : α → α → Prop
inst✝ : IsRefl α r
c : Cardinal.{u_1}
⊢ c ≤ cof r ↔ ∀ {S : Set α}, (∀ (a : α), ∃ b ∈ S, r a b) → c ≤ #↑S
state_after: α : Type u_1
r✝ r : α → α → Prop
inst✝ : IsRefl α r
c : Cardinal.{u_1}
⊢ (∀ b ∈ {c | ∃ S, (∀ (a : α), ∃ b ∈ S, r a b) ∧ #↑S = c}, c ≤ b) ↔ ∀ {S : Set α}, (∀ (a : α), ∃ b ∈ S, r a b) → c ≤ #↑S
tactic: rw [cof, le_csInf_iff'' (cof_nonempty r)]
state_before: α : Type u_1
r✝ r : α → α → Prop
inst✝ : IsRefl α r
c : Cardinal.{u_1}
⊢ (∀ b ∈ {c | ∃ S, (∀ (a : α), ∃ b ∈ S, r a b) ∧ #↑S = c}, c ≤ b) ↔ ∀ {S : Set α}, (∀ (a : α), ∃ b ∈ S, r a b) → c ≤ #↑S
state_after: case mpr
α : Type u_1
r✝ r : α → α → Prop
inst✝ : IsRefl α r
c : Cardinal.{u_1}
⊢ (∀ {S : Set α}, (∀ (a : α), ∃ b ∈ S, r a b) → c ≤ #↑S) → ∀ b ∈ {c | ∃ S, (∀ (a : α), ∃ b ∈ S, r a b) ∧ #↑S = c}, c ≤ b
tactic: use fun H S h => H _ ⟨S, h, rfl⟩
state_before: case mpr
α : Type u_1
r✝ r : α → α → Prop
inst✝ : IsRefl α r
c : Cardinal.{u_1}
⊢ (∀ {S : Set α}, (∀ (a : α), ∃ b ∈ S, r a b) → c ≤ #↑S) → ∀ b ∈ {c | ∃ S, (∀ (a : α), ∃ b ∈ S, r a b) ∧ #↑S = c}, c ≤ b
state_after: case mpr.intro.intro
α : Type u_1
r✝ r : α → α → Prop
inst✝ : IsRefl α r
c : Cardinal.{u_1}
H : ∀ {S : Set α}, (∀ (a : α), ∃ b ∈ S, r a b) → c ≤ #↑S
S : Set α
h : ∀ (a : α), ∃ b ∈ S, r a b
⊢ c ≤ #↑S
tactic: rintro H d ⟨S, h, rfl⟩
state_before: case mpr.intro.intro
α : Type u_1
r✝ r : α → α → Prop
inst✝ : IsRefl α r
c : Cardinal.{u_1}
H : ∀ {S : Set α}, (∀ (a : α), ∃ b ∈ S, r a b) → c ≤ #↑S
S : Set α
h : ∀ (a : α), ∃ b ∈ S, r a b
⊢ c ≤ #↑S
state_after: no goals
tactic: exact H h
Theorem: PartialEquiv.EqOnSource.target_eq
File: Mathlib/Logic/Equiv/PartialEquiv.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
e✝ : PartialEquiv α β
e'✝ : PartialEquiv β γ
e e' : PartialEquiv α β
h : e ≈ e'
⊢ e.target = e'.target
state_after: no goals
tactic: simp only [← image_source_eq_target, ← source_eq h, h.2.image_eq]
Theorem: ContinuousLinearEquiv.comp_differentiableOn_iff
File: Mathlib/Analysis/Calculus/FDeriv/Equiv.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s✝ t : Set E
L L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
f : G → E
s : Set G
⊢ DifferentiableOn 𝕜 (⇑iso ∘ f) s ↔ DifferentiableOn 𝕜 f s
state_after: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s✝ t : Set E
L L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
f : G → E
s : Set G
⊢ (∀ x ∈ s, DifferentiableWithinAt 𝕜 (⇑iso ∘ f) s x) ↔ ∀ x ∈ s, DifferentiableWithinAt 𝕜 f s x
tactic: rw [DifferentiableOn, DifferentiableOn]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s✝ t : Set E
L L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
f : G → E
s : Set G
⊢ (∀ x ∈ s, DifferentiableWithinAt 𝕜 (⇑iso ∘ f) s x) ↔ ∀ x ∈ s, DifferentiableWithinAt 𝕜 f s x
state_after: no goals
tactic: simp only [iso.comp_differentiableWithinAt_iff]
Theorem: Polynomial.degree_X_sub_C
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

Proof steps:
state_before: R : Type u
S : Type v
a✝ b c d : R
n m : ℕ
inst✝¹ : Ring R
inst✝ : Nontrivial R
a : R
⊢ (X - C a).degree = 1
state_after: no goals
tactic: rw [sub_eq_add_neg, ← map_neg C a, degree_X_add_C]
Theorem: CategoryTheory.Limits.Trident.equalizer_ext
File: Mathlib/CategoryTheory/Limits/Shapes/WideEqualizers.lean

Proof steps:
state_before: J : Type w
C : Type u
inst✝¹ : Category.{v, u} C
X Y : C
f : J → (X ⟶ Y)
inst✝ : Nonempty J
s : Trident f
W : C
k l : W ⟶ s.pt
h : k ≫ s.ι = l ≫ s.ι
⊢ k ≫ s.π.app one = l ≫ s.π.app one
state_after: no goals
tactic: rw [← s.app_zero (Classical.arbitrary J), reassoc_of% h]
Theorem: MeasureTheory.weightedSMul_union'
File: Mathlib/MeasureTheory/Integral/Bochner.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
m : MeasurableSpace α
μ : Measure α
s t : Set α
ht : MeasurableSet t
hs_finite : μ s ≠ ⊤
ht_finite : μ t ≠ ⊤
h_inter : s ∩ t = ∅
⊢ weightedSMul μ (s ∪ t) = weightedSMul μ s + weightedSMul μ t
state_after: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
m : MeasurableSpace α
μ : Measure α
s t : Set α
ht : MeasurableSet t
hs_finite : μ s ≠ ⊤
ht_finite : μ t ≠ ⊤
h_inter : s ∩ t = ∅
x : F
⊢ (weightedSMul μ (s ∪ t)) x = (weightedSMul μ s + weightedSMul μ t) x
tactic: ext1 x
state_before: case h
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
m : MeasurableSpace α
μ : Measure α
s t : Set α
ht : MeasurableSet t
hs_finite : μ s ≠ ⊤
ht_finite : μ t ≠ ⊤
h_inter : s ∩ t = ∅
x : F
⊢ (weightedSMul μ (s ∪ t)) x = (weightedSMul μ s + weightedSMul μ t) x
state_after: no goals
tactic: simp_rw [add_apply, weightedSMul_apply,
    measure_union (Set.disjoint_iff_inter_eq_empty.mpr h_inter) ht,
    ENNReal.toReal_add hs_finite ht_finite, add_smul]
Theorem: Polynomial.scaleRoots_zero
File: Mathlib/RingTheory/Polynomial/ScaleRoots.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
⊢ p.scaleRoots 0 = p.leadingCoeff • X ^ p.natDegree
state_after: case a
R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
n : ℕ
⊢ (p.scaleRoots 0).coeff n = (p.leadingCoeff • X ^ p.natDegree).coeff n
tactic: ext n
state_before: case a
R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
n : ℕ
⊢ (p.scaleRoots 0).coeff n = (p.leadingCoeff • X ^ p.natDegree).coeff n
state_after: case a
R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
n : ℕ
⊢ (if p.natDegree ≤ n then p.coeff n else 0) = if n = p.natDegree then p.leadingCoeff else 0
tactic: simp only [coeff_scaleRoots, ne_eq, tsub_eq_zero_iff_le, not_le, zero_pow_eq, mul_ite,
    mul_one, mul_zero, coeff_smul, coeff_X_pow, smul_eq_mul]
state_before: case a
R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
n : ℕ
⊢ (if p.natDegree ≤ n then p.coeff n else 0) = if n = p.natDegree then p.leadingCoeff else 0
state_after: case pos
R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
n : ℕ
h₁ : p.natDegree ≤ n
h₂ : n = p.natDegree
⊢ p.coeff n = p.leadingCoeff

case neg
R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
n : ℕ
h₁ : p.natDegree ≤ n
h₂ : ¬n = p.natDegree
⊢ p.coeff n = 0

case pos
R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
n : ℕ
h₁ : ¬p.natDegree ≤ n
h₂ : n = p.natDegree
⊢ 0 = p.leadingCoeff

case neg
R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
n : ℕ
h₁ : ¬p.natDegree ≤ n
h₂ : ¬n = p.natDegree
⊢ 0 = 0
tactic: split_ifs with h₁ h₂ h₂