ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: cauchy_comap_uniformSpace
File: Mathlib/Topology/UniformSpace/Cauchy.lean

Proof steps:
state_before: α : Type u
β : Type v
uniformSpace : UniformSpace α
u : UniformSpace β
f : α → β
l : Filter α
⊢ Cauchy l ↔ Cauchy (map f l)
state_after: α : Type u
β : Type v
uniformSpace : UniformSpace α
u : UniformSpace β
f : α → β
l : Filter α
⊢ l.NeBot ∧ l ×ˢ l ≤ 𝓤 α ↔ l.NeBot ∧ l ×ˢ l ≤ Filter.comap (fun p => (f p.1, f p.2)) (𝓤 β)
tactic: simp only [Cauchy, map_neBot_iff, prod_map_map_eq, map_le_iff_le_comap]
state_before: α : Type u
β : Type v
uniformSpace : UniformSpace α
u : UniformSpace β
f : α → β
l : Filter α
⊢ l.NeBot ∧ l ×ˢ l ≤ 𝓤 α ↔ l.NeBot ∧ l ×ˢ l ≤ Filter.comap (fun p => (f p.1, f p.2)) (𝓤 β)
state_after: no goals
tactic: rfl
Theorem: CategoryTheory.Functor.IsCoverDense.ext
File: Mathlib/CategoryTheory/Sites/DenseSubsite.lean

