ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: HomologicalComplex.i_cyclesMk
File: Mathlib/Algebra/Homology/ConcreteCategory.lean

Proof steps:
state_before: C : Type u
inst✝⁵ : Category.{v, u} C
inst✝⁴ : ConcreteCategory C
inst✝³ : HasForget₂ C Ab
inst✝² : Abelian C
inst✝¹ : (forget₂ C Ab).Additive
inst✝ : (forget₂ C Ab).PreservesHomology
ι : Type u_1
c : ComplexShape ι
K : HomologicalComplex C c
i : ι
x : ↑((forget₂ C Ab).obj (K.X i))
j : ι
hj : c.next i = j
hx : ((forget₂ C Ab).map (K.d i j)) x = 0
⊢ ((forget₂ C Ab).map (K.iCycles i)) (K.cyclesMk x j hj hx) = x
state_after: C : Type u
inst✝⁵ : Category.{v, u} C
inst✝⁴ : ConcreteCategory C
inst✝³ : HasForget₂ C Ab
inst✝² : Abelian C
inst✝¹ : (forget₂ C Ab).Additive
inst✝ : (forget₂ C Ab).PreservesHomology
ι : Type u_1
c : ComplexShape ι
K : HomologicalComplex C c
i : ι
x : ↑((forget₂ C Ab).obj (K.X i))
hx : ((forget₂ C Ab).map (K.d i (c.next i))) x = 0
⊢ ((forget₂ C Ab).map (K.iCycles i)) (K.cyclesMk x (c.next i) ⋯ hx) = x
tactic: subst hj
state_before: C : Type u
inst✝⁵ : Category.{v, u} C
inst✝⁴ : ConcreteCategory C
inst✝³ : HasForget₂ C Ab
inst✝² : Abelian C
inst✝¹ : (forget₂ C Ab).Additive
inst✝ : (forget₂ C Ab).PreservesHomology
ι : Type u_1
c : ComplexShape ι
K : HomologicalComplex C c
i : ι
x : ↑((forget₂ C Ab).obj (K.X i))
hx : ((forget₂ C Ab).map (K.d i (c.next i))) x = 0
⊢ ((forget₂ C Ab).map (K.iCycles i)) (K.cyclesMk x (c.next i) ⋯ hx) = x
state_after: no goals
tactic: apply (K.sc i).i_cyclesMk
Theorem: MulLECancellable.mul_le_iff_le_one_right
File: Mathlib/Algebra/Order/Monoid/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : LE α
inst✝¹ : MulOneClass α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b : α
ha : MulLECancellable a
⊢ a * b ≤ a ↔ a * b ≤ a * 1
state_after: no goals
tactic: rw [mul_one]
Theorem: regularSpace_sInf
File: Mathlib/Topology/Separation.lean

Proof steps:
state_before: X✝ : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X✝
inst✝ : RegularSpace X✝
x : X✝
s : Set X✝
X : Type u_3
T : Set (TopologicalSpace X)
h : ∀ t ∈ T, RegularSpace X
⊢ RegularSpace X
state_after: X✝ : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X✝
inst✝ : RegularSpace X✝
x : X✝
s : Set X✝
X : Type u_3
T : Set (TopologicalSpace X)
h : ∀ t ∈ T, RegularSpace X
x✝ : TopologicalSpace X := sInf T
⊢ RegularSpace X
tactic: let _ := sInf T
state_before: X✝ : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X✝
inst✝ : RegularSpace X✝
x : X✝
s : Set X✝
X : Type u_3
T : Set (TopologicalSpace X)
h : ∀ t ∈ T, RegularSpace X
x✝ : TopologicalSpace X := sInf T
⊢ RegularSpace X
state_after: X✝ : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X✝
inst✝ : RegularSpace X✝
x : X✝
s : Set X✝
X : Type u_3
T : Set (TopologicalSpace X)
h : ∀ t ∈ T, RegularSpace X
x✝ : TopologicalSpace X := sInf T
this :
  ∀ (a : X),
    (𝓝 a).HasBasis (fun If => If.fst.Finite ∧ ∀ (i : ↑If.fst), If.snd i ∈ 𝓝 a ∧ IsClosed (If.snd i)) fun If =>
      ⋂ i, If.snd i
