ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Set.PartiallyWellOrderedOn.exists_monotone_subseq
File: Mathlib/Order/WellFoundedSet.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r : α → α → Prop
r' : β → β → Prop
f✝ : α → β
s t : Set α
a : α
inst✝¹ : IsRefl α r
inst✝ : IsTrans α r
h : s.PartiallyWellOrderedOn r
f : ℕ → α
hf : ∀ (n : ℕ), f n ∈ s
⊢ ∃ g, ∀ (m n : ℕ), m ≤ n → r (f (g m)) (f (g n))
state_after: case intro.inl
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r : α → α → Prop
r' : β → β → Prop
f✝ : α → β
s t : Set α
a : α
inst✝¹ : IsRefl α r
inst✝ : IsTrans α r
h : s.PartiallyWellOrderedOn r
f : ℕ → α
hf : ∀ (n : ℕ), f n ∈ s
g : ℕ ↪o ℕ
h1 : ∀ (m n : ℕ), m < n → r (f (g m)) (f (g n))
⊢ ∃ g, ∀ (m n : ℕ), m ≤ n → r (f (g m)) (f (g n))

case intro.inr
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r : α → α → Prop
r' : β → β → Prop
f✝ : α → β
s t : Set α
a : α
inst✝¹ : IsRefl α r
inst✝ : IsTrans α r
h : s.PartiallyWellOrderedOn r
f : ℕ → α
hf : ∀ (n : ℕ), f n ∈ s
g : ℕ ↪o ℕ
h2 : ∀ (m n : ℕ), m < n → ¬r (f (g m)) (f (g n))
⊢ ∃ g, ∀ (m n : ℕ), m ≤ n → r (f (g m)) (f (g n))
tactic: obtain ⟨g, h1 | h2⟩ := exists_increasing_or_nonincreasing_subseq r f
Theorem: completeSpace_iff_isComplete_range
File: Mathlib/Topology/UniformSpace/UniformEmbedding.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
hf : UniformInducing f
⊢ CompleteSpace α ↔ IsComplete (range f)
state_after: no goals
tactic: rw [completeSpace_iff_isComplete_univ, ← isComplete_image_iff hf, image_univ]
Theorem: Rat.uniformContinuous_abs
File: Mathlib/Topology/Instances/Rat.lean

Proof steps:
state_before: ε : ℝ
ε0 : ε > 0
a✝ b✝ : ℚ
h : dist a✝ b✝ < ε
⊢ dist |a✝| |b✝| ≤ dist a✝ b✝
state_after: no goals
tactic: simpa [Rat.dist_eq] using abs_abs_sub_abs_le_abs_sub _ _
Theorem: CategoryTheory.ShortComplex.unopMap_τ₃
File: Mathlib/Algebra/Homology/ShortComplex/Basic.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.61158, u_1} C
inst✝² : Category.{?u.61162, u_2} D
inst✝¹ : HasZeroMorphisms C
S S₁✝ S₂✝ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
S₁ S₂ : ShortComplex Cᵒᵖ
φ : S₁ ⟶ S₂
⊢ φ.τ₃.unop ≫ S₁.unop.f = S₂.unop.f ≫ φ.τ₂.unop
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.61158, u_1} C
inst✝² : Category.{?u.61162, u_2} D
inst✝¹ : HasZeroMorphisms C
S S₁✝ S₂✝ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
S₁ S₂ : ShortComplex Cᵒᵖ
φ : S₁ ⟶ S₂
⊢ φ.τ₃.unop ≫ S₁.g.unop = S₂.g.unop ≫ φ.τ₂.unop
tactic: dsimp
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.61158, u_1} C
inst✝² : Category.{?u.61162, u_2} D
inst✝¹ : HasZeroMorphisms C
S S₁✝ S₂✝ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
S₁ S₂ : ShortComplex Cᵒᵖ
φ : S₁ ⟶ S₂
⊢ φ.τ₃.unop ≫ S₁.g.unop = S₂.g.unop ≫ φ.τ₂.unop
state_after: no goals
tactic: simp only [← unop_comp, φ.comm₂₃]
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.61158, u_1} C
inst✝² : Category.{?u.61162, u_2} D
inst✝¹ : HasZeroMorphisms C
S S₁✝ S₂✝ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
S₁ S₂ : ShortComplex Cᵒᵖ
φ : S₁ ⟶ S₂
⊢ φ.τ₂.unop ≫ S₁.unop.g = S₂.unop.g ≫ φ.τ₁.unop
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.61158, u_1} C
inst✝² : Category.{?u.61162, u_2} D
inst✝¹ : HasZeroMorphisms C
S S₁✝ S₂✝ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
S₁ S₂ : ShortComplex Cᵒᵖ
φ : S₁ ⟶ S₂
⊢ φ.τ₂.unop ≫ S₁.f.unop = S₂.f.unop ≫ φ.τ₁.unop
tactic: dsimp
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.61158, u_1} C
inst✝² : Category.{?u.61162, u_2} D
inst✝¹ : HasZeroMorphisms C
S S₁✝ S₂✝ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
S₁ S₂ : ShortComplex Cᵒᵖ
φ : S₁ ⟶ S₂
⊢ φ.τ₂.unop ≫ S₁.f.unop = S₂.f.unop ≫ φ.τ₁.unop
state_after: no goals
tactic: simp only [← unop_comp, φ.comm₁₂]
Theorem: List.Ico.eq_cons
File: Mathlib/Data/List/Intervals.lean

