ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Set.Finite.toFinset_eq_toFinset
File: Mathlib/Data/Set/Finite.lean

Proof steps:
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s : Set α
inst✝ : Fintype ↑s
h : s.Finite
⊢ h.toFinset = s.toFinset
state_after: α : Type u
β : Type v
ι : Sort w
γ : Type x
s : Set α
inst✝ : Fintype ↑s
h : s.Finite
this : h.fintype = inst✝
⊢ h.toFinset = s.toFinset
tactic: have : h.fintype = ‹_› := Subsingleton.elim _ _
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s : Set α
inst✝ : Fintype ↑s
h : s.Finite
this : h.fintype = inst✝
⊢ h.toFinset = s.toFinset
state_after: no goals
tactic: rw [Finite.toFinset, this]
Theorem: Filter.prod_map_atTop_eq
File: Mathlib/Order/Filter/AtTopBot.lean

Proof steps:
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
α₁ : Type u_6
α₂ : Type u_7
β₁ : Type u_8
β₂ : Type u_9
inst✝¹ : Preorder β₁
inst✝ : Preorder β₂
u₁ : β₁ → α₁
u₂ : β₂ → α₂
⊢ map u₁ atTop ×ˢ map u₂ atTop = map (Prod.map u₁ u₂) atTop
state_after: no goals
tactic: rw [prod_map_map_eq, prod_atTop_atTop_eq, Prod.map_def]
Theorem: Primrec.nat_iterate
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 σ
f : α → ℕ
g : α → β
h : α → β → β
hf : Primrec f
hg : Primrec g
hh : Primrec₂ h
a : α
⊢ Nat.rec (g a) (fun n IH => h a (n, IH).2) (f a) = (h a)^[f a] (g a)
state_after: no goals
tactic: induction f a <;> simp [*, -Function.iterate_succ, Function.iterate_succ']
Theorem: Filter.Tendsto.val_neg_addUnits
File: Mathlib/Topology/Algebra/Monoid.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace X
inst✝⁷ : TopologicalSpace M
inst✝⁶ : Mul M
inst✝⁵ : ContinuousMul M
inst✝⁴ : TopologicalSpace N
inst✝³ : Monoid N
inst✝² : ContinuousMul N
inst✝¹ : T2Space N
f : ι → Nˣ
r₁ r₂ : N
l : Filter ι
inst✝ : l.NeBot
h₁ : Tendsto (fun x => ↑(f x)) l (𝓝 r₁)
h₂ : Tendsto (fun x => ↑(f x)⁻¹) l (𝓝 r₂)
⊢ r₁ * r₂ = 1
state_after: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace X
inst✝⁷ : TopologicalSpace M
inst✝⁶ : Mul M
inst✝⁵ : ContinuousMul M
inst✝⁴ : TopologicalSpace N
inst✝³ : Monoid N
inst✝² : ContinuousMul N
inst✝¹ : T2Space N
f : ι → Nˣ
r₁ r₂ : N
l : Filter ι
inst✝ : l.NeBot
h₁ : Tendsto (fun x => ↑(f x)) l (𝓝 r₁)
h₂ : Tendsto (fun x => ↑(f x)⁻¹) l (𝓝 r₂)
⊢ 1 = r₁ * r₂
tactic: symm
state_before: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace X
inst✝⁷ : TopologicalSpace M
inst✝⁶ : Mul M
inst✝⁵ : ContinuousMul M
inst✝⁴ : TopologicalSpace N
inst✝³ : Monoid N
inst✝² : ContinuousMul N
inst✝¹ : T2Space N
f : ι → Nˣ
r₁ r₂ : N
l : Filter ι
inst✝ : l.NeBot
h₁ : Tendsto (fun x => ↑(f x)) l (𝓝 r₁)
h₂ : Tendsto (fun x => ↑(f x)⁻¹) l (𝓝 r₂)
⊢ 1 = r₁ * r₂
state_after: no goals
tactic: simpa using h₁.mul h₂
state_before: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace X
inst✝⁷ : TopologicalSpace M
inst✝⁶ : Mul M
inst✝⁵ : ContinuousMul M
inst✝⁴ : TopologicalSpace N
inst✝³ : Monoid N
inst✝² : ContinuousMul N
inst✝¹ : T2Space N
f : ι → Nˣ
r₁ r₂ : N
l : Filter ι
inst✝ : l.NeBot
h₁ : Tendsto (fun x => ↑(f x)) l (𝓝 r₁)
h₂ : Tendsto (fun x => ↑(f x)⁻¹) l (𝓝 r₂)
⊢ r₂ * r₁ = 1
state_after: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace X
inst✝⁷ : TopologicalSpace M
inst✝⁶ : Mul M
inst✝⁵ : ContinuousMul M
inst✝⁴ : TopologicalSpace N
inst✝³ : Monoid N
inst✝² : ContinuousMul N
inst✝¹ : T2Space N
f : ι → Nˣ
r₁ r₂ : N
l : Filter ι
inst✝ : l.NeBot
h₁ : Tendsto (fun x => ↑(f x)) l (𝓝 r₁)
h₂ : Tendsto (fun x => ↑(f x)⁻¹) l (𝓝 r₂)
⊢ 1 = r₂ * r₁
tactic: symm
state_before: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace X
inst✝⁷ : TopologicalSpace M
inst✝⁶ : Mul M
inst✝⁵ : ContinuousMul M
inst✝⁴ : TopologicalSpace N
inst✝³ : Monoid N
inst✝² : ContinuousMul N
inst✝¹ : T2Space N
f : ι → Nˣ
r₁ r₂ : N
l : Filter ι
inst✝ : l.NeBot
h₁ : Tendsto (fun x => ↑(f x)) l (𝓝 r₁)
h₂ : Tendsto (fun x => ↑(f x)⁻¹) l (𝓝 r₂)
⊢ 1 = r₂ * r₁
state_after: no goals
tactic: simpa using h₂.mul h₁
Theorem: Rat.uniformSpace_eq
File: Mathlib/Topology/UniformSpace/CompareReals.lean

Proof steps:
state_before: ⊢ AbsoluteValue.abs.uniformSpace = PseudoMetricSpace.toUniformSpace
state_after: case h.h
s : Set (ℚ × ℚ)
⊢ s ∈ uniformity ℚ ↔ s ∈ uniformity ℚ
tactic: ext s
state_before: case h.h
s : Set (ℚ × ℚ)
⊢ s ∈ uniformity ℚ ↔ s ∈ uniformity ℚ
state_after: case h.h
s : Set (ℚ × ℚ)
⊢ (∃ i, 0 < i ∧ {p | AbsoluteValue.abs (p.2 - p.1) < i} ⊆ s) ↔ ∃ i, 0 < i ∧ {p | dist p.1 p.2 < ↑i} ⊆ s
tactic: rw [(AbsoluteValue.hasBasis_uniformity _).mem_iff, Metric.uniformity_basis_dist_rat.mem_iff]
state_before: case h.h
s : Set (ℚ × ℚ)
⊢ (∃ i, 0 < i ∧ {p | AbsoluteValue.abs (p.2 - p.1) < i} ⊆ s) ↔ ∃ i, 0 < i ∧ {p | dist p.1 p.2 < ↑i} ⊆ s
state_after: no goals
tactic: simp only [Rat.dist_eq, AbsoluteValue.abs_apply, ← Rat.cast_sub, ← Rat.cast_abs, Rat.cast_lt,
    abs_sub_comm]
Theorem: Pretrivialization.mk_symm
File: Mathlib/Topology/FiberBundle/Trivialization.lean

Proof steps:
state_before: ι : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
Z : Type u_5
inst✝² : TopologicalSpace B
inst✝¹ : TopologicalSpace F
proj : Z → B
e✝ : Pretrivialization F proj
x : Z
e' : Pretrivialization F TotalSpace.proj
x' : TotalSpace F E
b✝ : B
y✝ : E b✝
inst✝ : (x : B) → Zero (E x)
e : Pretrivialization F TotalSpace.proj
b : B
hb : b ∈ e.baseSet
y : F
⊢ { proj := b, snd := e.symm b y } = ↑e.symm (b, y)
state_after: no goals
tactic: simp only [e.symm_apply hb, TotalSpace.mk_cast (e.proj_symm_apply' hb), TotalSpace.eta]
Theorem: MeasureTheory.measure_le_integral_pos
File: Mathlib/MeasureTheory/Integral/Average.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
m0 : MeasurableSpace α
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
μ ν : Measure α
s t N : Set α
f : α → ℝ
inst✝ : IsProbabilityMeasure μ
hf : Integrable f μ
⊢ 0 < μ {x | f x ≤ ∫ (a : α), f a ∂μ}
state_after: no goals
tactic: simpa only [average_eq_integral] using
    measure_le_average_pos (IsProbabilityMeasure.ne_zero μ) hf
Theorem: Set.preimage_sub
File: Mathlib/Data/Set/Pointwise/Basic.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Group α
inst✝² : DivisionMonoid β
inst✝¹ : FunLike F α β
inst✝ : MonoidHomClass F α β
m : F
s✝ t✝ : Set α
hm : Injective ⇑m
s t : Set β
hs : s ⊆ range ⇑m
ht : t ⊆ range ⇑m
⊢ ⇑m '' (⇑m ⁻¹' (s / t)) = ⇑m '' (⇑m ⁻¹' s / ⇑m ⁻¹' t)
state_after: no goals
tactic: rw [image_div, image_preimage_eq_iff.2 hs, image_preimage_eq_iff.2 ht,
      image_preimage_eq_iff.2 (div_subset_range m hs ht)]
Theorem: WittVector.frobenius_eq_map_frobenius
File: Mathlib/RingTheory/WittVector/Frobenius.lean

Proof steps:
state_before: p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : CharP R p
⊢ frobenius = map (_root_.frobenius R p)
state_after: case a.h
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : CharP R p
x : 𝕎 R
n : ℕ
⊢ (frobenius x).coeff n = ((map (_root_.frobenius R p)) x).coeff n
tactic: ext (x n)
state_before: case a.h
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : CharP R p
x : 𝕎 R
n : ℕ
⊢ (frobenius x).coeff n = ((map (_root_.frobenius R p)) x).coeff n
state_after: no goals
tactic: simp only [coeff_frobenius_charP, map_coeff, frobenius_def]
Theorem: Homotopy.nullHomotopy_hom
File: Mathlib/Algebra/Homology/Homotopy.lean

Proof steps:
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i : ι
hom : (i j : ι) → C.X i ⟶ D.X j
zero : ∀ (i j : ι), ¬c.Rel j i → hom i j = 0
⊢ ∀ (i : ι), (nullHomotopicMap hom).f i = (dNext i) hom + (prevD i) hom + Hom.f 0 i
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i✝ : ι
hom : (i j : ι) → C.X i ⟶ D.X j
zero : ∀ (i j : ι), ¬c.Rel j i → hom i j = 0
i : ι
⊢ (nullHomotopicMap hom).f i = (dNext i) hom + (prevD i) hom + Hom.f 0 i
tactic: intro i
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i✝ : ι
hom : (i j : ι) → C.X i ⟶ D.X j
zero : ∀ (i j : ι), ¬c.Rel j i → hom i j = 0
i : ι
⊢ (nullHomotopicMap hom).f i = (dNext i) hom + (prevD i) hom + Hom.f 0 i
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i✝ : ι
hom : (i j : ι) → C.X i ⟶ D.X j
zero : ∀ (i j : ι), ¬c.Rel j i → hom i j = 0
i : ι
⊢ (nullHomotopicMap hom).f i = (dNext i) hom + (prevD i) hom
tactic: rw [HomologicalComplex.zero_f_apply, add_zero]
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i✝ : ι
hom : (i j : ι) → C.X i ⟶ D.X j
zero : ∀ (i j : ι), ¬c.Rel j i → hom i j = 0
i : ι
⊢ (nullHomotopicMap hom).f i = (dNext i) hom + (prevD i) hom
state_after: no goals
tactic: rfl
Theorem: ZetaAsymptotics.continuousOn_term
File: Mathlib/NumberTheory/Harmonic/ZetaAsymp.lean

Proof steps:
state_before: n : ℕ
⊢ ContinuousOn (fun x => term (n + 1) x) (Ici 1)
state_after: n : ℕ
⊢ ContinuousOn (fun x => ∫ (x_1 : ℝ) in Ioc (↑(n + 1)) (↑(n + 1) + 1), (x_1 - ↑(n + 1)) / x_1 ^ (x + 1) ∂volume) (Ici 1)
tactic: simp only [term, intervalIntegral.integral_of_le (by linarith : (↑(n + 1) : ℝ) ≤ ↑(n + 1) + 1)]
state_before: n : ℕ
⊢ ContinuousOn (fun x => ∫ (x_1 : ℝ) in Ioc (↑(n + 1)) (↑(n + 1) + 1), (x_1 - ↑(n + 1)) / x_1 ^ (x + 1) ∂volume) (Ici 1)
state_after: case hF_meas
n : ℕ
⊢ ∀ x ∈ Ici 1,
    AEStronglyMeasurable (fun a => (a - ↑(n + 1)) / a ^ (x + 1)) (volume.restrict (Ioc (↑(n + 1)) (↑(n + 1) + 1)))

case h_bound
n : ℕ
⊢ ∀ x ∈ Ici 1,
    ∀ᵐ (a : ℝ) ∂volume.restrict (Ioc (↑(n + 1)) (↑(n + 1) + 1)), ‖(a - ↑(n + 1)) / a ^ (x + 1)‖ ≤ (a - ↑(n + 1)) / a ^ 2

case bound_integrable
n : ℕ
⊢ Integrable (fun x => (x - ↑(n + 1)) / x ^ 2) (volume.restrict (Ioc (↑(n + 1)) (↑(n + 1) + 1)))

case h_cont
n : ℕ
⊢ ∀ᵐ (a : ℝ) ∂volume.restrict (Ioc (↑(n + 1)) (↑(n + 1) + 1)),
    ContinuousOn (fun x => (a - ↑(n + 1)) / a ^ (x + 1)) (Ici 1)
tactic: apply continuousOn_of_dominated (bound := fun x ↦ (x - ↑(n + 1)) / x ^ (2 : ℝ))
Theorem: String.Iterator.ValidFor.hasNext
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

Proof steps:
state_before: l r : List Char
it : Iterator
h : ValidFor l r it
⊢ it.hasNext = true ↔ r ≠ []
state_after: no goals
tactic: simp [Iterator.hasNext, ← h.atEnd, Iterator.atEnd]
Theorem: Finite.surjective_of_injective
File: Mathlib/Data/Fintype/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
f : α → α
hinj : Injective f
⊢ Surjective f
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
f : α → α
hinj : Injective f
x : α
⊢ ∃ a, f a = x
tactic: intro x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
f : α → α
hinj : Injective f
x : α
⊢ ∃ a, f a = x
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
f : α → α
hinj : Injective f
x : α
this : (a : Prop) → Decidable a
⊢ ∃ a, f a = x
tactic: have := Classical.propDecidable
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
f : α → α
hinj : Injective f
x : α
this : (a : Prop) → Decidable a
⊢ ∃ a, f a = x
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
f : α → α
hinj : Injective f
x : α
this : (a : Prop) → Decidable a
val✝ : Fintype α
⊢ ∃ a, f a = x
tactic: cases nonempty_fintype α
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
f : α → α
hinj : Injective f
x : α
this : (a : Prop) → Decidable a
val✝ : Fintype α
⊢ ∃ a, f a = x
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
f : α → α
hinj : Injective f
x : α
this : (a : Prop) → Decidable a
val✝ : Fintype α
h₁ : image f univ = univ
⊢ ∃ a, f a = x
tactic: have h₁ : image f univ = univ :=
    eq_of_subset_of_card_le (subset_univ _)
      ((card_image_of_injective univ hinj).symm ▸ le_rfl)
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
f : α → α
hinj : Injective f
x : α
this : (a : Prop) → Decidable a
val✝ : Fintype α
h₁ : image f univ = univ
⊢ ∃ a, f a = x
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
f : α → α
hinj : Injective f
x : α
this : (a : Prop) → Decidable a
val✝ : Fintype α
h₁ : image f univ = univ
h₂ : x ∈ image f univ
⊢ ∃ a, f a = x
tactic: have h₂ : x ∈ image f univ := h₁.symm ▸ mem_univ x
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
f : α → α
hinj : Injective f
x : α
this : (a : Prop) → Decidable a
val✝ : Fintype α
h₁ : image f univ = univ
h₂ : x ∈ image f univ
⊢ ∃ a, f a = x
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
f : α → α
hinj : Injective f
x : α
this : (a : Prop) → Decidable a
val✝ : Fintype α
h₁ : image f univ = univ
h₂ : x ∈ image f univ
y : α
h : y ∈ univ ∧ f y = x
⊢ ∃ a, f a = x
tactic: obtain ⟨y, h⟩ := mem_image.1 h₂
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
f : α → α
hinj : Injective f
x : α
this : (a : Prop) → Decidable a
val✝ : Fintype α
h₁ : image f univ = univ
h₂ : x ∈ image f univ
y : α
h : y ∈ univ ∧ f y = x
⊢ ∃ a, f a = x
state_after: no goals
tactic: exact ⟨y, h.2⟩
Theorem: Complex.norm_max_aux₂
File: Mathlib/Analysis/Complex/AbsMax.lean

Proof steps:
state_before: E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℂ E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℂ F
f : ℂ → F
z w : ℂ
hd : DiffContOnCl ℂ f (ball z (dist w z))
hz : IsMaxOn (norm ∘ f) (closedBall z (dist w z)) z
⊢ ‖f w‖ = ‖f z‖
state_after: E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℂ E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℂ F
f : ℂ → F
z w : ℂ
hd : DiffContOnCl ℂ f (ball z (dist w z))
hz : IsMaxOn (norm ∘ f) (closedBall z (dist w z)) z
e : F →L[ℂ] F̂ := UniformSpace.Completion.toComplL
⊢ ‖f w‖ = ‖f z‖
tactic: set e : F →L[ℂ] F̂ := UniformSpace.Completion.toComplL
state_before: E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℂ E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℂ F
f : ℂ → F
z w : ℂ
hd : DiffContOnCl ℂ f (ball z (dist w z))
hz : IsMaxOn (norm ∘ f) (closedBall z (dist w z)) z
e : F →L[ℂ] F̂ := UniformSpace.Completion.toComplL
⊢ ‖f w‖ = ‖f z‖
state_after: E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℂ E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℂ F
f : ℂ → F
z w : ℂ
hd : DiffContOnCl ℂ f (ball z (dist w z))
hz : IsMaxOn (norm ∘ f) (closedBall z (dist w z)) z
e : F →L[ℂ] F̂ := UniformSpace.Completion.toComplL
he : ∀ (x : F), ‖e x‖ = ‖x‖
⊢ ‖f w‖ = ‖f z‖
tactic: have he : ∀ x, ‖e x‖ = ‖x‖ := UniformSpace.Completion.norm_coe
Theorem: PosNum.le_to_nat
File: Mathlib/Data/Num/Lemmas.lean

Proof steps:
state_before: α : Type u_1
m n : PosNum
⊢ ↑m ≤ ↑n ↔ m ≤ n
state_after: α : Type u_1
m n : PosNum
⊢ ¬↑n < ↑m ↔ m ≤ n
tactic: rw [← not_lt]
state_before: α : Type u_1
m n : PosNum
⊢ ¬↑n < ↑m ↔ m ≤ n
state_after: no goals
tactic: exact not_congr lt_to_nat
Theorem: CategoryTheory.Functor.pushforwardContinuousSheafificationCompatibility_hom_app_val
File: Mathlib/CategoryTheory/Sites/CoverLifting.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝¹⁰ : Category.{u_4, u_1} C
inst✝⁹ : Category.{u_3, u_2} D
G : C ⥤ D
A : Type w
inst✝⁸ : Category.{w', w} A
J : GrothendieckTopology C
K : GrothendieckTopology D
inst✝⁷ : G.IsCocontinuous J K
inst✝⁶ : ∀ (F : Cᵒᵖ ⥤ A), G.op.HasPointwiseRightKanExtension F
inst✝⁵ : G.IsCocontinuous J K
inst✝⁴ : G.IsContinuous J K
inst✝³ : HasWeakSheafify J A
inst✝² : HasWeakSheafify K A
inst✝¹ : G.IsCocontinuous J K
inst✝ : G.IsContinuous J K
F : Dᵒᵖ ⥤ A
⊢ ((G.pushforwardContinuousSheafificationCompatibility A J K).hom.app F).val =
    sheafifyLift J (whiskerLeft G.op (toSheafify K F)) ⋯
state_after: case a
C : Type u_1
D : Type u_2
inst✝¹⁰ : Category.{u_4, u_1} C
inst✝⁹ : Category.{u_3, u_2} D
G : C ⥤ D
A : Type w
inst✝⁸ : Category.{w', w} A
J : GrothendieckTopology C
K : GrothendieckTopology D
inst✝⁷ : G.IsCocontinuous J K
inst✝⁶ : ∀ (F : Cᵒᵖ ⥤ A), G.op.HasPointwiseRightKanExtension F
inst✝⁵ : G.IsCocontinuous J K
inst✝⁴ : G.IsContinuous J K
inst✝³ : HasWeakSheafify J A
inst✝² : HasWeakSheafify K A
inst✝¹ : G.IsCocontinuous J K
inst✝ : G.IsContinuous J K
F : Dᵒᵖ ⥤ A
⊢ toSheafify J (((whiskeringLeft Cᵒᵖ Dᵒᵖ A).obj G.op).obj F) ≫
      ((G.pushforwardContinuousSheafificationCompatibility A J K).hom.app F).val =
    whiskerLeft G.op (toSheafify K F)
tactic: apply sheafifyLift_unique
state_before: case a
C : Type u_1
D : Type u_2
inst✝¹⁰ : Category.{u_4, u_1} C
inst✝⁹ : Category.{u_3, u_2} D
G : C ⥤ D
A : Type w
inst✝⁸ : Category.{w', w} A
J : GrothendieckTopology C
K : GrothendieckTopology D
inst✝⁷ : G.IsCocontinuous J K
inst✝⁶ : ∀ (F : Cᵒᵖ ⥤ A), G.op.HasPointwiseRightKanExtension F
inst✝⁵ : G.IsCocontinuous J K
inst✝⁴ : G.IsContinuous J K
inst✝³ : HasWeakSheafify J A
inst✝² : HasWeakSheafify K A
inst✝¹ : G.IsCocontinuous J K
inst✝ : G.IsContinuous J K
F : Dᵒᵖ ⥤ A
⊢ toSheafify J (((whiskeringLeft Cᵒᵖ Dᵒᵖ A).obj G.op).obj F) ≫
      ((G.pushforwardContinuousSheafificationCompatibility A J K).hom.app F).val =
    whiskerLeft G.op (toSheafify K F)
state_after: no goals
tactic: apply toSheafify_pullbackSheafificationCompatibility
Theorem: Set.ncard_le_one_iff_eq
File: Mathlib/Data/Set/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
hs : autoParam s.Finite _auto✝
⊢ s.ncard ≤ 1 ↔ s = ∅ ∨ ∃ a, s = {a}
state_after: case inl
α : Type u_1
β : Type u_2
t : Set α
f : α → β
hs : autoParam ∅.Finite _auto✝
⊢ ∅.ncard ≤ 1 ↔ ∅ = ∅ ∨ ∃ a, ∅ = {a}

case inr.intro
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
hs : autoParam s.Finite _auto✝
x : α
hx : x ∈ s
⊢ s.ncard ≤ 1 ↔ s = ∅ ∨ ∃ a, s = {a}
tactic: obtain rfl | ⟨x, hx⟩ := s.eq_empty_or_nonempty
state_before: case inr.intro
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
hs : autoParam s.Finite _auto✝
x : α
hx : x ∈ s
⊢ s.ncard ≤ 1 ↔ s = ∅ ∨ ∃ a, s = {a}
state_after: case inr.intro
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
hs : autoParam s.Finite _auto✝
x : α
hx : x ∈ s
⊢ (∀ {a b : α}, a ∈ s → b ∈ s → a = b) ↔ s = ∅ ∨ ∃ a, s = {a}
tactic: rw [ncard_le_one_iff hs]
state_before: case inr.intro
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
hs : autoParam s.Finite _auto✝
x : α
hx : x ∈ s
⊢ (∀ {a b : α}, a ∈ s → b ∈ s → a = b) ↔ s = ∅ ∨ ∃ a, s = {a}
state_after: case inr.intro
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
hs : autoParam s.Finite _auto✝
x : α
hx : x ∈ s
⊢ (s = ∅ ∨ ∃ a, s = {a}) → ∀ {a b : α}, a ∈ s → b ∈ s → a = b
tactic: refine ⟨fun h ↦ Or.inr ⟨x, (singleton_subset_iff.mpr hx).antisymm' fun y hy ↦ h hy hx⟩, ?_⟩
state_before: case inr.intro
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
hs : autoParam s.Finite _auto✝
x : α
hx : x ∈ s
⊢ (s = ∅ ∨ ∃ a, s = {a}) → ∀ {a b : α}, a ∈ s → b ∈ s → a = b
state_after: case inr.intro.inl
α : Type u_1
β : Type u_2
t : Set α
f : α → β
x : α
hs : autoParam ∅.Finite _auto✝
hx : x ∈ ∅
⊢ ∀ {a b : α}, a ∈ ∅ → b ∈ ∅ → a = b

case inr.intro.inr.intro
α : Type u_1
β : Type u_2
t : Set α
f : α → β
x a : α
hs : autoParam {a}.Finite _auto✝
hx : x ∈ {a}
⊢ ∀ {a_1 b : α}, a_1 ∈ {a} → b ∈ {a} → a_1 = b
tactic: rintro (rfl | ⟨a, rfl⟩)
state_before: case inr.intro.inr.intro
α : Type u_1
β : Type u_2
t : Set α
f : α → β
x a : α
hs : autoParam {a}.Finite _auto✝
hx : x ∈ {a}
⊢ ∀ {a_1 b : α}, a_1 ∈ {a} → b ∈ {a} → a_1 = b
state_after: case inr.intro.inr.intro
α : Type u_1
β : Type u_2
t : Set α
f : α → β
x a : α
hs : autoParam {a}.Finite _auto✝
hx : x = a
⊢ ∀ {a_1 b : α}, a_1 = a → b = a → a_1 = b
tactic: simp_rw [mem_singleton_iff] at hx ⊢
state_before: case inr.intro.inr.intro
α : Type u_1
β : Type u_2
t : Set α
f : α → β
x a : α
hs : autoParam {a}.Finite _auto✝
hx : x = a
⊢ ∀ {a_1 b : α}, a_1 = a → b = a → a_1 = b
state_after: case inr.intro.inr.intro
α : Type u_1
β : Type u_2
t : Set α
f : α → β
x : α
hs : autoParam {x}.Finite _auto✝
⊢ ∀ {a b : α}, a = x → b = x → a = b
tactic: subst hx
state_before: case inr.intro.inr.intro
α : Type u_1
β : Type u_2
t : Set α
f : α → β
x : α
hs : autoParam {x}.Finite _auto✝
⊢ ∀ {a b : α}, a = x → b = x → a = b
state_after: no goals
tactic: simp only [forall_eq_apply_imp_iff, imp_self, implies_true]
Theorem: totallySeparatedSpace_of_t1_of_basis_clopen
File: Mathlib/Topology/Separation.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
h : IsTopologicalBasis {s | IsClopen s}
⊢ TotallySeparatedSpace X
state_after: case isTotallySeparated_univ
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
h : IsTopologicalBasis {s | IsClopen s}
⊢ IsTotallySeparated univ
tactic: constructor
state_before: case isTotallySeparated_univ
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
h : IsTopologicalBasis {s | IsClopen s}
⊢ IsTotallySeparated univ
state_after: case isTotallySeparated_univ
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
h : IsTopologicalBasis {s | IsClopen s}
x y : X
hxy : x ≠ y
⊢ ∃ u v, IsOpen u ∧ IsOpen v ∧ x ∈ u ∧ y ∈ v ∧ univ ⊆ u ∪ v ∧ Disjoint u v
tactic: rintro x - y - hxy
state_before: case isTotallySeparated_univ
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
h : IsTopologicalBasis {s | IsClopen s}
x y : X
hxy : x ≠ y
⊢ ∃ u v, IsOpen u ∧ IsOpen v ∧ x ∈ u ∧ y ∈ v ∧ univ ⊆ u ∪ v ∧ Disjoint u v
state_after: case isTotallySeparated_univ.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
h : IsTopologicalBasis {s | IsClopen s}
x y : X
hxy : x ≠ y
U : Set X
hU : U ∈ {s | IsClopen s}
hxU : x ∈ U
hyU : U ⊆ {y_1 | y_1 ≠ y}
⊢ ∃ u v, IsOpen u ∧ IsOpen v ∧ x ∈ u ∧ y ∈ v ∧ univ ⊆ u ∪ v ∧ Disjoint u v
tactic: rcases h.mem_nhds_iff.mp (isOpen_ne.mem_nhds hxy) with ⟨U, hU, hxU, hyU⟩
state_before: case isTotallySeparated_univ.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
h : IsTopologicalBasis {s | IsClopen s}
x y : X
hxy : x ≠ y
U : Set X
hU : U ∈ {s | IsClopen s}
hxU : x ∈ U
hyU : U ⊆ {y_1 | y_1 ≠ y}
⊢ ∃ u v, IsOpen u ∧ IsOpen v ∧ x ∈ u ∧ y ∈ v ∧ univ ⊆ u ∪ v ∧ Disjoint u v
state_after: no goals
tactic: exact ⟨U, Uᶜ, hU.isOpen, hU.compl.isOpen, hxU, fun h => hyU h rfl, (union_compl_self U).superset,
    disjoint_compl_right⟩