⊢ RegularSpace X
tactic: have : ∀ a, (𝓝 a).HasBasis
      (fun If : Σ I : Set T, I → Set X =>
        If.1.Finite ∧ ∀ i : If.1, If.2 i ∈ @nhds X i a ∧ @IsClosed X i (If.2 i))
      fun If => ⋂ i : If.1, If.snd i := fun a ↦ by
    rw [nhds_sInf, ← iInf_subtype'']
    exact hasBasis_iInf fun t : T => @closed_nhds_basis X t (h t t.2) a
state_before: X✝ : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X✝
inst✝ : RegularSpace X✝
x : X✝
s : Set X✝
X : Type u_3
T : Set (TopologicalSpace X)
h : ∀ t ∈ T, RegularSpace X
x✝ : TopologicalSpace X := sInf T
this :
  ∀ (a : X),
    (𝓝 a).HasBasis (fun If => If.fst.Finite ∧ ∀ (i : ↑If.fst), If.snd i ∈ 𝓝 a ∧ IsClosed (If.snd i)) fun If =>
      ⋂ i, If.snd i
⊢ RegularSpace X
state_after: X✝ : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X✝
inst✝ : RegularSpace X✝
x : X✝
s : Set X✝
X : Type u_3
T : Set (TopologicalSpace X)
h : ∀ t ∈ T, RegularSpace X
x✝ : TopologicalSpace X := sInf T
this :
  ∀ (a : X),
    (𝓝 a).HasBasis (fun If => If.fst.Finite ∧ ∀ (i : ↑If.fst), If.snd i ∈ 𝓝 a ∧ IsClosed (If.snd i)) fun If =>
      ⋂ i, If.snd i
a : X
If : (I : Set ↑T) × (↑I → Set X)
hIf : If.fst.Finite ∧ ∀ (i : ↑If.fst), If.snd i ∈ 𝓝 a ∧ IsClosed (If.snd i)
i : ↑If.fst
⊢ IsClosed (If.snd i)
tactic: refine .of_hasBasis this fun a If hIf => isClosed_iInter fun i => ?_
state_before: X✝ : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X✝
inst✝ : RegularSpace X✝
x : X✝
s : Set X✝
X : Type u_3
T : Set (TopologicalSpace X)
h : ∀ t ∈ T, RegularSpace X
x✝ : TopologicalSpace X := sInf T
this :
  ∀ (a : X),
    (𝓝 a).HasBasis (fun If => If.fst.Finite ∧ ∀ (i : ↑If.fst), If.snd i ∈ 𝓝 a ∧ IsClosed (If.snd i)) fun If =>
      ⋂ i, If.snd i
a : X
If : (I : Set ↑T) × (↑I → Set X)
hIf : If.fst.Finite ∧ ∀ (i : ↑If.fst), If.snd i ∈ 𝓝 a ∧ IsClosed (If.snd i)
i : ↑If.fst
⊢ IsClosed (If.snd i)
state_after: no goals
tactic: exact (hIf.2 i).2.mono (sInf_le (i : T).2)
Theorem: List.modifyNth_eq_set_get?
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

Proof steps:
state_before: α : Type u_1
f : α → α
l : List α
⊢ modifyNth f 0 l = ((fun a => l.set 0 (f a)) <$> l.get? 0).getD l
state_after: no goals
tactic: cases l <;> rfl
state_before: α : Type u_1
f : α → α
n : Nat
b : α
l : List α
⊢ b :: ((fun a => l.set n (f a)) <$> l.get? n).getD l =
    ((fun a => (b :: l).set (n + 1) (f a)) <$> (b :: l).get? (n + 1)).getD (b :: l)
state_after: no goals
tactic: cases h : l[n]? <;> simp [h]
Theorem: nhdsWithin_univ
File: Mathlib/Topology/ContinuousOn.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : TopologicalSpace α
a : α
⊢ 𝓝[univ] a = 𝓝 a
state_after: no goals
tactic: rw [nhdsWithin, principal_univ, inf_top_eq]
Theorem: Submonoid.mem_sSup_of_mem
File: Mathlib/Algebra/Group/Submonoid/Membership.lean

Proof steps:
state_before: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : MulOneClass M
S : Set (Submonoid M)
s : Submonoid M
hs : s ∈ S
⊢ ∀ {x : M}, x ∈ s → x ∈ sSup S
state_after: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : MulOneClass M
S : Set (Submonoid M)
s : Submonoid M
hs : s ∈ S
⊢ s ≤ sSup S
tactic: rw [← SetLike.le_def]
state_before: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : MulOneClass M
S : Set (Submonoid M)
s : Submonoid M
hs : s ∈ S
⊢ s ≤ sSup S
state_after: no goals
tactic: exact le_sSup hs
Theorem: padicValNat.pow_sub_pow
File: Mathlib/NumberTheory/Multiplicity.lean