Proof steps:
state_before: C : Type u_1
inst✝⁴ : Category.{u_7, u_1} C
D : Type u_2
inst✝³ : Category.{u_6, u_2} D
E : Type u_3
inst✝² : Category.{?u.7542, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝¹ : Category.{?u.7594, u_4} A
G : C ⥤ D
inst✝ : G.IsCoverDense K
ℱ : SheafOfTypes K
X : D
s t : ℱ.val.obj (op X)
h : ∀ ⦃Y : C⦄ (f : G.obj Y ⟶ X), ℱ.val.map f.op s = ℱ.val.map f.op t
⊢ s = t
state_after: C : Type u_1
inst✝⁴ : Category.{u_7, u_1} C
D : Type u_2
inst✝³ : Category.{u_6, u_2} D
E : Type u_3
inst✝² : Category.{?u.7542, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝¹ : Category.{?u.7594, u_4} A
G : C ⥤ D
inst✝ : G.IsCoverDense K
ℱ : SheafOfTypes K
X : D
s t : ℱ.val.obj (op X)
h : ∀ ⦃Y : C⦄ (f : G.obj Y ⟶ X), ℱ.val.map f.op s = ℱ.val.map f.op t
⊢ ∀ ⦃Y : D⦄ ⦃f : Y ⟶ X⦄, (Sieve.coverByImage G X).arrows f → ℱ.val.map f.op s = ℱ.val.map f.op t
tactic: apply (ℱ.cond (Sieve.coverByImage G X) (G.is_cover_of_isCoverDense K X)).isSeparatedFor.ext
state_before: C : Type u_1
inst✝⁴ : Category.{u_7, u_1} C
D : Type u_2
inst✝³ : Category.{u_6, u_2} D
E : Type u_3
inst✝² : Category.{?u.7542, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝¹ : Category.{?u.7594, u_4} A
G : C ⥤ D
inst✝ : G.IsCoverDense K
ℱ : SheafOfTypes K
X : D
s t : ℱ.val.obj (op X)
h : ∀ ⦃Y : C⦄ (f : G.obj Y ⟶ X), ℱ.val.map f.op s = ℱ.val.map f.op t
⊢ ∀ ⦃Y : D⦄ ⦃f : Y ⟶ X⦄, (Sieve.coverByImage G X).arrows f → ℱ.val.map f.op s = ℱ.val.map f.op t
state_after: case intro.mk.refl
C : Type u_1
inst✝⁴ : Category.{u_7, u_1} C
D : Type u_2
inst✝³ : Category.{u_6, u_2} D
E : Type u_3
inst✝² : Category.{?u.7542, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝¹ : Category.{?u.7594, u_4} A
G : C ⥤ D
inst✝ : G.IsCoverDense K
ℱ : SheafOfTypes K
X : D
s t : ℱ.val.obj (op X)
h : ∀ ⦃Y : C⦄ (f : G.obj Y ⟶ X), ℱ.val.map f.op s = ℱ.val.map f.op t
Y : D
Z : C
f₁ : Y ⟶ G.obj Z
f₂ : G.obj Z ⟶ X
⊢ ℱ.val.map (f₁ ≫ f₂).op s = ℱ.val.map (f₁ ≫ f₂).op t
tactic: rintro Y _ ⟨Z, f₁, f₂, ⟨rfl⟩⟩
state_before: case intro.mk.refl
C : Type u_1
inst✝⁴ : Category.{u_7, u_1} C
D : Type u_2
inst✝³ : Category.{u_6, u_2} D
E : Type u_3
inst✝² : Category.{?u.7542, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝¹ : Category.{?u.7594, u_4} A
G : C ⥤ D
inst✝ : G.IsCoverDense K
ℱ : SheafOfTypes K
X : D
s t : ℱ.val.obj (op X)
h : ∀ ⦃Y : C⦄ (f : G.obj Y ⟶ X), ℱ.val.map f.op s = ℱ.val.map f.op t
Y : D
Z : C
f₁ : Y ⟶ G.obj Z
f₂ : G.obj Z ⟶ X
⊢ ℱ.val.map (f₁ ≫ f₂).op s = ℱ.val.map (f₁ ≫ f₂).op t
state_after: no goals
tactic: simp [h f₂]
Theorem: String.extract_of_valid
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

Proof steps:
state_before: l m r : List Char
⊢ { data := l ++ m ++ r }.extract { byteIdx := utf8Len l } { byteIdx := utf8Len l + utf8Len m } = { data := m }
state_after: l m r : List Char
⊢ (if utf8Len l ≥ utf8Len l + utf8Len m then ""
    else { data := extract.go₁ (l ++ m ++ r) 0 { byteIdx := utf8Len l } { byteIdx := utf8Len l + utf8Len m } }) =
    { data := m }
tactic: simp only [extract]
state_before: l m r : List Char
⊢ (if utf8Len l ≥ utf8Len l + utf8Len m then ""
    else { data := extract.go₁ (l ++ m ++ r) 0 { byteIdx := utf8Len l } { byteIdx := utf8Len l + utf8Len m } }) =
    { data := m }
state_after: case isTrue
l m r : List Char
h✝ : utf8Len l ≥ utf8Len l + utf8Len m
⊢ "" = { data := m }

case isFalse
l m r : List Char
h✝ : ¬utf8Len l ≥ utf8Len l + utf8Len m
⊢ { data := extract.go₁ (l ++ m ++ r) 0 { byteIdx := utf8Len l } { byteIdx := utf8Len l + utf8Len m } } = { data := m }
tactic: split
Theorem: MeasureTheory.Measure.singularPart_le
File: Mathlib/MeasureTheory/Decomposition/Lebesgue.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
⊢ μ.singularPart ν ≤ μ
state_after: case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : μ.HaveLebesgueDecomposition ν
⊢ μ.singularPart ν ≤ μ

case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : ¬μ.HaveLebesgueDecomposition ν
⊢ μ.singularPart ν ≤ μ
tactic: by_cases hl : HaveLebesgueDecomposition μ ν
Theorem: WittVector.coeff_select
File: Mathlib/RingTheory/WittVector/InitTail.lean

Proof steps:
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n✝ : ℕ
R : Type u_1
inst✝ : CommRing R
P : ℕ → Prop
x : 𝕎 R
n : ℕ
⊢ (select P x).coeff n = (aeval x.coeff) (selectPoly P n)
state_after: p : ℕ
hp : Fact (Nat.Prime p)
n✝ : ℕ
R : Type u_1
inst✝ : CommRing R
P : ℕ → Prop
x : 𝕎 R
n : ℕ
⊢ (mk p fun n => if P n then x.coeff n else 0).coeff n = (aeval x.coeff) (if P n then X n else 0)
tactic: dsimp [select, selectPoly]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n✝ : ℕ
R : Type u_1
inst✝ : CommRing R
P : ℕ → Prop
x : 𝕎 R
n : ℕ
⊢ (mk p fun n => if P n then x.coeff n else 0).coeff n = (aeval x.coeff) (if P n then X n else 0)
state_after: case pos
p : ℕ
hp : Fact (Nat.Prime p)
n✝ : ℕ
R : Type u_1
inst✝ : CommRing R
P : ℕ → Prop
x : 𝕎 R
n : ℕ
hi : P n
⊢ (mk p fun n => if P n then x.coeff n else 0).coeff n = (aeval x.coeff) (X n)

case neg
p : ℕ
hp : Fact (Nat.Prime p)
n✝ : ℕ
R : Type u_1
inst✝ : CommRing R
P : ℕ → Prop
x : 𝕎 R
n : ℕ
hi : ¬P n
⊢ (mk p fun n => if P n then x.coeff n else 0).coeff n = (aeval x.coeff) 0
tactic: split_ifs with hi
Theorem: Order.le_le_succ_iff
File: Mathlib/Order/SuccPred/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : SuccOrder α
a b : α
⊢ a ≤ b ∧ b ≤ succ a ↔ b = a ∨ b = succ a
state_after: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : SuccOrder α
a b : α
⊢ b = a ∨ b = succ a → a ≤ b ∧ b ≤ succ a
tactic: refine
    ⟨fun h =>
      or_iff_not_imp_left.2 fun hba : b ≠ a =>
        h.2.antisymm (succ_le_of_lt <| h.1.lt_of_ne <| hba.symm),
      ?_⟩
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : SuccOrder α
a b : α
⊢ b = a ∨ b = succ a → a ≤ b ∧ b ≤ succ a
state_after: case inl
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : SuccOrder α
b : α
⊢ b ≤ b ∧ b ≤ succ b

case inr
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : SuccOrder α
a : α
⊢ a ≤ succ a ∧ succ a ≤ succ a
tactic: rintro (rfl | rfl)
Theorem: VectorFourier.fourierIntegral_continuousLinearMap_apply
File: Mathlib/Analysis/Fourier/FourierTransform.lean

Proof steps:
state_before: 𝕜 : Type u_1
ι : Type u_2
E : Type u_3
F : Type u_4
V : Type u_5
W : Type u_6
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NormedAddCommGroup V
inst✝¹² : NormedSpace 𝕜 V
inst✝¹¹ : MeasurableSpace V
inst✝¹⁰ : BorelSpace V
inst✝⁹ : NormedAddCommGroup W
inst✝⁸ : NormedSpace 𝕜 W
inst✝⁷ : MeasurableSpace W
inst✝⁶ : BorelSpace W
e : AddChar 𝕜 ↥𝕊
μ : Measure V
L : V →L[𝕜] W →L[𝕜] 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℂ E
M : ι → Type u_7
inst✝¹ : (i : ι) → NormedAddCommGroup (M i)
inst✝ : (i : ι) → NormedSpace ℝ (M i)
f : V → F →L[ℝ] E
a : F
w : W
he : Continuous ⇑e
hf : Integrable f μ
⊢ (fourierIntegral e μ L.toLinearMap₂ f w) a = fourierIntegral e μ L.toLinearMap₂ (fun x => (f x) a) w
state_after: 𝕜 : Type u_1
ι : Type u_2
E : Type u_3
F : Type u_4
V : Type u_5
W : Type u_6
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NormedAddCommGroup V
inst✝¹² : NormedSpace 𝕜 V
inst✝¹¹ : MeasurableSpace V
inst✝¹⁰ : BorelSpace V
inst✝⁹ : NormedAddCommGroup W
inst✝⁸ : NormedSpace 𝕜 W
inst✝⁷ : MeasurableSpace W
inst✝⁶ : BorelSpace W
e : AddChar 𝕜 ↥𝕊
μ : Measure V
L : V →L[𝕜] W →L[𝕜] 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℂ E
M : ι → Type u_7
inst✝¹ : (i : ι) → NormedAddCommGroup (M i)
inst✝ : (i : ι) → NormedSpace ℝ (M i)
f : V → F →L[ℝ] E
a : F
w : W
he : Continuous ⇑e
hf : Integrable f μ
⊢ ∫ (x : V), (e (-(L.toLinearMap₂ x) w) • f x) a ∂μ = fourierIntegral e μ L.toLinearMap₂ (fun x => (f x) a) w

case φ_int
𝕜 : Type u_1
ι : Type u_2
E : Type u_3
F : Type u_4
V : Type u_5
W : Type u_6
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NormedAddCommGroup V
inst✝¹² : NormedSpace 𝕜 V
inst✝¹¹ : MeasurableSpace V
inst✝¹⁰ : BorelSpace V
inst✝⁹ : NormedAddCommGroup W
inst✝⁸ : NormedSpace 𝕜 W
inst✝⁷ : MeasurableSpace W
inst✝⁶ : BorelSpace W
e : AddChar 𝕜 ↥𝕊
μ : Measure V
L : V →L[𝕜] W →L[𝕜] 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℂ E
M : ι → Type u_7
inst✝¹ : (i : ι) → NormedAddCommGroup (M i)
inst✝ : (i : ι) → NormedSpace ℝ (M i)
f : V → F →L[ℝ] E
a : F
w : W
he : Continuous ⇑e
hf : Integrable f μ
⊢ Integrable (fun v => e (-(L.toLinearMap₂ v) w) • f v) μ
tactic: rw [fourierIntegral, ContinuousLinearMap.integral_apply]
Theorem: DirectSum.coe_of_mul_apply
File: Mathlib/Algebra/DirectSum/Internal.lean

Proof steps:
state_before: ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁹ : DecidableEq ι
inst✝⁸ : Semiring R
inst✝⁷ : SetLike σ R
inst✝⁶ : AddSubmonoidClass σ R
A : ι → σ
inst✝⁵ : CanonicallyOrderedAddCommMonoid ι
inst✝⁴ : SetLike.GradedMonoid A
inst✝³ : Sub ι
inst✝² : OrderedSub ι
inst✝¹ : ContravariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
i : ι
r : ↥(A i)
r' : ⨁ (i : ι), ↥(A i)
n : ι
inst✝ : Decidable (i ≤ n)
⊢ ↑(((of (fun i => ↥(A i)) i) r * r') n) = if i ≤ n then ↑r * ↑(r' (n - i)) else 0
state_after: case pos
ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁹ : DecidableEq ι
inst✝⁸ : Semiring R
inst✝⁷ : SetLike σ R
inst✝⁶ : AddSubmonoidClass σ R
A : ι → σ
inst✝⁵ : CanonicallyOrderedAddCommMonoid ι
inst✝⁴ : SetLike.GradedMonoid A
inst✝³ : Sub ι
inst✝² : OrderedSub ι
inst✝¹ : ContravariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
i : ι
r : ↥(A i)
r' : ⨁ (i : ι), ↥(A i)
n : ι
inst✝ : Decidable (i ≤ n)
h : i ≤ n
⊢ ↑(((of (fun i => ↥(A i)) i) r * r') n) = ↑r * ↑(r' (n - i))

case neg
ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁹ : DecidableEq ι
inst✝⁸ : Semiring R
inst✝⁷ : SetLike σ R
inst✝⁶ : AddSubmonoidClass σ R
A : ι → σ
inst✝⁵ : CanonicallyOrderedAddCommMonoid ι
inst✝⁴ : SetLike.GradedMonoid A
inst✝³ : Sub ι
inst✝² : OrderedSub ι
inst✝¹ : ContravariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
i : ι
r : ↥(A i)
r' : ⨁ (i : ι), ↥(A i)
n : ι
inst✝ : Decidable (i ≤ n)
h : ¬i ≤ n
⊢ ↑(((of (fun i => ↥(A i)) i) r * r') n) = 0
tactic: split_ifs with h
state_before: case pos
ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁹ : DecidableEq ι
inst✝⁸ : Semiring R
inst✝⁷ : SetLike σ R
inst✝⁶ : AddSubmonoidClass σ R
A : ι → σ
inst✝⁵ : CanonicallyOrderedAddCommMonoid ι
inst✝⁴ : SetLike.GradedMonoid A
inst✝³ : Sub ι
inst✝² : OrderedSub ι
inst✝¹ : ContravariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
i : ι
r : ↥(A i)
r' : ⨁ (i : ι), ↥(A i)
n : ι
inst✝ : Decidable (i ≤ n)
h : i ≤ n
⊢ ↑(((of (fun i => ↥(A i)) i) r * r') n) = ↑r * ↑(r' (n - i))

case neg
ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁹ : DecidableEq ι
inst✝⁸ : Semiring R
inst✝⁷ : SetLike σ R
inst✝⁶ : AddSubmonoidClass σ R
A : ι → σ
inst✝⁵ : CanonicallyOrderedAddCommMonoid ι
inst✝⁴ : SetLike.GradedMonoid A
inst✝³ : Sub ι
inst✝² : OrderedSub ι
inst✝¹ : ContravariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
i : ι
r : ↥(A i)
r' : ⨁ (i : ι), ↥(A i)
n : ι
inst✝ : Decidable (i ≤ n)
h : ¬i ≤ n
⊢ ↑(((of (fun i => ↥(A i)) i) r * r') n) = 0
state_after: no goals
tactic: exacts [coe_of_mul_apply_of_le _ _ _ n h, coe_of_mul_apply_of_not_le _ _ _ n h]
Theorem: MeasureTheory.aecover_restrict_of_ae_imp
File: Mathlib/MeasureTheory/Integral/IntegralEqImproper.lean

Proof steps:
state_before: α : Type u_1
ι : Type u_2
inst✝ : MeasurableSpace α
μ : Measure α
l : Filter ι
s : Set α
φ : ι → Set α
hs : MeasurableSet s
ae_eventually_mem : ∀ᵐ (x : α) ∂μ, x ∈ s → ∀ᶠ (n : ι) in l, x ∈ φ n
measurable : ∀ (n : ι), MeasurableSet (φ n)
⊢ ∀ᵐ (x : α) ∂μ.restrict s, ∀ᶠ (i : ι) in l, x ∈ φ i
state_after: no goals
tactic: rwa [ae_restrict_iff' hs]
Theorem: CategoryTheory.Square.toArrowArrowFunctor_map_right_right
File: Mathlib/CategoryTheory/Square.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u'
inst✝ : Category.{v', u'} D
X✝ Y✝ : Square C
φ : X✝ ⟶ Y✝
⊢ Arrow.homMk ⋯ ≫ ((fun sq => Arrow.mk (Arrow.homMk ⋯)) Y✝).hom =
    ((fun sq => Arrow.mk (Arrow.homMk ⋯)) X✝).hom ≫ Arrow.homMk ⋯
state_after: no goals
tactic: aesop_cat
Theorem: Finset.prod_sdiff_le_prod_sdiff
File: Mathlib/Algebra/Order/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝¹ : OrderedCancelCommMonoid M
f g : ι → M
s t : Finset ι
inst✝ : DecidableEq ι
⊢ ∏ i ∈ s \ t, f i ≤ ∏ i ∈ t \ s, f i ↔ ∏ i ∈ s, f i ≤ ∏ i ∈ t, f i
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝¹ : OrderedCancelCommMonoid M
f g : ι → M
s t : Finset ι
inst✝ : DecidableEq ι
⊢ Disjoint (t \ s) (s ∩ t)
tactic: rw [← mul_le_mul_iff_right, ← prod_union (disjoint_sdiff_inter _ _), sdiff_union_inter,
    ← prod_union, inter_comm, sdiff_union_inter]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝¹ : OrderedCancelCommMonoid M
f g : ι → M
s t : Finset ι
inst✝ : DecidableEq ι
⊢ Disjoint (t \ s) (s ∩ t)
state_after: no goals
tactic: simpa only [inter_comm] using disjoint_sdiff_inter t s
Theorem: tendsto_prod_nat_add
File: Mathlib/Topology/Algebra/InfiniteSum/NatInt.lean

Proof steps:
state_before: M : Type u_1
inst✝⁵ : CommMonoid M
inst✝⁴ : TopologicalSpace M
m m' : M
G : Type u_2
inst✝³ : CommGroup G
g g' : G
inst✝² : TopologicalSpace G
inst✝¹ : TopologicalGroup G
inst✝ : T2Space G
f : ℕ → G
⊢ Tendsto (fun i => ∏' (k : ℕ), f (k + i)) atTop (𝓝 1)
state_after: case pos
M : Type u_1
inst✝⁵ : CommMonoid M
inst✝⁴ : TopologicalSpace M
m m' : M
G : Type u_2
inst✝³ : CommGroup G
g g' : G
inst✝² : TopologicalSpace G
inst✝¹ : TopologicalGroup G
inst✝ : T2Space G
f : ℕ → G
hf : Multipliable f
⊢ Tendsto (fun i => ∏' (k : ℕ), f (k + i)) atTop (𝓝 1)

case neg
M : Type u_1
inst✝⁵ : CommMonoid M
inst✝⁴ : TopologicalSpace M
m m' : M
G : Type u_2
inst✝³ : CommGroup G
g g' : G
inst✝² : TopologicalSpace G
inst✝¹ : TopologicalGroup G
inst✝ : T2Space G
f : ℕ → G
hf : ¬Multipliable f
⊢ Tendsto (fun i => ∏' (k : ℕ), f (k + i)) atTop (𝓝 1)
tactic: by_cases hf : Multipliable f
Theorem: Fin.cycleRange_last
File: Mathlib/GroupTheory/Perm/Fin.lean

Proof steps:
state_before: n : ℕ
⊢ (last n).cycleRange = finRotate (n + 1)
state_after: case H.h
n : ℕ
i : Fin (n + 1)
⊢ ↑((last n).cycleRange i) = ↑((finRotate (n + 1)) i)
tactic: ext i
state_before: case H.h
n : ℕ
i : Fin (n + 1)
⊢ ↑((last n).cycleRange i) = ↑((finRotate (n + 1)) i)
state_after: no goals
tactic: rw [coe_cycleRange_of_le (le_last _), coe_finRotate]
Theorem: SimpleGraph.Partition.mem_partOfVertex
File: Mathlib/Combinatorics/SimpleGraph/Partition.lean

Proof steps:
state_before: V : Type u
G : SimpleGraph V
P : G.Partition
v : V
⊢ v ∈ P.partOfVertex v
state_after: case intro.intro
V : Type u
G : SimpleGraph V
P : G.Partition
v : V
right✝ : ∀ (y : Set V), (fun b => b ∈ P.parts ∧ v ∈ b) y → y = Exists.choose ⋯
left✝ : Exists.choose ⋯ ∈ P.parts
h : v ∈ Exists.choose ⋯
⊢ v ∈ P.partOfVertex v
tactic: obtain ⟨⟨_, h⟩, _⟩ := (P.isPartition.2 v).choose_spec
state_before: case intro.intro
V : Type u
G : SimpleGraph V
P : G.Partition
v : V
right✝ : ∀ (y : Set V), (fun b => b ∈ P.parts ∧ v ∈ b) y → y = Exists.choose ⋯
left✝ : Exists.choose ⋯ ∈ P.parts
h : v ∈ Exists.choose ⋯
⊢ v ∈ P.partOfVertex v
state_after: no goals
tactic: exact h
Theorem: CategoryTheory.ShortComplex.rightHomologyMap'_sub
File: Mathlib/Algebra/Homology/ShortComplex/Preadditive.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ φ' : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
⊢ rightHomologyMap' (φ - φ') h₁ h₂ = rightHomologyMap' φ h₁ h₂ - rightHomologyMap' φ' h₁ h₂
state_after: no goals
tactic: simp only [sub_eq_add_neg, rightHomologyMap'_add, rightHomologyMap'_neg]
Theorem: equivShrink_inv
File: Mathlib/Logic/Small/Group.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Inv α
inst✝ : Small.{u_2, u_1} α
x : α
⊢ (equivShrink α) x⁻¹ = ((equivShrink α) x)⁻¹
state_after: α : Type u_1
inst✝¹ : Inv α
inst✝ : Small.{u_2, u_1} α
x : α
⊢ (equivShrink α) x⁻¹ = (equivShrink α).symm.symm ((equivShrink α).symm ((equivShrink α) x))⁻¹
tactic: rw [Equiv.inv_def]
state_before: α : Type u_1
inst✝¹ : Inv α
inst✝ : Small.{u_2, u_1} α
x : α
⊢ (equivShrink α) x⁻¹ = (equivShrink α).symm.symm ((equivShrink α).symm ((equivShrink α) x))⁻¹
state_after: no goals
tactic: simp
Theorem: TopologicalSpace.Compacts.equiv_symm_apply
File: Mathlib/Topology/Sets/Compacts.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f : α ≃ₜ β
s : Compacts α
⊢ Compacts.map ⇑f.symm ⋯ (Compacts.map ⇑f ⋯ s) = s
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f : α ≃ₜ β
s : Compacts α
⊢ ↑(Compacts.map ⇑f.symm ⋯ (Compacts.map ⇑f ⋯ s)) = ↑s
tactic: ext1
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f : α ≃ₜ β
s : Compacts α
⊢ ↑(Compacts.map ⇑f.symm ⋯ (Compacts.map ⇑f ⋯ s)) = ↑s
state_after: no goals
tactic: simp only [coe_map, ← image_comp, f.symm_comp_self, image_id]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f : α ≃ₜ β
s : Compacts β
⊢ Compacts.map ⇑f ⋯ (Compacts.map ⇑f.symm ⋯ s) = s
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f : α ≃ₜ β
s : Compacts β
⊢ ↑(Compacts.map ⇑f ⋯ (Compacts.map ⇑f.symm ⋯ s)) = ↑s
tactic: ext1
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f : α ≃ₜ β
s : Compacts β
⊢ ↑(Compacts.map ⇑f ⋯ (Compacts.map ⇑f.symm ⋯ s)) = ↑s
state_after: no goals
tactic: simp only [coe_map, ← image_comp, f.self_comp_symm, image_id]
Theorem: add_thirds
File: Mathlib/Algebra/Order/Field/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a✝ b c d e : α
m n : ℤ
a : α
⊢ a / 3 + a / 3 + a / 3 = a
state_after: no goals
tactic: rw [div_add_div_same, div_add_div_same, ← two_mul, ← add_one_mul 2 a, two_add_one_eq_three,
    mul_div_cancel_left₀ a three_ne_zero]
Theorem: GroupFilterBasis.N_one
File: Mathlib/Topology/Algebra/FilterBasis.lean

Proof steps:
state_before: G : Type u
inst✝ : Group G
B✝ B : GroupFilterBasis G
⊢ B.N 1 = toFilterBasis.filter
state_after: no goals
tactic: simp only [N, one_mul, map_id']
Theorem: CategoryTheory.Triangulated.Subcategory.zero
File: Mathlib/CategoryTheory/Triangulated/Subcategory.lean

Proof steps:
state_before: C : Type u_1
inst✝⁶ : Category.{u_2, u_1} C
inst✝⁵ : HasZeroObject C
inst✝⁴ : HasShift C ℤ
inst✝³ : Preadditive C
inst✝² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹ : Pretriangulated C
S : Subcategory C
inst✝ : ClosedUnderIsomorphisms S.P
⊢ S.P 0
state_after: case intro.intro
C : Type u_1
inst✝⁶ : Category.{u_2, u_1} C
inst✝⁵ : HasZeroObject C
inst✝⁴ : HasShift C ℤ
inst✝³ : Preadditive C
inst✝² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹ : Pretriangulated C
S : Subcategory C
inst✝ : ClosedUnderIsomorphisms S.P
X : C
hX : IsZero X
mem : S.P X
⊢ S.P 0
tactic: obtain ⟨X, hX, mem⟩ := S.zero'
state_before: case intro.intro
C : Type u_1
inst✝⁶ : Category.{u_2, u_1} C
inst✝⁵ : HasZeroObject C
inst✝⁴ : HasShift C ℤ
inst✝³ : Preadditive C
inst✝² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹ : Pretriangulated C
S : Subcategory C
inst✝ : ClosedUnderIsomorphisms S.P
X : C
hX : IsZero X
mem : S.P X
⊢ S.P 0
state_after: no goals
tactic: exact mem_of_iso _ hX.isoZero mem
Theorem: VitaliFamily.aemeasurable_limRatio
File: Mathlib/MeasureTheory/Covering/Differentiation.lean

Proof steps:
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
⊢ AEMeasurable (v.limRatio ρ) μ
state_after: α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
p q : ℝ≥0
hpq : p < q
⊢ ∃ u v_1,
    MeasurableSet u ∧
      MeasurableSet v_1 ∧ {x | v.limRatio ρ x < ↑p} ⊆ u ∧ {x | ↑q < v.limRatio ρ x} ⊆ v_1 ∧ μ (u ∩ v_1) = 0
tactic: apply ENNReal.aemeasurable_of_exist_almost_disjoint_supersets _ _ fun p q hpq => ?_
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
p q : ℝ≥0
hpq : p < q
⊢ ∃ u v_1,
    MeasurableSet u ∧
      MeasurableSet v_1 ∧ {x | v.limRatio ρ x < ↑p} ⊆ u ∧ {x | ↑q < v.limRatio ρ x} ⊆ v_1 ∧ μ (u ∩ v_1) = 0
state_after: no goals
tactic: exact v.exists_measurable_supersets_limRatio hρ hpq
Theorem: ExpChar.exists
File: Mathlib/Algebra/CharP/ExpChar.lean

Proof steps:
state_before: R : Type u
inst✝¹ : Ring R
inst✝ : IsDomain R
⊢ ∃ q, ExpChar R q
state_after: case inl
R : Type u
inst✝¹ : Ring R
inst✝ : IsDomain R
h✝ : CharZero R
⊢ ∃ q, ExpChar R q

case inr.intro.intro.mk
R : Type u
inst✝¹ : Ring R
inst✝ : IsDomain R
p : ℕ
right✝ : CharP R p
hp : Nat.Prime p
⊢ ∃ q, ExpChar R q
tactic: obtain _ | ⟨p, ⟨hp⟩, _⟩ := CharP.exists' R
state_before: case inl
R : Type u
inst✝¹ : Ring R
inst✝ : IsDomain R
h✝ : CharZero R
⊢ ∃ q, ExpChar R q

case inr.intro.intro.mk
R : Type u
inst✝¹ : Ring R
inst✝ : IsDomain R
p : ℕ
right✝ : CharP R p
hp : Nat.Prime p
⊢ ∃ q, ExpChar R q
state_after: no goals
tactic: exacts [⟨1, .zero⟩, ⟨p, .prime hp⟩]
Theorem: ZFSet.ext_iff
File: Mathlib/SetTheory/ZFC/Basic.lean

Proof steps:
state_before: x y : ZFSet
h : x = y
⊢ ∀ (z : ZFSet), z ∈ x ↔ z ∈ y
state_after: no goals
tactic: simp [h]