ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: CategoryTheory.Presheaf.coconeOfRepresentable_ι_app
File: Mathlib/CategoryTheory/Limits/Presheaf.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝ : Category.{v₁, u₂} ℰ
A : C ⥤ ℰ
P : Cᵒᵖ ⥤ Type v₁
x₁ x₂ : P.Elementsᵒᵖ
f : x₁ ⟶ x₂
⊢ (functorToRepresentables P).map f ≫ (fun x => yonedaEquiv.symm (Opposite.unop x).snd) x₂ =
    (fun x => yonedaEquiv.symm (Opposite.unop x).snd) x₁ ≫ ((Functor.const P.Elementsᵒᵖ).obj P).map f
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝ : Category.{v₁, u₂} ℰ
A : C ⥤ ℰ
P : Cᵒᵖ ⥤ Type v₁
x₁ x₂ : P.Elementsᵒᵖ
f : x₁ ⟶ x₂
⊢ yoneda.map (↑f.unop).unop ≫ yonedaEquiv.symm (Opposite.unop x₂).snd = yonedaEquiv.symm (Opposite.unop x₁).snd ≫ 𝟙 P
tactic: dsimp
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝ : Category.{v₁, u₂} ℰ
A : C ⥤ ℰ
P : Cᵒᵖ ⥤ Type v₁
x₁ x₂ : P.Elementsᵒᵖ
f : x₁ ⟶ x₂
⊢ yoneda.map (↑f.unop).unop ≫ yonedaEquiv.symm (Opposite.unop x₂).snd = yonedaEquiv.symm (Opposite.unop x₁).snd ≫ 𝟙 P
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝ : Category.{v₁, u₂} ℰ
A : C ⥤ ℰ
P : Cᵒᵖ ⥤ Type v₁
x₁ x₂ : P.Elementsᵒᵖ
f : x₁ ⟶ x₂
⊢ yoneda.map (↑f.unop).unop ≫ yonedaEquiv.symm (Opposite.unop x₂).snd = yonedaEquiv.symm (Opposite.unop x₁).snd
tactic: rw [comp_id]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝ : Category.{v₁, u₂} ℰ
A : C ⥤ ℰ
P : Cᵒᵖ ⥤ Type v₁
x₁ x₂ : P.Elementsᵒᵖ
f : x₁ ⟶ x₂
⊢ yoneda.map (↑f.unop).unop ≫ yonedaEquiv.symm (Opposite.unop x₂).snd = yonedaEquiv.symm (Opposite.unop x₁).snd
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝ : Category.{v₁, u₂} ℰ
A : C ⥤ ℰ
P : Cᵒᵖ ⥤ Type v₁
x₁ x₂ : P.Elementsᵒᵖ
f : x₁ ⟶ x₂
⊢ yonedaEquiv.symm (P.map (↑f.unop) (Opposite.unop x₂).snd) = yonedaEquiv.symm (Opposite.unop x₁).snd
tactic: erw [← yonedaEquiv_symm_map]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝ : Category.{v₁, u₂} ℰ
A : C ⥤ ℰ
P : Cᵒᵖ ⥤ Type v₁
x₁ x₂ : P.Elementsᵒᵖ
f : x₁ ⟶ x₂
⊢ yonedaEquiv.symm (P.map (↑f.unop) (Opposite.unop x₂).snd) = yonedaEquiv.symm (Opposite.unop x₁).snd
state_after: case h.e_6.h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝ : Category.{v₁, u₂} ℰ
A : C ⥤ ℰ
P : Cᵒᵖ ⥤ Type v₁
x₁ x₂ : P.Elementsᵒᵖ
f : x₁ ⟶ x₂
⊢ P.map (↑f.unop) (Opposite.unop x₂).snd = (Opposite.unop x₁).snd
tactic: congr 1
state_before: case h.e_6.h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝ : Category.{v₁, u₂} ℰ
A : C ⥤ ℰ
P : Cᵒᵖ ⥤ Type v₁
x₁ x₂ : P.Elementsᵒᵖ
f : x₁ ⟶ x₂
⊢ P.map (↑f.unop) (Opposite.unop x₂).snd = (Opposite.unop x₁).snd
state_after: no goals
tactic: rw [f.unop.2]
Theorem: IsCyclotomicExtension.Rat.nrComplexPlaces_eq_totient_div_two
File: Mathlib/NumberTheory/Cyclotomic/Embeddings.lean