Proof steps:
state_before: R : Type u_1
n✝ x y p : ℕ
hp : Fact (Nat.Prime p)
hp1 : Odd p
hyx : y < x
hxy : p ∣ x - y
hx : ¬p ∣ x
n : ℕ
hn : n ≠ 0
⊢ padicValNat p (x ^ n - y ^ n) = padicValNat p (x - y) + padicValNat p n
state_after: R : Type u_1
n✝ x y p : ℕ
hp : Fact (Nat.Prime p)
hp1 : Odd p
hyx : y < x
hxy : p ∣ x - y
hx : ¬p ∣ x
n : ℕ
hn : n ≠ 0
⊢ ↑(padicValNat p (x ^ n - y ^ n)) = ↑(padicValNat p (x - y)) + ↑(padicValNat p n)
tactic: rw [← PartENat.natCast_inj, Nat.cast_add]
state_before: R : Type u_1
n✝ x y p : ℕ
hp : Fact (Nat.Prime p)
hp1 : Odd p
hyx : y < x
hxy : p ∣ x - y
hx : ¬p ∣ x
n : ℕ
hn : n ≠ 0
⊢ ↑(padicValNat p (x ^ n - y ^ n)) = ↑(padicValNat p (x - y)) + ↑(padicValNat p n)
state_after: R : Type u_1
n✝ x y p : ℕ
hp : Fact (Nat.Prime p)
hp1 : Odd p
hyx : y < x
hxy : p ∣ x - y
hx : ¬p ∣ x
n : ℕ
hn : n ≠ 0
⊢ multiplicity p (x ^ n - y ^ n) = multiplicity p (x - y) + multiplicity p n

R : Type u_1
n✝ x y p : ℕ
hp : Fact (Nat.Prime p)
hp1 : Odd p
hyx : y < x
hxy : p ∣ x - y
hx : ¬p ∣ x
n : ℕ
hn : n ≠ 0
⊢ 0 < n

R : Type u_1
n✝ x y p : ℕ
hp : Fact (Nat.Prime p)
hp1 : Odd p
hyx : y < x
hxy : p ∣ x - y
hx : ¬p ∣ x
n : ℕ
hn : n ≠ 0
⊢ 0 < x - y

R : Type u_1
n✝ x y p : ℕ
hp : Fact (Nat.Prime p)
hp1 : Odd p
hyx : y < x
hxy : p ∣ x - y
hx : ¬p ∣ x
n : ℕ
hn : n ≠ 0
⊢ 0 < x ^ n - y ^ n
tactic: iterate 3 rw [padicValNat_def, PartENat.natCast_get]
Theorem: intervalIntegral.continuousOn_primitive_interval'
File: Mathlib/MeasureTheory/Integral/DominatedConvergence.lean