Proof steps:
state_before: n m : ℕ
h : n < m
⊢ Ico n m = n :: Ico (n + 1) m
state_after: n m : ℕ
h : n < m
⊢ [n] ++ Ico n.succ m = n :: Ico (n + 1) m
tactic: rw [← append_consecutive (Nat.le_succ n) h, succ_singleton]
state_before: n m : ℕ
h : n < m
⊢ [n] ++ Ico n.succ m = n :: Ico (n + 1) m
state_after: no goals
tactic: rfl
Theorem: Fin.castSucc_ne_zero_of_lt
File: Mathlib/Data/Fin/Basic.lean

Proof steps:
state_before: n m : ℕ
p i : Fin n
h : p < i
⊢ i.castSucc ≠ 0
state_after: case zero
m : ℕ
p i : Fin 0
h : p < i
⊢ i.castSucc ≠ 0

case succ
m n✝ : ℕ
p i : Fin (n✝ + 1)
h : p < i
⊢ i.castSucc ≠ 0
tactic: cases n
Theorem: Batteries.DList.toList_append
File: Mathlib/Data/DList/Defs.lean

Proof steps:
state_before: α : Type u
l₁ l₂ : DList α
⊢ (l₁.append l₂).toList = l₁.toList ++ l₂.toList
state_after: case mk
α : Type u
l₂ : DList α
apply✝ : List α → List α
l₁_invariant : ∀ (l : List α), apply✝ l = apply✝ [] ++ l
⊢ ({ apply := apply✝, invariant := l₁_invariant }.append l₂).toList =
    { apply := apply✝, invariant := l₁_invariant }.toList ++ l₂.toList
tactic: cases' l₁ with _ l₁_invariant
state_before: case mk
α : Type u
l₂ : DList α
apply✝ : List α → List α
l₁_invariant : ∀ (l : List α), apply✝ l = apply✝ [] ++ l
⊢ ({ apply := apply✝, invariant := l₁_invariant }.append l₂).toList =
    { apply := apply✝, invariant := l₁_invariant }.toList ++ l₂.toList
state_after: case mk.mk
α : Type u
apply✝¹ : List α → List α
l₁_invariant : ∀ (l : List α), apply✝¹ l = apply✝¹ [] ++ l
apply✝ : List α → List α
invariant✝ : ∀ (l : List α), apply✝ l = apply✝ [] ++ l
⊢ ({ apply := apply✝¹, invariant := l₁_invariant }.append { apply := apply✝, invariant := invariant✝ }).toList =
    { apply := apply✝¹, invariant := l₁_invariant }.toList ++ { apply := apply✝, invariant := invariant✝ }.toList