Proof steps:
state_before: n : ℕ+
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
h : IsCyclotomicExtension {n} ℚ K
⊢ NrComplexPlaces K = φ ↑n / 2
state_after: n : ℕ+
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
h : IsCyclotomicExtension {n} ℚ K
this : NumberField K
⊢ NrComplexPlaces K = φ ↑n / 2
tactic: have := IsCyclotomicExtension.numberField {n} ℚ K
state_before: n : ℕ+
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
h : IsCyclotomicExtension {n} ℚ K
this : NumberField K
⊢ NrComplexPlaces K = φ ↑n / 2
state_after: case pos
n : ℕ+
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
h : IsCyclotomicExtension {n} ℚ K
this : NumberField K
hn : 2 < n
⊢ NrComplexPlaces K = φ ↑n / 2

case neg
n : ℕ+
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
h : IsCyclotomicExtension {n} ℚ K
this : NumberField K
hn : ¬2 < n
⊢ NrComplexPlaces K = φ ↑n / 2
tactic: by_cases hn : 2 < n
Theorem: CategoryTheory.Square.toArrowArrowFunctor_map_right_left
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: div_le_div''
File: Mathlib/Algebra/Order/Group/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u
inst✝² : CommGroup α
inst✝¹ : Preorder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c d : α
hab : a ≤ b
hcd : c ≤ d
⊢ a / d ≤ b / c
state_after: α : Type u
inst✝² : CommGroup α
inst✝¹ : Preorder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c d : α
hab : a ≤ b
hcd : c ≤ d
⊢ a * c ≤ b * d
tactic: rw [div_eq_mul_inv, div_eq_mul_inv, mul_comm b, mul_inv_le_inv_mul_iff, mul_comm]
state_before: α : Type u
inst✝² : CommGroup α
inst✝¹ : Preorder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c d : α
hab : a ≤ b
hcd : c ≤ d
⊢ a * c ≤ b * d
state_after: no goals
tactic: exact mul_le_mul' hab hcd
Theorem: abs_zsmul_eq_zero
File: Mathlib/Algebra/Order/Group/Int.lean

Proof steps:
state_before: G : Type u_1
inst✝ : Group G
a : G
n : ℤ
⊢ a ^ |n| = 1 ↔ a ^ n = 1
state_after: no goals
tactic: rw [← Int.natCast_natAbs, zpow_natCast, pow_natAbs_eq_one]
Theorem: SimplexCategory.len_le_of_mono
File: Mathlib/AlgebraicTopology/SimplexCategory.lean