Proof steps:
state_before: E : Type u_1
X : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : TopologicalSpace X
a b b₀ b₁ b₂ : ℝ
μ : Measure ℝ
f : ℝ → E
inst✝ : NoAtoms μ
h_int : IntervalIntegrable f μ b₁ b₂
ha : a ∈ [[b₁, b₂]]
x✝¹ : ℝ
x✝ : x✝¹ ∈ [[b₁, b₂]]
⊢ ContinuousWithinAt (fun b => ∫ (x : ℝ) in a..b, f x ∂μ) [[b₁, b₂]] x✝¹
state_after: E : Type u_1
X : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : TopologicalSpace X
a b b₀ b₁ b₂ : ℝ
μ : Measure ℝ
f : ℝ → E
inst✝ : NoAtoms μ
h_int : IntervalIntegrable f μ b₁ b₂
ha : a ∈ [[b₁, b₂]]
x✝¹ : ℝ
x✝ : x✝¹ ∈ [[b₁, b₂]]
⊢ IntervalIntegrable f μ (min a (b₁ ⊓ b₂)) (max a (b₁ ⊔ b₂))
tactic: refine continuousWithinAt_primitive (measure_singleton _) ?_
state_before: E : Type u_1
X : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : TopologicalSpace X
a b b₀ b₁ b₂ : ℝ
μ : Measure ℝ
f : ℝ → E
inst✝ : NoAtoms μ
h_int : IntervalIntegrable f μ b₁ b₂
ha : a ∈ [[b₁, b₂]]
x✝¹ : ℝ
x✝ : x✝¹ ∈ [[b₁, b₂]]
⊢ IntervalIntegrable f μ (min a (b₁ ⊓ b₂)) (max a (b₁ ⊔ b₂))
state_after: E : Type u_1
X : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : TopologicalSpace X
a b b₀ b₁ b₂ : ℝ
μ : Measure ℝ
f : ℝ → E
inst✝ : NoAtoms μ
h_int : IntervalIntegrable f μ b₁ b₂
ha : a ∈ [[b₁, b₂]]
x✝¹ : ℝ
x✝ : x✝¹ ∈ [[b₁, b₂]]
⊢ IntervalIntegrable f μ (b₁ ⊓ b₂) (b₁ ⊔ b₂)
tactic: rw [min_eq_right ha.1, max_eq_right ha.2]
state_before: E : Type u_1
X : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : TopologicalSpace X
a b b₀ b₁ b₂ : ℝ
μ : Measure ℝ
f : ℝ → E
inst✝ : NoAtoms μ
h_int : IntervalIntegrable f μ b₁ b₂
ha : a ∈ [[b₁, b₂]]
x✝¹ : ℝ
x✝ : x✝¹ ∈ [[b₁, b₂]]
⊢ IntervalIntegrable f μ (b₁ ⊓ b₂) (b₁ ⊔ b₂)
state_after: no goals
tactic: simpa [intervalIntegrable_iff, uIoc] using h_int
Theorem: Cardinal.nfpFamily_lt_ord_of_isRegular
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

Proof steps:
state_before: α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Ordinal.{u} → Ordinal.{u}
c : Cardinal.{u}
hc : c.IsRegular
hι : #ι < c
hc' : c ≠ ℵ₀
a : Ordinal.{u}
hf : ∀ (i : ι), ∀ b < c.ord, f i b < c.ord
⊢ lift.{u, u} #ι < c
state_after: no goals
tactic: rwa [lift_id]
Theorem: CategoryTheory.Limits.PreservesLimitPair.iso_inv_fst
File: Mathlib/CategoryTheory/Limits/Preserves/Shapes/BinaryProducts.lean

Proof steps:
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
G : C ⥤ D
P X Y Z : C
f : P ⟶ X
g : P ⟶ Y
inst✝² : HasBinaryProduct X Y
inst✝¹ : HasBinaryProduct (G.obj X) (G.obj Y)
inst✝ : PreservesLimit (pair X Y) G
⊢ (iso G X Y).inv ≫ G.map prod.fst = prod.fst
state_after: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
G : C ⥤ D
P X Y Z : C
f : P ⟶ X
g : P ⟶ Y
inst✝² : HasBinaryProduct X Y
inst✝¹ : HasBinaryProduct (G.obj X) (G.obj Y)
inst✝ : PreservesLimit (pair X Y) G
⊢ 𝟙 (G.obj (X ⨯ Y)) ≫ G.map prod.fst = (iso G X Y).hom ≫ prod.fst
tactic: rw [← Iso.cancel_iso_hom_left (PreservesLimitPair.iso G X Y), ← Category.assoc, Iso.hom_inv_id]
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
G : C ⥤ D
P X Y Z : C
f : P ⟶ X
g : P ⟶ Y
inst✝² : HasBinaryProduct X Y
inst✝¹ : HasBinaryProduct (G.obj X) (G.obj Y)
inst✝ : PreservesLimit (pair X Y) G
⊢ 𝟙 (G.obj (X ⨯ Y)) ≫ G.map prod.fst = (iso G X Y).hom ≫ prod.fst
state_after: no goals
tactic: simp
Theorem: Unitization.isSelfAdjoint_inr
File: Mathlib/Algebra/Algebra/Unitization.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid A
inst✝³ : Mul A
inst✝² : SMulWithZero R A
inst✝¹ : StarAddMonoid R
inst✝ : Star A
a : A
⊢ IsSelfAdjoint ↑a ↔ IsSelfAdjoint a
state_after: no goals
tactic: simp only [isSelfAdjoint_iff, ← inr_star, ← inr_mul, inr_injective.eq_iff]
Theorem: Topology.IsScott.isOpen_iff_Iic_compl_or_univ
File: Mathlib/Topology/Order/ScottTopology.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : CompleteLinearOrder α
inst✝¹ : TopologicalSpace α
inst✝ : IsScott α
U : Set α
⊢ IsOpen U ↔ (∃ a, U = (Iic a)ᶜ) ∨ U = univ
state_after: case mp
α : Type u_1
β : Type u_2
inst✝² : CompleteLinearOrder α
inst✝¹ : TopologicalSpace α
inst✝ : IsScott α
U : Set α
⊢ IsOpen U → (∃ a, U = (Iic a)ᶜ) ∨ U = univ