tactic: cases' l₂
state_before: case mk.mk
α : Type u
apply✝¹ : List α → List α
l₁_invariant : ∀ (l : List α), apply✝¹ l = apply✝¹ [] ++ l
apply✝ : List α → List α
invariant✝ : ∀ (l : List α), apply✝ l = apply✝ [] ++ l
⊢ ({ apply := apply✝¹, invariant := l₁_invariant }.append { apply := apply✝, invariant := invariant✝ }).toList =
    { apply := apply✝¹, invariant := l₁_invariant }.toList ++ { apply := apply✝, invariant := invariant✝ }.toList
state_after: case mk.mk
α : Type u
apply✝¹ : List α → List α
l₁_invariant : ∀ (l : List α), apply✝¹ l = apply✝¹ [] ++ l
apply✝ : List α → List α
invariant✝ : ∀ (l : List α), apply✝ l = apply✝ [] ++ l
⊢ apply✝¹ (apply✝ []) = apply✝¹ [] ++ apply✝ []
tactic: simp
state_before: case mk.mk
α : Type u
apply✝¹ : List α → List α
l₁_invariant : ∀ (l : List α), apply✝¹ l = apply✝¹ [] ++ l
apply✝ : List α → List α
invariant✝ : ∀ (l : List α), apply✝ l = apply✝ [] ++ l
⊢ apply✝¹ (apply✝ []) = apply✝¹ [] ++ apply✝ []
state_after: no goals
tactic: rw [l₁_invariant]
Theorem: AddAction.orbitRel.Quotient.orbit_eq_orbit_out
File: Mathlib/GroupTheory/GroupAction/Basic.lean