Proof steps:
state_before: x y : SimplexCategory
f : x ⟶ y
⊢ Mono f → x.len ≤ y.len
state_after: x y : SimplexCategory
f : x ⟶ y
hyp_f_mono : Mono f
⊢ x.len ≤ y.len
tactic: intro hyp_f_mono
state_before: x y : SimplexCategory
f : x ⟶ y
hyp_f_mono : Mono f
⊢ x.len ≤ y.len
state_after: x y : SimplexCategory
f : x ⟶ y
hyp_f_mono : Mono f
f_inj : Function.Injective (Hom.toOrderHom f).toFun
⊢ x.len ≤ y.len
tactic: have f_inj : Function.Injective f.toOrderHom.toFun := mono_iff_injective.1 hyp_f_mono
state_before: x y : SimplexCategory
f : x ⟶ y
hyp_f_mono : Mono f
f_inj : Function.Injective (Hom.toOrderHom f).toFun
⊢ x.len ≤ y.len
state_after: no goals
tactic: simpa using Fintype.card_le_of_injective f.toOrderHom.toFun f_inj
Theorem: Multiset.product_singleton
File: Mathlib/Data/Multiset/Bind.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
b : β
s : Multiset α
t : Multiset β
⊢ {a} ×ˢ {b} = {(a, b)}
state_after: no goals
tactic: simp only [SProd.sprod, product, bind_singleton, map_singleton]
Theorem: ProbabilityTheory.hasFiniteIntegral_prod_mk_left
File: Mathlib/Probability/Kernel/IntegralCompProd.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a✝ a : α
s : Set (β × γ)
h2s : ((κ ⊗ₖ η) a) s ≠ ⊤
⊢ HasFiniteIntegral (fun b => ((η (a, b)) (Prod.mk b ⁻¹' s)).toReal) (κ a)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a✝ a : α
s : Set (β × γ)
h2s : ((κ ⊗ₖ η) a) s ≠ ⊤
t : Set (β × γ) := toMeasurable ((κ ⊗ₖ η) a) s
⊢ HasFiniteIntegral (fun b => ((η (a, b)) (Prod.mk b ⁻¹' s)).toReal) (κ a)
tactic: let t := toMeasurable ((κ ⊗ₖ η) a) s
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a✝ a : α
s : Set (β × γ)
h2s : ((κ ⊗ₖ η) a) s ≠ ⊤
t : Set (β × γ) := toMeasurable ((κ ⊗ₖ η) a) s
⊢ HasFiniteIntegral (fun b => ((η (a, b)) (Prod.mk b ⁻¹' s)).toReal) (κ a)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a✝ a : α
s : Set (β × γ)
h2s : ((κ ⊗ₖ η) a) s ≠ ⊤
t : Set (β × γ) := toMeasurable ((κ ⊗ₖ η) a) s
⊢ ∫⁻ (a_1 : β), ENNReal.ofReal ((η (a, a_1)) (Prod.mk a_1 ⁻¹' s)).toReal ∂κ a < ⊤
tactic: simp_rw [HasFiniteIntegral, ennnorm_eq_ofReal toReal_nonneg]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a✝ a : α
s : Set (β × γ)
h2s : ((κ ⊗ₖ η) a) s ≠ ⊤
t : Set (β × γ) := toMeasurable ((κ ⊗ₖ η) a) s
⊢ ∫⁻ (a_1 : β), ENNReal.ofReal ((η (a, a_1)) (Prod.mk a_1 ⁻¹' s)).toReal ∂κ a < ⊤
state_after: no goals
tactic: calc
    ∫⁻ b, ENNReal.ofReal (η (a, b) (Prod.mk b ⁻¹' s)).toReal ∂κ a
    _ ≤ ∫⁻ b, η (a, b) (Prod.mk b ⁻¹' t) ∂κ a := by
      refine lintegral_mono_ae ?_
      filter_upwards [ae_kernel_lt_top a h2s] with b hb
      rw [ofReal_toReal hb.ne]
      exact measure_mono (preimage_mono (subset_toMeasurable _ _))
    _ ≤ (κ ⊗ₖ η) a t := le_compProd_apply _ _ _ _
    _ = (κ ⊗ₖ η) a s := measure_toMeasurable s
    _ < ⊤ := h2s.lt_top
Theorem: absorbs_inter
File: Mathlib/Topology/Bornology/Absorbs.lean

Proof steps:
state_before: G₀ : Type u_1
α : Type u_2
inst✝² : GroupWithZero G₀
inst✝¹ : Bornology G₀
inst✝ : MulAction G₀ α
s t u : Set α
S : Set (Set α)
⊢ Absorbs G₀ (s ∩ t) u ↔ Absorbs G₀ s u ∧ Absorbs G₀ t u
state_after: no goals
tactic: simpa using ((finite_singleton t).insert s).absorbs_sInter
Theorem: FractionalIdeal.count_maximal
File: Mathlib/RingTheory/DedekindDomain/Factorization.lean

Proof steps:
state_before: R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v w : HeightOneSpectrum R
⊢ count K v ↑w.asIdeal = if w = v then 1 else 0
state_after: case pos
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v w : HeightOneSpectrum R
h : w = v
⊢ count K v ↑w.asIdeal = 1

case neg
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v w : HeightOneSpectrum R
h : ¬w = v
⊢ count K v ↑w.asIdeal = 0
tactic: split_ifs with h
Theorem: ModularForm.slash_action_eq'_iff
File: Mathlib/NumberTheory/ModularForms/SlashActions.lean

Proof steps:
state_before: Γ✝ : Subgroup SL(2, ℤ)
k✝ : ℤ
f✝ : ℍ → ℂ
k : ℤ
Γ : Subgroup SL(2, ℤ)
f : ℍ → ℂ
γ : ↥Γ
z : ℍ
⊢ (f ∣[k] γ) z = f z ↔ f (γ • z) = (↑(↑↑↑γ 1 0) * ↑z + ↑(↑↑↑γ 1 1)) ^ k * f z
state_after: Γ✝ : Subgroup SL(2, ℤ)
k✝ : ℤ
f✝ : ℍ → ℂ
k : ℤ
Γ : Subgroup SL(2, ℤ)
f : ℍ → ℂ
γ : ↥Γ
z : ℍ
⊢ f (↑↑γ • z) * ↑(↑↑↑↑γ).det ^ (k - 1) * denom (↑↑γ) z ^ (-k) = f z ↔
    f (γ • z) = (↑(↑↑↑γ 1 0) * ↑z + ↑(↑↑↑γ 1 1)) ^ k * f z
tactic: simp only [subgroup_slash, slash_def, ModularForm.slash]
state_before: Γ✝ : Subgroup SL(2, ℤ)
k✝ : ℤ
f✝ : ℍ → ℂ
k : ℤ
Γ : Subgroup SL(2, ℤ)
f : ℍ → ℂ
γ : ↥Γ
z : ℍ
⊢ f (↑↑γ • z) * ↑(↑↑↑↑γ).det ^ (k - 1) * denom (↑↑γ) z ^ (-k) = f z ↔
    f (γ • z) = (↑(↑↑↑γ 1 0) * ↑z + ↑(↑↑↑γ 1 1)) ^ k * f z
state_after: case h.e'_1.h.e'_2
Γ✝ : Subgroup SL(2, ℤ)
k✝ : ℤ
f✝ : ℍ → ℂ
k : ℤ
Γ : Subgroup SL(2, ℤ)
f : ℍ → ℂ
γ : ↥Γ
z : ℍ
⊢ f (↑↑γ • z) * ↑(↑↑↑↑γ).det ^ (k - 1) * denom (↑↑γ) z ^ (-k) = ((↑(↑↑↑γ 1 0) * ↑z + ↑(↑↑↑γ 1 1)) ^ k)⁻¹ * f (γ • z)

case convert_4
Γ✝ : Subgroup SL(2, ℤ)
k✝ : ℤ
f✝ : ℍ → ℂ
k : ℤ
Γ : Subgroup SL(2, ℤ)
f : ℍ → ℂ
γ : ↥Γ
z : ℍ
⊢ (↑(↑↑↑γ 1 0) * ↑z + ↑(↑↑↑γ 1 1)) ^ k ≠ 0
tactic: convert inv_mul_eq_iff_eq_mul₀ (G₀ := ℂ) _ using 2
Theorem: IsLeftCancelMulZero.to_noZeroDivisors
File: Mathlib/Algebra/Ring/Basic.lean

Proof steps:
state_before: R : Type u_1
α : Type u_2
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : IsLeftCancelMulZero α
x y : α
h : x * y = 0
⊢ x = 0 ∨ y = 0
state_after: case pos
R : Type u_1
α : Type u_2
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : IsLeftCancelMulZero α
x y : α
h : x * y = 0
hx : x = 0
⊢ x = 0 ∨ y = 0

case neg
R : Type u_1
α : Type u_2
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : IsLeftCancelMulZero α
x y : α
h : x * y = 0
hx : ¬x = 0
⊢ x = 0 ∨ y = 0
tactic: by_cases hx : x = 0
state_before: case pos
R : Type u_1
α : Type u_2
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : IsLeftCancelMulZero α
x y : α
h : x * y = 0
hx : x = 0
⊢ x = 0 ∨ y = 0

case neg
R : Type u_1
α : Type u_2
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : IsLeftCancelMulZero α
x y : α
h : x * y = 0
hx : ¬x = 0
⊢ x = 0 ∨ y = 0
state_after: case neg
R : Type u_1
α : Type u_2
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : IsLeftCancelMulZero α
x y : α
h : x * y = 0
hx : ¬x = 0
⊢ x = 0 ∨ y = 0
tactic: { left
        exact hx }
state_before: case neg
R : Type u_1
α : Type u_2
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : IsLeftCancelMulZero α
x y : α
h : x * y = 0
hx : ¬x = 0
⊢ x = 0 ∨ y = 0
state_after: no goals
tactic: { right
        rw [← sub_zero (x * y), ← mul_zero x, ← mul_sub] at h
        have := (IsLeftCancelMulZero.mul_left_cancel_of_ne_zero) hx h
        rwa [sub_zero] at this }
Theorem: Nat.multichoose_zero_succ
File: Mathlib/Data/Nat/Choose/Basic.lean

Proof steps:
state_before: k : ℕ
⊢ multichoose 0 (k + 1) = 0
state_after: no goals
tactic: simp [multichoose]
Theorem: AlgebraicGeometry.StructureSheaf.isUnit_to_basicOpen_self
File: Mathlib/AlgebraicGeometry/StructureSheaf.lean

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
f : R
⊢ (toOpen R (PrimeSpectrum.basicOpen f)) f * const R 1 f (PrimeSpectrum.basicOpen f) ⋯ = 1
state_after: no goals
tactic: rw [toOpen_eq_const, const_mul_rev]
Theorem: Associates.irreducible_iff_prime_iff
File: Mathlib/Algebra/Associated/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoidWithZero α
⊢ (∀ (a : α), Irreducible a ↔ Prime a) ↔ ∀ (a : Associates α), Irreducible a ↔ Prime a
state_after: no goals
tactic: simp_rw [forall_associated, irreducible_mk, prime_mk]
Theorem: Set.preimage_add_preimage_subset
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✝³ : Mul α
inst✝² : Mul β
inst✝¹ : FunLike F α β
inst✝ : MulHomClass F α β
m : F
s✝ t✝ : Set α
s t : Set β
⊢ ⇑m ⁻¹' s * ⇑m ⁻¹' t ⊆ ⇑m ⁻¹' (s * t)
state_after: case intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Mul α
inst✝² : Mul β
inst✝¹ : FunLike F α β
inst✝ : MulHomClass F α β
m : F
s✝ t✝ : Set α
s t : Set β
w✝¹ : α
left✝¹ : w✝¹ ∈ ⇑m ⁻¹' s
w✝ : α
left✝ : w✝ ∈ ⇑m ⁻¹' t
⊢ (fun x x_1 => x * x_1) w✝¹ w✝ ∈ ⇑m ⁻¹' (s * t)
tactic: rintro _ ⟨_, _, _, _, rfl⟩
state_before: case intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Mul α
inst✝² : Mul β
inst✝¹ : FunLike F α β
inst✝ : MulHomClass F α β
m : F
s✝ t✝ : Set α
s t : Set β
w✝¹ : α
left✝¹ : w✝¹ ∈ ⇑m ⁻¹' s
w✝ : α
left✝ : w✝ ∈ ⇑m ⁻¹' t
⊢ (fun x x_1 => x * x_1) w✝¹ w✝ ∈ ⇑m ⁻¹' (s * t)
state_after: no goals
tactic: exact ⟨_, ‹_›, _, ‹_›, (map_mul m _ _).symm⟩
Theorem: closure_diff
File: Mathlib/Topology/Basic.lean

Proof steps:
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ closure s \ closure t = (closure t)ᶜ ∩ closure s
state_after: no goals
tactic: simp only [diff_eq, inter_comm]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ closure ((closure t)ᶜ ∩ s) = closure (s \ closure t)
state_after: no goals
tactic: simp only [diff_eq, inter_comm]
Theorem: Real.Gamma_nonneg_of_nonneg
File: Mathlib/Analysis/SpecialFunctions/Gamma/Basic.lean

Proof steps:
state_before: s : ℝ
hs : 0 ≤ s
⊢ 0 ≤ Gamma s
state_after: case inl
hs : 0 ≤ 0
⊢ 0 ≤ Gamma 0

case inr
s : ℝ
hs : 0 ≤ s
h : 0 < s
⊢ 0 ≤ Gamma s
tactic: obtain rfl | h := eq_or_lt_of_le hs
Theorem: tsum_le_of_sum_le'
File: Mathlib/Topology/Algebra/InfiniteSum/Order.lean

Proof steps:
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝² : OrderedCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f g : ι → α
a a₁ a₂ : α
ha₂ : 1 ≤ a₂
h : ∀ (s : Finset ι), ∏ i ∈ s, f i ≤ a₂
⊢ ∏' (i : ι), f i ≤ a₂
state_after: case pos
ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝² : OrderedCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f g : ι → α
a a₁ a₂ : α
ha₂ : 1 ≤ a₂
h : ∀ (s : Finset ι), ∏ i ∈ s, f i ≤ a₂
hf : Multipliable f
⊢ ∏' (i : ι), f i ≤ a₂

case neg
ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝² : OrderedCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f g : ι → α
a a₁ a₂ : α
ha₂ : 1 ≤ a₂
h : ∀ (s : Finset ι), ∏ i ∈ s, f i ≤ a₂
hf : ¬Multipliable f
⊢ ∏' (i : ι), f i ≤ a₂
tactic: by_cases hf : Multipliable f
Theorem: Num.sub_to_nat
File: Mathlib/Data/Num/Lemmas.lean

Proof steps:
state_before: α : Type u_1
m n : Num
⊢ ↑(ofZNum (m.sub' n)) = ↑m - ↑n
state_after: no goals
tactic: rw [ofZNum_toNat, cast_sub', ← to_nat_to_int, ← to_nat_to_int, Int.toNat_sub]
Theorem: Polynomial.integralNormalization_coeff_ne_degree
File: Mathlib/RingTheory/Polynomial/IntegralNormalization.lean

Proof steps:
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
f : R[X]
i : ℕ
hi : f.degree ≠ ↑i
⊢ f.integralNormalization.coeff i = f.coeff i * f.leadingCoeff ^ (f.natDegree - 1 - i)
state_after: no goals
tactic: rw [integralNormalization_coeff, if_neg hi]
Theorem: Real.arccos_lt_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Inverse.lean

Proof steps:
state_before: x✝ y x : ℝ
⊢ arccos x < π / 2 ↔ 0 < x
state_after: no goals
tactic: simp [arccos]
Theorem: Int.coe_negOnePow
File: Mathlib/Algebra/Ring/NegOnePow.lean

Proof steps:
state_before: K : Type u_1
n : ℤ
inst✝ : Field K
⊢ ↑↑n.negOnePow = (-1) ^ n
state_after: case intro.inl
K : Type u_1
inst✝ : Field K
k : ℤ
⊢ ↑↑(2 * k).negOnePow = (-1) ^ (2 * k)

case intro.inr
K : Type u_1
inst✝ : Field K
k : ℤ
⊢ ↑↑(2 * k + 1).negOnePow = (-1) ^ (2 * k + 1)
tactic: rcases even_or_odd' n with ⟨k, rfl | rfl⟩
Theorem: Set.Iic.codisjoint_iff
File: Mathlib/Order/LatticeIntervals.lean

Proof steps:
state_before: α : Type u_1
a : α
inst✝ : SemilatticeSup α
x y : ↑(Iic a)
⊢ Codisjoint x y ↔ ↑x ⊔ ↑y = a
state_after: no goals
tactic: simpa only [_root_.codisjoint_iff] using Iic.eq_top_iff
Theorem: Asymptotics.isEquivalent_of_tendsto_one
File: Mathlib/Analysis/Asymptotics/AsymptoticEquivalent.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : NormedField β
t u v w : α → β
l : Filter α
hz : ∀ᶠ (x : α) in l, v x = 0 → u x = 0
huv : Tendsto (u / v) l (𝓝 1)
⊢ u ~[l] v
state_after: α : Type u_1
β : Type u_2
inst✝ : NormedField β
t u v w : α → β
l : Filter α
hz : ∀ᶠ (x : α) in l, v x = 0 → u x = 0
huv : Tendsto (u / v) l (𝓝 1)
⊢ ∃ φ, ∃ (_ : Tendsto φ l (𝓝 1)), u =ᶠ[l] φ * v
tactic: rw [isEquivalent_iff_exists_eq_mul]
state_before: α : Type u_1
β : Type u_2
inst✝ : NormedField β
t u v w : α → β
l : Filter α
hz : ∀ᶠ (x : α) in l, v x = 0 → u x = 0
huv : Tendsto (u / v) l (𝓝 1)
⊢ ∃ φ, ∃ (_ : Tendsto φ l (𝓝 1)), u =ᶠ[l] φ * v
state_after: no goals
tactic: exact ⟨u / v, huv, hz.mono fun x hz' ↦ (div_mul_cancel_of_imp hz').symm⟩
Theorem: PartitionOfUnity.exists_finset_nhd
File: Mathlib/Topology/PartitionOfUnity.lean

Proof steps:
state_before: ι : Type u
X : Type v
inst✝⁴ : TopologicalSpace X
E : Type u_1
inst✝³ : AddCommMonoid E
inst✝² : SMulWithZero ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set X
f : PartitionOfUnity ι X s
ρ : PartitionOfUnity ι X
x₀ : X
⊢ ∃ I, ∀ᶠ (x : X) in 𝓝 x₀, ∑ i ∈ I, (ρ i) x = 1 ∧ (support fun x_1 => (ρ x_1) x) ⊆ ↑I
state_after: case intro
ι : Type u
X : Type v
inst✝⁴ : TopologicalSpace X
E : Type u_1
inst✝³ : AddCommMonoid E
inst✝² : SMulWithZero ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set X
f : PartitionOfUnity ι X s
ρ : PartitionOfUnity ι X
x₀ : X
I : Finset ι
H : (∀ᶠ (x : X) in 𝓝[univ] x₀, ∑ i ∈ I, (ρ i) x = 1) ∧ ∀ᶠ (x : X) in 𝓝 x₀, (support fun x_1 => (ρ x_1) x) ⊆ ↑I
⊢ ∃ I, ∀ᶠ (x : X) in 𝓝 x₀, ∑ i ∈ I, (ρ i) x = 1 ∧ (support fun x_1 => (ρ x_1) x) ⊆ ↑I
tactic: rcases ρ.exists_finset_nhd' x₀ with ⟨I, H⟩
state_before: case intro
ι : Type u
X : Type v
inst✝⁴ : TopologicalSpace X
E : Type u_1
inst✝³ : AddCommMonoid E
inst✝² : SMulWithZero ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set X
f : PartitionOfUnity ι X s
ρ : PartitionOfUnity ι X
x₀ : X
I : Finset ι
H : (∀ᶠ (x : X) in 𝓝[univ] x₀, ∑ i ∈ I, (ρ i) x = 1) ∧ ∀ᶠ (x : X) in 𝓝 x₀, (support fun x_1 => (ρ x_1) x) ⊆ ↑I
⊢ ∃ I, ∀ᶠ (x : X) in 𝓝 x₀, ∑ i ∈ I, (ρ i) x = 1 ∧ (support fun x_1 => (ρ x_1) x) ⊆ ↑I
state_after: case h
ι : Type u
X : Type v
inst✝⁴ : TopologicalSpace X
E : Type u_1
inst✝³ : AddCommMonoid E
inst✝² : SMulWithZero ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set X
f : PartitionOfUnity ι X s
ρ : PartitionOfUnity ι X
x₀ : X
I : Finset ι
H : (∀ᶠ (x : X) in 𝓝[univ] x₀, ∑ i ∈ I, (ρ i) x = 1) ∧ ∀ᶠ (x : X) in 𝓝 x₀, (support fun x_1 => (ρ x_1) x) ⊆ ↑I
⊢ ∀ᶠ (x : X) in 𝓝 x₀, ∑ i ∈ I, (ρ i) x = 1 ∧ (support fun x_1 => (ρ x_1) x) ⊆ ↑I
tactic: use I
state_before: case h
ι : Type u
X : Type v
inst✝⁴ : TopologicalSpace X
E : Type u_1
inst✝³ : AddCommMonoid E
inst✝² : SMulWithZero ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set X
f : PartitionOfUnity ι X s
ρ : PartitionOfUnity ι X
x₀ : X
I : Finset ι
H : (∀ᶠ (x : X) in 𝓝[univ] x₀, ∑ i ∈ I, (ρ i) x = 1) ∧ ∀ᶠ (x : X) in 𝓝 x₀, (support fun x_1 => (ρ x_1) x) ⊆ ↑I
⊢ ∀ᶠ (x : X) in 𝓝 x₀, ∑ i ∈ I, (ρ i) x = 1 ∧ (support fun x_1 => (ρ x_1) x) ⊆ ↑I
state_after: no goals
tactic: rwa [nhdsWithin_univ, ← eventually_and] at H
Theorem: Subgroup.mk_eq_one
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
H K : Subgroup G
g : G
h : g ∈ H
⊢ ⟨g, h⟩ = 1 ↔ g = 1
state_after: no goals
tactic: simp
Theorem: MeasureTheory.Integrable.ofReal
File: Mathlib/MeasureTheory/Function/L1Space.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
𝕜 : Type u_5
inst✝ : RCLike 𝕜
f✝ : α → 𝕜
f : α → ℝ
hf : Integrable f μ
⊢ Integrable (fun x => ↑(f x)) μ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
𝕜 : Type u_5
inst✝ : RCLike 𝕜
f✝ : α → 𝕜
f : α → ℝ
hf : Memℒp f 1 μ
⊢ Memℒp (fun x => ↑(f x)) 1 μ
tactic: rw [← memℒp_one_iff_integrable] at hf ⊢
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
𝕜 : Type u_5
inst✝ : RCLike 𝕜
f✝ : α → 𝕜
f : α → ℝ
hf : Memℒp f 1 μ
⊢ Memℒp (fun x => ↑(f x)) 1 μ
state_after: no goals
tactic: exact hf.ofReal
Theorem: isCoprime_self
File: Mathlib/RingTheory/Coprime/Basic.lean

Proof steps:
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
x✝ : IsCoprime x x
a b : R
h : a * x + b * x = 1
⊢ x * (a + b) = 1
state_after: no goals
tactic: rwa [mul_comm, add_mul]
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
h : IsUnit x
b : R
hb : b * x = 1
⊢ b * x + 0 * x = 1
state_after: no goals
tactic: rwa [zero_mul, add_zero]