case mpr
α : Type u_1
β : Type u_2
inst✝² : CompleteLinearOrder α
inst✝¹ : TopologicalSpace α
inst✝ : IsScott α
U : Set α
⊢ (∃ a, U = (Iic a)ᶜ) ∨ U = univ → IsOpen U
tactic: constructor
Theorem: LieModule.chainTop_zero
File: Mathlib/Algebra/Lie/Weights/Chain.lean

Proof steps:
state_before: R : Type u_1
L : Type u_2
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : NoZeroSMulDivisors ℤ R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : IsNoetherian R M
α : L → R
β : Weight R L M
hα : α ≠ 0
⊢ chainTop 0 β = β
state_after: case h
R : Type u_1
L : Type u_2
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : NoZeroSMulDivisors ℤ R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : IsNoetherian R M
α : L → R
β : Weight R L M
hα : α ≠ 0
x✝ : L
⊢ (chainTop 0 β) x✝ = β x✝
tactic: ext
state_before: case h
R : Type u_1
L : Type u_2
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : NoZeroSMulDivisors ℤ R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : IsNoetherian R M
α : L → R
β : Weight R L M
hα : α ≠ 0
x✝ : L
⊢ (chainTop 0 β) x✝ = β x✝
state_after: no goals
tactic: simp
Theorem: Real.rpow_le_one_of_one_le_of_nonpos
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

Proof steps:
state_before: x✝ y z✝ : ℝ
n : ℕ
x z : ℝ
hx : 1 ≤ x
hz : z ≤ 0
⊢ x ^ z ≤ 1
state_after: case h.e'_4
x✝ y z✝ : ℝ
n : ℕ
x z : ℝ
hx : 1 ≤ x
hz : z ≤ 0
⊢ 1 = x ^ 0
tactic: convert rpow_le_rpow_of_exponent_le hx hz
state_before: case h.e'_4
x✝ y z✝ : ℝ
n : ℕ
x z : ℝ
hx : 1 ≤ x
hz : z ≤ 0
⊢ 1 = x ^ 0
state_after: no goals
tactic: exact (rpow_zero x).symm
Theorem: CategoryTheory.Functor.isLeftKanExtension_iff_of_iso
File: Mathlib/CategoryTheory/Functor/KanExtension/Basic.lean