Proof steps:
state_before: G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
x : Quotient G α
φ : Quotient G α → α
hφ : Function.RightInverse φ Quotient.mk'
⊢ x.orbit = MulAction.orbit G (φ x)
state_after: G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
x : Quotient G α
φ : Quotient G α → α
hφ : Function.RightInverse φ Quotient.mk'
⊢ orbit (Quotient.mk' (φ x)) = MulAction.orbit G (φ x)
tactic: conv_lhs => rw [← hφ x]
state_before: G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
x : Quotient G α
φ : Quotient G α → α
hφ : Function.RightInverse φ Quotient.mk'
⊢ orbit (Quotient.mk' (φ x)) = MulAction.orbit G (φ x)
state_after: no goals
tactic: rfl
Theorem: IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq
File: Mathlib/Topology/Algebra/Field.lean

Proof steps:
state_before: K : Type u_1
inst✝⁶ : DivisionRing K
inst✝⁵ : TopologicalSpace K
α : Type u_2
𝕜 : Type u_3
f g : α → 𝕜
S : Set α
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace 𝕜
inst✝² : T1Space 𝕜
inst✝¹ : Ring 𝕜
inst✝ : NoZeroDivisors 𝕜
hS : IsPreconnected S
hf : ContinuousOn f S
hsq : EqOn (f ^ 2) 1 S
⊢ EqOn f 1 S ∨ EqOn f (-1) S
state_after: K : Type u_1
inst✝⁶ : DivisionRing K
inst✝⁵ : TopologicalSpace K
α : Type u_2
𝕜 : Type u_3
f g : α → 𝕜
S : Set α
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace 𝕜
inst✝² : T1Space 𝕜
inst✝¹ : Ring 𝕜
inst✝ : NoZeroDivisors 𝕜
hS : IsPreconnected S
hf : ContinuousOn f S
hsq : EqOn (f ^ 2) 1 S
this : DiscreteTopology ↑{1, -1}
⊢ EqOn f 1 S ∨ EqOn f (-1) S
tactic: have : DiscreteTopology ({1, -1} : Set 𝕜) := Finite.instDiscreteTopology
state_before: K : Type u_1
inst✝⁶ : DivisionRing K
inst✝⁵ : TopologicalSpace K
α : Type u_2
𝕜 : Type u_3
f g : α → 𝕜
S : Set α
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace 𝕜
inst✝² : T1Space 𝕜
inst✝¹ : Ring 𝕜
inst✝ : NoZeroDivisors 𝕜
hS : IsPreconnected S
hf : ContinuousOn f S
hsq : EqOn (f ^ 2) 1 S
this : DiscreteTopology ↑{1, -1}
⊢ EqOn f 1 S ∨ EqOn f (-1) S
state_after: K : Type u_1
inst✝⁶ : DivisionRing K
inst✝⁵ : TopologicalSpace K
α : Type u_2
𝕜 : Type u_3
f g : α → 𝕜
S : Set α
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace 𝕜
inst✝² : T1Space 𝕜
inst✝¹ : Ring 𝕜
inst✝ : NoZeroDivisors 𝕜
hS : IsPreconnected S
hf : ContinuousOn f S
hsq : EqOn (f ^ 2) 1 S
this : DiscreteTopology ↑{1, -1}
hmaps : MapsTo f S {1, -1}
⊢ EqOn f 1 S ∨ EqOn f (-1) S
tactic: have hmaps : MapsTo f S {1, -1} := by
    simpa only [EqOn, Pi.one_apply, Pi.pow_apply, sq_eq_one_iff] using hsq
state_before: K : Type u_1
inst✝⁶ : DivisionRing K
inst✝⁵ : TopologicalSpace K
α : Type u_2
𝕜 : Type u_3
f g : α → 𝕜
S : Set α
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace 𝕜
inst✝² : T1Space 𝕜
inst✝¹ : Ring 𝕜
inst✝ : NoZeroDivisors 𝕜
hS : IsPreconnected S
hf : ContinuousOn f S
hsq : EqOn (f ^ 2) 1 S
this : DiscreteTopology ↑{1, -1}
hmaps : MapsTo f S {1, -1}
⊢ EqOn f 1 S ∨ EqOn f (-1) S
state_after: no goals
tactic: simpa using hS.eqOn_const_of_mapsTo hf hmaps
Theorem: Localization.mulEquivOfQuotient_symm_mk
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
x : M
y : ↥S
⊢ (mulEquivOfQuotient f).symm (f.mk' x y) = mk x y
state_after: 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
x : M
y : ↥S
⊢ (mulEquivOfQuotient f).symm (f.mk' x y) = (monoidOf S).mk' x y
tactic: rw [mk_eq_monoidOf_mk'_apply]
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
x : M
y : ↥S
⊢ (mulEquivOfQuotient f).symm (f.mk' x y) = (monoidOf S).mk' x y
state_after: no goals
tactic: exact mulEquivOfQuotient_symm_mk' _ _
Theorem: Batteries.AssocList.length_toList
File: .lake/packages/batteries/Batteries/Data/AssocList.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
l : AssocList α β
⊢ l.toList.length = l.length
state_after: no goals
tactic: induction l <;> simp_all
Theorem: HomologicalComplex.exact_of_degreewise_exact
File: Mathlib/Algebra/Homology/HomologicalComplexAbelian.lean

Proof steps:
state_before: C : Type u_1
ι : Type u_2
c : ComplexShape ι
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Abelian C
S : ShortComplex (HomologicalComplex C c)
hS : ∀ (i : ι), (S.map (eval C c i)).Exact
⊢ S.Exact
state_after: C : Type u_1
ι : Type u_2
c : ComplexShape ι
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Abelian C
S : ShortComplex (HomologicalComplex C c)
hS : ∀ (i : ι), IsZero (S.map (eval C c i)).homology
⊢ IsZero S.homology
tactic: simp only [ShortComplex.exact_iff_isZero_homology] at hS ⊢
state_before: C : Type u_1
ι : Type u_2
c : ComplexShape ι
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Abelian C
S : ShortComplex (HomologicalComplex C c)
hS : ∀ (i : ι), IsZero (S.map (eval C c i)).homology
⊢ IsZero S.homology
state_after: C : Type u_1
ι : Type u_2
c : ComplexShape ι
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Abelian C
S : ShortComplex (HomologicalComplex C c)
hS : ∀ (i : ι), IsZero (S.map (eval C c i)).homology
⊢ 𝟙 S.homology = 0
tactic: rw [IsZero.iff_id_eq_zero]
state_before: C : Type u_1
ι : Type u_2
c : ComplexShape ι
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Abelian C
S : ShortComplex (HomologicalComplex C c)
hS : ∀ (i : ι), IsZero (S.map (eval C c i)).homology
⊢ 𝟙 S.homology = 0
state_after: case h
C : Type u_1
ι : Type u_2
c : ComplexShape ι
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Abelian C
S : ShortComplex (HomologicalComplex C c)
hS : ∀ (i : ι), IsZero (S.map (eval C c i)).homology
i : ι
⊢ (𝟙 S.homology).f i = Hom.f 0 i
tactic: ext i
state_before: case h
C : Type u_1
ι : Type u_2
c : ComplexShape ι
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Abelian C
S : ShortComplex (HomologicalComplex C c)
hS : ∀ (i : ι), IsZero (S.map (eval C c i)).homology
i : ι
⊢ (𝟙 S.homology).f i = Hom.f 0 i
state_after: no goals
tactic: apply (IsZero.of_iso (hS i) (S.mapHomologyIso (eval C c i)).symm).eq_of_src
Theorem: NNReal.hasSum_lt
File: Mathlib/Topology/Instances/ENNReal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → ℝ≥0
sf sg : ℝ≥0
i : α
h : ∀ (a : α), f a ≤ g a
hi : f i < g i
hf : HasSum f sf
hg : HasSum g sg
⊢ sf < sg
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → ℝ≥0
sf sg : ℝ≥0
i : α
h : ∀ (a : α), f a ≤ g a
hi : f i < g i
hf : HasSum f sf
hg : HasSum g sg
A : ∀ (a : α), ↑(f a) ≤ ↑(g a)
⊢ sf < sg
tactic: have A : ∀ a : α, (f a : ℝ) ≤ g a := fun a => NNReal.coe_le_coe.2 (h a)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → ℝ≥0
sf sg : ℝ≥0
i : α
h : ∀ (a : α), f a ≤ g a
hi : f i < g i
hf : HasSum f sf
hg : HasSum g sg
A : ∀ (a : α), ↑(f a) ≤ ↑(g a)
⊢ sf < sg
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → ℝ≥0
sf sg : ℝ≥0
i : α
h : ∀ (a : α), f a ≤ g a
hi : f i < g i
hf : HasSum f sf
hg : HasSum g sg
A : ∀ (a : α), ↑(f a) ≤ ↑(g a)
this : ↑sf < ↑sg
⊢ sf < sg
tactic: have : (sf : ℝ) < sg := hasSum_lt A (NNReal.coe_lt_coe.2 hi) (hasSum_coe.2 hf) (hasSum_coe.2 hg)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → ℝ≥0
sf sg : ℝ≥0
i : α
h : ∀ (a : α), f a ≤ g a
hi : f i < g i
hf : HasSum f sf
hg : HasSum g sg
A : ∀ (a : α), ↑(f a) ≤ ↑(g a)
this : ↑sf < ↑sg
⊢ sf < sg
state_after: no goals
tactic: exact NNReal.coe_lt_coe.1 this
Theorem: CategoryTheory.ShortComplex.SnakeInput.exact_C₂_down
File: Mathlib/Algebra/Homology/ShortComplex/SnakeLemma.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{?u.39934, u_1} C
inst✝ : Abelian C
S : SnakeInput C
⊢ S.v₁₂.τ₂ ≫ S.v₂₃.τ₂ = 0
state_after: no goals
tactic: rw [← comp_τ₂, S.w₁₃, zero_τ₂]
Theorem: MeasureTheory.lintegral_tilted
File: Mathlib/MeasureTheory/Measure/Tilted.lean

Proof steps:
state_before: α : Type u_1
mα : MeasurableSpace α
μ : Measure α
f✝ f : α → ℝ
g : α → ℝ≥0∞
⊢ ∫⁻ (x : α), g x ∂μ.tilted f = ∫⁻ (x : α), ENNReal.ofReal (rexp (f x) / ∫ (x : α), rexp (f x) ∂μ) * g x ∂μ
state_after: no goals
tactic: rw [← setLIntegral_univ, setLIntegral_tilted' f g MeasurableSet.univ, setLIntegral_univ]
Theorem: IsOpenMap.coverPreserving
File: Mathlib/Topology/Sheaves/SheafCondition/Sites.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
hf : IsOpenMap ⇑f
⊢ CoverPreserving (Opens.grothendieckTopology ↑X) (Opens.grothendieckTopology ↑Y) hf.functor
state_after: case cover_preserve
C : Type u
inst✝ : Category.{v, u} C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
hf : IsOpenMap ⇑f
⊢ ∀ {U : Opens ↑X} {S : Sieve U},
    S ∈ (Opens.grothendieckTopology ↑X).sieves U →
      Sieve.functorPushforward hf.functor S ∈ (Opens.grothendieckTopology ↑Y).sieves (hf.functor.obj U)
tactic: constructor
state_before: case cover_preserve
C : Type u
inst✝ : Category.{v, u} C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
hf : IsOpenMap ⇑f
⊢ ∀ {U : Opens ↑X} {S : Sieve U},
    S ∈ (Opens.grothendieckTopology ↑X).sieves U →
      Sieve.functorPushforward hf.functor S ∈ (Opens.grothendieckTopology ↑Y).sieves (hf.functor.obj U)
state_after: case cover_preserve.intro.intro
C : Type u
inst✝ : Category.{v, u} C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
hf : IsOpenMap ⇑f
U : Opens ↑X
S : Sieve U
hU : S ∈ (Opens.grothendieckTopology ↑X).sieves U
x : ↑X
hx : x ∈ ↑U
⊢ ∃ U_1 f_1, (Sieve.functorPushforward hf.functor S).arrows f_1 ∧ f x ∈ U_1
tactic: rintro U S hU _ ⟨x, hx, rfl⟩
state_before: case cover_preserve.intro.intro
C : Type u
inst✝ : Category.{v, u} C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
hf : IsOpenMap ⇑f
U : Opens ↑X
S : Sieve U
hU : S ∈ (Opens.grothendieckTopology ↑X).sieves U
x : ↑X
hx : x ∈ ↑U
⊢ ∃ U_1 f_1, (Sieve.functorPushforward hf.functor S).arrows f_1 ∧ f x ∈ U_1
state_after: case cover_preserve.intro.intro.intro.intro.intro
C : Type u
inst✝ : Category.{v, u} C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
hf : IsOpenMap ⇑f
U : Opens ↑X
S : Sieve U
hU : S ∈ (Opens.grothendieckTopology ↑X).sieves U
x : ↑X
hx : x ∈ ↑U
V : Opens ↑X
i : V ⟶ U
hV : S.arrows i
hxV : x ∈ V
⊢ ∃ U_1 f_1, (Sieve.functorPushforward hf.functor S).arrows f_1 ∧ f x ∈ U_1
tactic: obtain ⟨V, i, hV, hxV⟩ := hU x hx
state_before: case cover_preserve.intro.intro.intro.intro.intro
C : Type u
inst✝ : Category.{v, u} C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
hf : IsOpenMap ⇑f
U : Opens ↑X
S : Sieve U
hU : S ∈ (Opens.grothendieckTopology ↑X).sieves U
x : ↑X
hx : x ∈ ↑U
V : Opens ↑X
i : V ⟶ U
hV : S.arrows i
hxV : x ∈ V
⊢ ∃ U_1 f_1, (Sieve.functorPushforward hf.functor S).arrows f_1 ∧ f x ∈ U_1
state_after: no goals
tactic: exact ⟨_, hf.functor.map i, ⟨_, i, 𝟙 _, hV, rfl⟩, Set.mem_image_of_mem f hxV⟩
Theorem: Real.hasStrictDerivAt_log
File: Mathlib/Analysis/SpecialFunctions/Log/Deriv.lean

Proof steps:
state_before: x : ℝ
hx : x ≠ 0
⊢ HasStrictDerivAt log x⁻¹ x
state_after: case inl
x : ℝ
hx✝ : x ≠ 0
hx : x < 0
⊢ HasStrictDerivAt log x⁻¹ x

case inr
x : ℝ
hx✝ : x ≠ 0
hx : 0 < x
⊢ HasStrictDerivAt log x⁻¹ x
tactic: cases' hx.lt_or_lt with hx hx
Theorem: Int.toNat_eq_zero
File: Mathlib/Data/Int/Defs.lean

Proof steps:
state_before: a b c d m n✝ : ℤ
n : ℕ
⊢ (↑n).toNat = 0 ↔ ↑n ≤ 0
state_after: no goals
tactic: simp
state_before: a b c d m n✝ : ℤ
n : ℕ
⊢ -[n+1].toNat = 0 ↔ -[n+1] ≤ 0
state_after: no goals
tactic: simpa [toNat] using Int.le_of_lt (negSucc_lt_zero n)
Theorem: Complex.hasStrictDerivAt_cosh
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Deriv.lean

Proof steps:
state_before: x : ℂ
⊢ HasStrictDerivAt cosh (sinh x) x
state_after: x : ℂ
⊢ HasStrictDerivAt cosh ((cexp x - cexp (-x)) * 2⁻¹) x
tactic: simp only [sinh, div_eq_mul_inv]
state_before: x : ℂ
⊢ HasStrictDerivAt cosh ((cexp x - cexp (-x)) * 2⁻¹) x
state_after: case h.e'_7
x : ℂ
⊢ (cexp x - cexp (-x)) * 2⁻¹ = (cexp x + cexp (-id x) * -1) * 2⁻¹
tactic: convert ((hasStrictDerivAt_exp x).add (hasStrictDerivAt_id x).neg.cexp).mul_const (2 : ℂ)⁻¹
    using 1
state_before: case h.e'_7
x : ℂ
⊢ (cexp x - cexp (-x)) * 2⁻¹ = (cexp x + cexp (-id x) * -1) * 2⁻¹
state_after: no goals
tactic: rw [id, mul_neg_one, sub_eq_add_neg]
Theorem: Matrix.adjugate_zero
File: Mathlib/LinearAlgebra/Matrix/Adjugate.lean

Proof steps:
state_before: m : Type u
n : Type v
α : Type w
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : DecidableEq m
inst✝² : Fintype m
inst✝¹ : CommRing α
inst✝ : Nontrivial n
⊢ adjugate 0 = 0
state_after: case a
m : Type u
n : Type v
α : Type w
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : DecidableEq m
inst✝² : Fintype m
inst✝¹ : CommRing α
inst✝ : Nontrivial n
i j : n
⊢ adjugate 0 i j = 0 i j
tactic: ext i j
state_before: case a
m : Type u
n : Type v
α : Type w
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : DecidableEq m
inst✝² : Fintype m
inst✝¹ : CommRing α
inst✝ : Nontrivial n
i j : n
⊢ adjugate 0 i j = 0 i j
state_after: case a.intro
m : Type u
n : Type v
α : Type w
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : DecidableEq m
inst✝² : Fintype m
inst✝¹ : CommRing α
inst✝ : Nontrivial n
i j j' : n
hj' : j' ≠ j
⊢ adjugate 0 i j = 0 i j
tactic: obtain ⟨j', hj'⟩ : ∃ j', j' ≠ j := exists_ne j
state_before: case a.intro
m : Type u
n : Type v
α : Type w
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : DecidableEq m
inst✝² : Fintype m
inst✝¹ : CommRing α
inst✝ : Nontrivial n
i j j' : n
hj' : j' ≠ j
⊢ adjugate 0 i j = 0 i j
state_after: case a.intro
m : Type u
n : Type v
α : Type w
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : DecidableEq m
inst✝² : Fintype m
inst✝¹ : CommRing α
inst✝ : Nontrivial n
i j j' : n
hj' : j' ≠ j
⊢ ∀ (i_1 : n), 0ᵀ.updateColumn j (Pi.single i 1) i_1 j' = 0
tactic: apply det_eq_zero_of_column_eq_zero j'
state_before: case a.intro
m : Type u
n : Type v
α : Type w
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : DecidableEq m
inst✝² : Fintype m
inst✝¹ : CommRing α
inst✝ : Nontrivial n
i j j' : n
hj' : j' ≠ j
⊢ ∀ (i_1 : n), 0ᵀ.updateColumn j (Pi.single i 1) i_1 j' = 0
state_after: case a.intro
m : Type u
n : Type v
α : Type w
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : DecidableEq m
inst✝² : Fintype m
inst✝¹ : CommRing α
inst✝ : Nontrivial n
i j j' : n
hj' : j' ≠ j
j'' : n
⊢ 0ᵀ.updateColumn j (Pi.single i 1) j'' j' = 0
tactic: intro j''
state_before: case a.intro
m : Type u
n : Type v
α : Type w
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : DecidableEq m
inst✝² : Fintype m
inst✝¹ : CommRing α
inst✝ : Nontrivial n
i j j' : n
hj' : j' ≠ j
j'' : n
⊢ 0ᵀ.updateColumn j (Pi.single i 1) j'' j' = 0
state_after: no goals
tactic: simp [updateColumn_ne hj']
Theorem: Real.pi_div_four_le_arcsin
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Inverse.lean

Proof steps:
state_before: x✝ y x : ℝ
⊢ π / 4 ≤ arcsin x ↔ √2 / 2 ≤ x
state_after: x✝ y x : ℝ
⊢ π / 4 ∈ Ioc (-(π / 2)) (π / 2)
tactic: rw [← sin_pi_div_four, le_arcsin_iff_sin_le']
state_before: x✝ y x : ℝ
⊢ π / 4 ∈ Ioc (-(π / 2)) (π / 2)
state_after: x✝ y x : ℝ
this : 0 < π
⊢ π / 4 ∈ Ioc (-(π / 2)) (π / 2)
tactic: have := pi_pos
state_before: x✝ y x : ℝ
this : 0 < π
⊢ π / 4 ∈ Ioc (-(π / 2)) (π / 2)
state_after: no goals
tactic: constructor <;> linarith
Theorem: Turing.TM1.stmts_trans
File: Mathlib/Computability/TuringMachine.lean

Proof steps:
state_before: Γ : Type u_1
inst✝ : Inhabited Γ
Λ : Type u_2
σ : Type u_3
M : Λ → Stmt₁
S : Finset Λ
q₁ q₂ : Stmt₁
h₁ : q₁ ∈ stmts₁ q₂
⊢ some q₂ ∈ stmts M S → some q₁ ∈ stmts M S
state_after: Γ : Type u_1
inst✝ : Inhabited Γ
Λ : Type u_2
σ : Type u_3
M : Λ → Stmt₁
S : Finset Λ
q₁ q₂ : Stmt₁
h₁ : q₁ ∈ stmts₁ q₂
⊢ ∀ x ∈ S, q₂ ∈ stmts₁ (M x) → ∃ a ∈ S, q₁ ∈ stmts₁ (M a)
tactic: simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, Option.some.injEq,
    forall_eq', exists_imp, and_imp]
state_before: Γ : Type u_1
inst✝ : Inhabited Γ
Λ : Type u_2
σ : Type u_3
M : Λ → Stmt₁
S : Finset Λ
q₁ q₂ : Stmt₁
h₁ : q₁ ∈ stmts₁ q₂
⊢ ∀ x ∈ S, q₂ ∈ stmts₁ (M x) → ∃ a ∈ S, q₁ ∈ stmts₁ (M a)
state_after: no goals
tactic: exact fun l ls h₂ ↦ ⟨_, ls, stmts₁_trans h₂ h₁⟩
Theorem: Matrix.cons_add_cons
File: Mathlib/Algebra/Group/Fin/Tuple.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
n : ℕ
inst✝ : Add α
x : α
v : Fin n → α
y : α
w : Fin n → α
⊢ vecCons x v + vecCons y w = vecCons (x + y) (v + w)
state_after: no goals
tactic: simp