Proof steps:
state_before: C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁶ : Category.{u_9, u_1} C
inst✝⁵ : Category.{?u.49148, u_2} C'
inst✝⁴ : Category.{u_8, u_3} H
inst✝³ : Category.{?u.49156, u_4} H'
inst✝² : Category.{u_7, u_5} D
inst✝¹ : Category.{?u.49164, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : F✝ ⟶ L✝ ⋙ F'✝
inst✝ : F'✝.IsLeftKanExtension α✝
F' F'' : D ⥤ H
e : F' ≅ F''
L : C ⥤ D
F : C ⥤ H
α : F ⟶ L ⋙ F'
α' : F ⟶ L ⋙ F''
comm : α ≫ whiskerLeft L e.hom = α'
⊢ F'.IsLeftKanExtension α ↔ F''.IsLeftKanExtension α'
state_after: case mp
C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁶ : Category.{u_9, u_1} C
inst✝⁵ : Category.{?u.49148, u_2} C'
inst✝⁴ : Category.{u_8, u_3} H
inst✝³ : Category.{?u.49156, u_4} H'
inst✝² : Category.{u_7, u_5} D
inst✝¹ : Category.{?u.49164, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : F✝ ⟶ L✝ ⋙ F'✝
inst✝ : F'✝.IsLeftKanExtension α✝
F' F'' : D ⥤ H
e : F' ≅ F''
L : C ⥤ D
F : C ⥤ H
α : F ⟶ L ⋙ F'
α' : F ⟶ L ⋙ F''
comm : α ≫ whiskerLeft L e.hom = α'
⊢ F'.IsLeftKanExtension α → F''.IsLeftKanExtension α'

case mpr
C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁶ : Category.{u_9, u_1} C
inst✝⁵ : Category.{?u.49148, u_2} C'
inst✝⁴ : Category.{u_8, u_3} H
inst✝³ : Category.{?u.49156, u_4} H'
inst✝² : Category.{u_7, u_5} D
inst✝¹ : Category.{?u.49164, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : F✝ ⟶ L✝ ⋙ F'✝
inst✝ : F'✝.IsLeftKanExtension α✝
F' F'' : D ⥤ H
e : F' ≅ F''
L : C ⥤ D
F : C ⥤ H
α : F ⟶ L ⋙ F'
α' : F ⟶ L ⋙ F''
comm : α ≫ whiskerLeft L e.hom = α'
⊢ F''.IsLeftKanExtension α' → F'.IsLeftKanExtension α
tactic: constructor
Theorem: CategoryTheory.NatIso.cancel_natIso_hom_left
File: Mathlib/CategoryTheory/NatIso.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
F G : C ⥤ D
α : F ≅ G
X : C
Z : D
g g' : G.obj X ⟶ Z
⊢ α.hom.app X ≫ g = α.hom.app X ≫ g' ↔ g = g'
state_after: no goals
tactic: simp only [cancel_epi, refl]
Theorem: Polynomial.degree_eq_iff_natDegree_eq_of_pos
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✝ : Semiring R
p✝ q r p : R[X]
n : ℕ
hn : 0 < n
⊢ p.degree = ↑n ↔ p.natDegree = n
state_after: case inl
R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p q r : R[X]
n : ℕ
hn : 0 < n
⊢ degree 0 = ↑n ↔ natDegree 0 = n

case inr
R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
n : ℕ
hn : 0 < n
h : p ≠ 0
⊢ p.degree = ↑n ↔ p.natDegree = n
tactic: obtain rfl|h := eq_or_ne p 0
Theorem: MeasureTheory.integral_singleton'
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 E
inst✝¹⁰ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝⁹ : NontriviallyNormedField 𝕜
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : SMulCommClass ℝ 𝕜 E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : CompleteSpace F
G : Type u_5
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace ℝ G
f✝ g : α → E
m : MeasurableSpace α
μ✝ : Measure α
X : Type u_6
inst✝¹ : TopologicalSpace X
inst✝ : FirstCountableTopology X
ν μ : Measure α
f : α → E
hf : StronglyMeasurable f
a : α
⊢ ∫ (a : α) in {a}, f a ∂μ = (μ {a}).toReal • f a
state_after: no goals
tactic: simp only [Measure.restrict_singleton, integral_smul_measure, integral_dirac' f a hf, smul_eq_mul,
    mul_comm]
Theorem: add_mem_cancel_right
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

Proof steps:
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁷ : Group G
inst✝⁶ : Group G'
inst✝⁵ : Group G''
A : Type u_4
inst✝⁴ : AddGroup A
M : Type u_5
S : Type u_6
inst✝³ : DivInvMonoid M
inst✝² : SetLike S M
hSM : SubgroupClass S M
H K : S
inst✝¹ : SetLike S G
inst✝ : SubgroupClass S G
x y : G
h : x ∈ H
hba : y * x ∈ H
⊢ y ∈ H
state_after: no goals
tactic: simpa using mul_mem hba (inv_mem h)
Theorem: PerfectRing.toPerfectField
File: Mathlib/FieldTheory/Perfect.lean

Proof steps:
state_before: K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
⊢ PerfectField K
state_after: case zero
K : Type u_1
inst✝³ : Field K
inst✝² : CharZero K
inst✝¹ : ExpChar K 1
inst✝ : PerfectRing K 1
⊢ PerfectField K

case prime
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
⊢ PerfectField K
tactic: obtain hp | ⟨hp⟩ := ‹ExpChar K p›
state_before: case prime
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
⊢ PerfectField K
state_after: case prime
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
f✝ : K[X]
hf : Irreducible f✝
⊢ f✝.Separable
tactic: refine PerfectField.mk fun hf ↦ ?_
state_before: case prime
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
f✝ : K[X]
hf : Irreducible f✝
⊢ f✝.Separable
state_after: case prime.inl
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
f✝ : K[X]
hf : Irreducible f✝
h : f✝.Separable
⊢ f✝.Separable

case prime.inr.intro.intro.intro
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
g : K[X]
hf : Irreducible ((expand K p) g)
⊢ ((expand K p) g).Separable
tactic: rcases separable_or p hf with h | ⟨-, g, -, rfl⟩
Theorem: Set.Definable.image_comp_embedding
File: Mathlib/ModelTheory/Definability.lean

Proof steps:
state_before: M : Type w
A : Set M
L : Language
inst✝¹ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
s : Set (β → M)
h : A.Definable L s
f : α ↪ β
inst✝ : Finite β
⊢ A.Definable L ((fun g => g ∘ ⇑f) '' s)
state_after: no goals
tactic: classical
    cases nonempty_fintype β
    refine
      (congr rfl (ext fun x => ?_)).mp
        (((h.image_comp_equiv (Equiv.Set.sumCompl (range f))).image_comp_equiv
              (Equiv.sumCongr (Equiv.ofInjective f f.injective)
                (Fintype.equivFin (↥(range f)ᶜ)).symm)).image_comp_sum_inl_fin
          _)
    simp only [mem_preimage, mem_image, exists_exists_and_eq_and]
    refine exists_congr fun y => and_congr_right fun _ => Eq.congr_left (funext fun a => ?_)
    simp
Theorem: CochainComplex.mappingCone.triangleMap_hom₂
File: Mathlib/Algebra/Homology/HomotopyCategory/Pretriangulated.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.111951, u_1} C
inst✝⁶ : Category.{?u.111955, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
φ₃ : K₃ ⟶ L₃
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
comm : φ₁ ≫ b = a ≫ φ₂
a' : K₂ ⟶ K₃
b' : L₂ ⟶ L₃
comm' : φ₂ ≫ b' = a' ≫ φ₃
⊢ (triangle φ₁).mor₂ ≫ map φ₁ φ₂ a b comm = b ≫ (triangle φ₂).mor₂
state_after: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.111951, u_1} C
inst✝⁶ : Category.{?u.111955, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
φ₃ : K₃ ⟶ L₃
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
comm : φ₁ ≫ b = a ≫ φ₂
a' : K₂ ⟶ K₃
b' : L₂ ⟶ L₃
comm' : φ₂ ≫ b' = a' ≫ φ₃
⊢ inr φ₁ ≫ map φ₁ φ₂ a b comm = b ≫ inr φ₂
tactic: dsimp
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.111951, u_1} C
inst✝⁶ : Category.{?u.111955, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
φ₃ : K₃ ⟶ L₃
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
comm : φ₁ ≫ b = a ≫ φ₂
a' : K₂ ⟶ K₃
b' : L₂ ⟶ L₃
comm' : φ₂ ≫ b' = a' ≫ φ₃
⊢ inr φ₁ ≫ map φ₁ φ₂ a b comm = b ≫ inr φ₂
state_after: no goals
tactic: rw [map_eq_mapOfHomotopy, triangleMapOfHomotopy_comm₂]
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.111951, u_1} C
inst✝⁶ : Category.{?u.111955, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
φ₃ : K₃ ⟶ L₃
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
comm : φ₁ ≫ b = a ≫ φ₂
a' : K₂ ⟶ K₃
b' : L₂ ⟶ L₃
comm' : φ₂ ≫ b' = a' ≫ φ₃
⊢ (triangle φ₁).mor₃ ≫ (CategoryTheory.shiftFunctor (CochainComplex C ℤ) 1).map a =
    map φ₁ φ₂ a b comm ≫ (triangle φ₂).mor₃
state_after: no goals
tactic: rw [map_eq_mapOfHomotopy, triangleMapOfHomotopy_comm₃]
Theorem: List.get_pmap
File: Mathlib/Data/List/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
l : List α
h : ∀ (a : α), a ∈ l → p a
n : ℕ
hn : n < (pmap f l h).length
⊢ (pmap f l h).get ⟨n, hn⟩ = f (l.get ⟨n, ⋯⟩) ⋯
state_after: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
l : List α
h : ∀ (a : α), a ∈ l → p a
n : ℕ
hn : n < (pmap f l h).length
⊢ (pmap f l h)[n] = f l[n] ⋯
tactic: simp only [get_eq_getElem]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
l : List α
h : ∀ (a : α), a ∈ l → p a
n : ℕ
hn : n < (pmap f l h).length
⊢ (pmap f l h)[n] = f l[n] ⋯
state_after: no goals
tactic: simp [getElem_pmap]