ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: AkraBazziRecurrence.isEquivalent_deriv_rpow_p_mul_one_sub_smoothingFn
File: Mathlib/Computability/AkraBazzi/AkraBazzi.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
p : ℝ
hp : p ≠ 0
⊢ (fun z => p * z ^ (p - 1) * (1 - ε z) + z ^ (p - 1) / log z ^ 2) ~[atTop] fun z => p * z ^ (p - 1)
state_after: case one
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
p : ℝ
hp : p ≠ 0
⊢ (fun z => p * z ^ (p - 1) * (1 - ε z)) ~[atTop] fun z => p * z ^ (p - 1)

case two
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
p : ℝ
hp : p ≠ 0
⊢ (fun z => z ^ (p - 1) / log z ^ 2) =o[atTop] fun z => p * z ^ (p - 1)
tactic: refine IsEquivalent.add_isLittleO ?one ?two
state_before: case one
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
p : ℝ
hp : p ≠ 0
⊢ (fun z => p * z ^ (p - 1) * (1 - ε z)) ~[atTop] fun z => p * z ^ (p - 1)

case two
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
p : ℝ
hp : p ≠ 0
⊢ (fun z => z ^ (p - 1) / log z ^ 2) =o[atTop] fun z => p * z ^ (p - 1)
state_after: case two
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
p : ℝ
hp : p ≠ 0
⊢ (fun z => z ^ (p - 1) / log z ^ 2) =o[atTop] fun z => p * z ^ (p - 1)
tactic: case one => calc
          (fun z => p * z ^ (p-1) * (1 - ε z)) ~[atTop] fun z => p * z ^ (p-1) * 1 :=
                IsEquivalent.mul IsEquivalent.refl isEquivalent_one_sub_smoothingFn_one
          _ = fun z => p * z ^ (p-1) := by ext; ring
state_before: case two
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
p : ℝ
hp : p ≠ 0
⊢ (fun z => z ^ (p - 1) / log z ^ 2) =o[atTop] fun z => p * z ^ (p - 1)
state_after: no goals
tactic: case two => calc
          (fun z => z ^ (p-1) / (log z ^ 2)) =o[atTop] fun z => z ^ (p-1) / 1 := by
                      simp_rw [div_eq_mul_inv]
                      refine IsBigO.mul_isLittleO (isBigO_refl _ _)
                        (IsLittleO.inv_rev ?_ (by aesop (add safe eventually_of_forall)))
                      rw [isLittleO_const_left]
                      refine Or.inr <| Tendsto.comp tendsto_norm_atTop_atTop ?_
                      exact Tendsto.comp (g := fun z => z ^ 2)
                        (tendsto_pow_atTop (by norm_num)) tendsto_log_atTop
          _ = fun z => z ^ (p-1) := by ext; simp
          _ =Θ[atTop] fun z => p * z ^ (p-1) := by
                      exact IsTheta.const_mul_right hp <| isTheta_refl _ _
Theorem: Dense.exists_ge'
File: Mathlib/Topology/Order/OrderClosed.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : ClosedIicTopology α
inst✝ : TopologicalSpace β
a b c : α
f : α → β
s : Set α
hs : Dense s
htop : ∀ (x : α), IsTop x → x ∈ s
x : α
⊢ ∃ y ∈ s, x ≤ y
state_after: case pos
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : ClosedIicTopology α
inst✝ : TopologicalSpace β
a b c : α
f : α → β
s : Set α
hs : Dense s
htop : ∀ (x : α), IsTop x → x ∈ s
x : α
hx : IsTop x
⊢ ∃ y ∈ s, x ≤ y

case neg
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : ClosedIicTopology α
inst✝ : TopologicalSpace β
a b c : α
f : α → β
s : Set α
hs : Dense s
htop : ∀ (x : α), IsTop x → x ∈ s
x : α
hx : ¬IsTop x
⊢ ∃ y ∈ s, x ≤ y
tactic: by_cases hx : IsTop x
Theorem: UniformConvergenceCLM.uniformSpace_mono
File: Mathlib/Topology/Algebra/Module/StrongTopology.lean

Proof steps:
state_before: 𝕜₁ : Type u_1
𝕜₂ : Type u_2
inst✝⁸ : NormedField 𝕜₁
inst✝⁷ : NormedField 𝕜₂
σ : 𝕜₁ →+* 𝕜₂
E : Type u_3
F : Type u_4
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜₁ E
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup F
inst✝² : Module 𝕜₂ F
𝔖₁ 𝔖₂ : Set (Set E)
inst✝¹ : UniformSpace F
inst✝ : UniformAddGroup F
h : 𝔖₂ ⊆ 𝔖₁
⊢ instUniformSpace σ F 𝔖₁ ≤ instUniformSpace σ F 𝔖₂
state_after: 𝕜₁ : Type u_1
𝕜₂ : Type u_2
inst✝⁸ : NormedField 𝕜₁
inst✝⁷ : NormedField 𝕜₂
σ : 𝕜₁ →+* 𝕜₂
E : Type u_3
F : Type u_4
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜₁ E
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup F
inst✝² : Module 𝕜₂ F
𝔖₁ 𝔖₂ : Set (Set E)
inst✝¹ : UniformSpace F
inst✝ : UniformAddGroup F
h : 𝔖₂ ⊆ 𝔖₁
⊢ UniformSpace.comap DFunLike.coe (UniformOnFun.uniformSpace E F 𝔖₁) ≤
    UniformSpace.comap DFunLike.coe (UniformOnFun.uniformSpace E F 𝔖₂)
tactic: simp_rw [uniformSpace_eq]
state_before: 𝕜₁ : Type u_1
𝕜₂ : Type u_2
inst✝⁸ : NormedField 𝕜₁
inst✝⁷ : NormedField 𝕜₂
σ : 𝕜₁ →+* 𝕜₂
E : Type u_3
F : Type u_4
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜₁ E
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup F
inst✝² : Module 𝕜₂ F
𝔖₁ 𝔖₂ : Set (Set E)
inst✝¹ : UniformSpace F
inst✝ : UniformAddGroup F
h : 𝔖₂ ⊆ 𝔖₁
⊢ UniformSpace.comap DFunLike.coe (UniformOnFun.uniformSpace E F 𝔖₁) ≤
    UniformSpace.comap DFunLike.coe (UniformOnFun.uniformSpace E F 𝔖₂)
state_after: no goals
tactic: exact UniformSpace.comap_mono (UniformOnFun.mono (le_refl _) h)
Theorem: Finset.dens_sdiff_comm
File: Mathlib/Data/Finset/Density.lean

Proof steps:
state_before: 𝕜 : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
s t : Finset α
a b : α
inst✝ : DecidableEq α
h : s.card = t.card
⊢ (fun x => x + t.dens) (s \ t).dens = (fun x => x + t.dens) (t \ s).dens
state_after: no goals
tactic: simp_rw [dens_sdiff_add_dens, union_comm s, ← dens_sdiff_add_dens, dens, h]
Theorem: Set.biInter_finsetSigma_univ
File: Mathlib/Data/Fintype/Sigma.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
inst✝ : (i : ι) → Fintype (κ i)
s : Finset ι
f : Sigma κ → Set α
⊢ ⋂ ij ∈ s.sigma fun x => Finset.univ, f ij = ⋂ i ∈ s, ⋂ j, f ⟨i, j⟩
state_after: no goals
tactic: aesop
Theorem: MulEquiv.ofLeftInverse'_apply
File: Mathlib/Algebra/Group/Submonoid/Operations.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
T : Submonoid M
f : M →* N
g : N → M
h : Function.LeftInverse g ⇑f
x : ↥(MonoidHom.mrange f)
x' : M
hx' : f x' = ↑x
⊢ f (g ↑x) = ↑x
state_after: no goals
tactic: rw [← hx', h x']
Theorem: zero_le'
File: Mathlib/Algebra/Order/GroupWithZero/Canonical.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedCommMonoidWithZero α
a b c d x y z : α
n : ℕ
⊢ 0 ≤ a
state_after: no goals
tactic: simpa only [mul_zero, mul_one] using mul_le_mul_left' (zero_le_one' α) a
Theorem: let_value_heq
File: Mathlib/Init/Logic.lean

Proof steps:
state_before: α✝ : Sort u
a b✝ c d : Prop
p : ?m.12257
α : Sort v
β : α → Sort u
a₁ a₂ : α
b : (x : α) → β x
h : a₁ = a₂
⊢ HEq
    (let x := a₁;
    b x)
    (let x := a₂;
    b x)
state_after: case refl
α✝ : Sort u
a b✝ c d : Prop
p : ?m.12257
α : Sort v
β : α → Sort u
a₁ : α
b : (x : α) → β x
⊢ HEq
    (let x := a₁;
    b x)
    (let x := a₁;
    b x)
tactic: cases h
state_before: case refl
α✝ : Sort u
a b✝ c d : Prop
p : ?m.12257
α : Sort v
β : α → Sort u
a₁ : α
b : (x : α) → β x
⊢ HEq
    (let x := a₁;
    b x)
    (let x := a₁;
    b x)
state_after: no goals
tactic: rfl
Theorem: EReal.limsup_add_le_of_le
File: Mathlib/Topology/Instances/EReal.lean

Proof steps:
state_before: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb : limsup v f ≤ b
⊢ limsup (u + v) f ≤ a + b
state_after: case inl
α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb✝ : limsup v f ≤ b
hb : limsup v f < b
⊢ limsup (u + v) f ≤ a + b

case inr
α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb✝ : limsup v f ≤ b
hb : limsup v f = b
⊢ limsup (u + v) f ≤ a + b
tactic: rcases lt_or_eq_of_le hb with (hb | hb)
state_before: case inr
α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb✝ : limsup v f ≤ b
hb : limsup v f = b
⊢ limsup (u + v) f ≤ a + b
state_after: case pos
α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb✝ : limsup v f ≤ b
hb : limsup v f = b
hb' : b = ⊤
⊢ limsup (u + v) f ≤ a + b

case neg
α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb✝ : limsup v f ≤ b
hb : limsup v f = b
hb' : ¬b = ⊤
⊢ limsup (u + v) f ≤ a + b
tactic: by_cases hb' : b = ⊤
state_before: case neg
α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb✝ : limsup v f ≤ b
hb : limsup v f = b
hb' : ¬b = ⊤
⊢ limsup (u + v) f ≤ a + b
state_after: no goals
tactic: exact (limsup_add_le_add_limsup (hb ▸ Or.inr hb') (Or.inl ha.ne_top)).trans
    (add_le_add ha.le hb.le)
Theorem: ENNReal.orderIsoRpow_apply
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

Proof steps:
state_before: y : ℝ
hy : 0 < y
x : ℝ≥0∞
⊢ (fun x => x ^ y) ((fun x => x ^ (1 / y)) x) = x
state_after: y : ℝ
hy : 0 < y
x : ℝ≥0∞
⊢ (x ^ (1 / y)) ^ y = x
tactic: dsimp
state_before: y : ℝ
hy : 0 < y
x : ℝ≥0∞
⊢ (x ^ (1 / y)) ^ y = x
state_after: no goals
tactic: rw [← rpow_mul, one_div_mul_cancel hy.ne.symm, rpow_one]
Theorem: AddSubmonoid.LocalizationMap.lift_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
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
x : M
y : ↥S
⊢ f.toMap ((f.sec (f.mk' x y)).1 * ↑y) = f.toMap (x * ↑(f.sec (f.mk' x y)).2)
state_after: no goals
tactic: simp_rw [f.toMap.map_mul, sec_spec', mul_assoc, f.mk'_spec, mul_comm]
Theorem: Polynomial.mkDerivation_X
File: Mathlib/Algebra/Polynomial/Derivation.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid A
inst✝² : Module R A
inst✝¹ : Module R[X] A
inst✝ : IsScalarTower R R[X] A
a : A
⊢ ((mkDerivation R) a) X = a
state_after: no goals
tactic: simp [mkDerivation_apply]
Theorem: PadicInt.pow_p_dvd_int_iff
File: Mathlib/NumberTheory/Padics/PadicIntegers.lean

Proof steps:
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
a : ℤ
⊢ ↑p ^ n ∣ ↑a ↔ ↑p ^ n ∣ a
state_after: no goals
tactic: rw [← Nat.cast_pow, ← norm_int_le_pow_iff_dvd, norm_le_pow_iff_mem_span_pow,
    Ideal.mem_span_singleton, Nat.cast_pow]
Theorem: Stream'.Seq.map_tail
File: Mathlib/Data/Seq/Seq.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
f : α → β
s : Stream' (Option α)
al : s.IsSeq
⊢ map f (tail ⟨s, al⟩) = (map f ⟨s, al⟩).tail
state_after: case a
α : Type u
β : Type v
γ : Type w
f : α → β
s : Stream' (Option α)
al : s.IsSeq
⊢ ↑(map f (tail ⟨s, al⟩)) = ↑(map f ⟨s, al⟩).tail
tactic: apply Subtype.eq
state_before: case a
α : Type u
β : Type v
γ : Type w
f : α → β
s : Stream' (Option α)
al : s.IsSeq
⊢ ↑(map f (tail ⟨s, al⟩)) = ↑(map f ⟨s, al⟩).tail
state_after: no goals
tactic: dsimp [tail, map]
Theorem: CompleteLattice.Independent.dfinsupp_sumAddHom_injective
File: Mathlib/LinearAlgebra/DFinsupp.lean

Proof steps:
state_before: ι : Type u_1
R : Type u_2
S : Type u_3
M : ι → Type u_4
N : Type u_5
inst✝³ : DecidableEq ι
inst✝² : Ring R
inst✝¹ : AddCommGroup N
inst✝ : Module R N
p : ι → AddSubgroup N
h : Independent p
⊢ Function.Injective ⇑(sumAddHom fun i => (p i).subtype)
state_after: ι : Type u_1
R : Type u_2
S : Type u_3
M : ι → Type u_4
N : Type u_5
inst✝³ : DecidableEq ι
inst✝² : Ring R
inst✝¹ : AddCommGroup N
inst✝ : Module R N
p : ι → AddSubgroup N
h : Independent (⇑AddSubgroup.toIntSubmodule ∘ p)
⊢ Function.Injective ⇑(sumAddHom fun i => (p i).subtype)
tactic: rw [← independent_map_orderIso_iff (AddSubgroup.toIntSubmodule : AddSubgroup N ≃o _)] at h
state_before: ι : Type u_1
R : Type u_2
S : Type u_3
M : ι → Type u_4
N : Type u_5
inst✝³ : DecidableEq ι
inst✝² : Ring R
inst✝¹ : AddCommGroup N
inst✝ : Module R N
p : ι → AddSubgroup N
h : Independent (⇑AddSubgroup.toIntSubmodule ∘ p)
⊢ Function.Injective ⇑(sumAddHom fun i => (p i).subtype)
state_after: no goals
tactic: exact h.dfinsupp_lsum_injective
Theorem: CategoryTheory.ShortComplex.Splitting.map_s
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ (S.map F).f ≫ F.map s.r = 𝟙 (S.map F).X₁
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ F.map S.f ≫ F.map s.r = 𝟙 (F.obj S.X₁)
tactic: dsimp [ShortComplex.map]
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ F.map S.f ≫ F.map s.r = 𝟙 (F.obj S.X₁)
state_after: no goals
tactic: rw [← F.map_comp, f_r, F.map_id]
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ F.map s.s ≫ (S.map F).g = 𝟙 (S.map F).X₃
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ F.map s.s ≫ F.map S.g = 𝟙 (F.obj S.X₃)
tactic: dsimp [ShortComplex.map]
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ F.map s.s ≫ F.map S.g = 𝟙 (F.obj S.X₃)
state_after: no goals
tactic: simp only [← F.map_comp, s_g, F.map_id]
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ F.map s.r ≫ (S.map F).f + (S.map F).g ≫ F.map s.s = 𝟙 (S.map F).X₂
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ F.map s.r ≫ F.map S.f + F.map S.g ≫ F.map s.s = 𝟙 (F.obj S.X₂)
tactic: dsimp [ShortComplex.map]
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ F.map s.r ≫ F.map S.f + F.map S.g ≫ F.map s.s = 𝟙 (F.obj S.X₂)
state_after: no goals
tactic: simp only [← F.map_id, ← s.id, Functor.map_comp, Functor.map_add]
Theorem: UpperHalfPlane.comp_ofComplex
File: Mathlib/Analysis/Complex/UpperHalfPlane/Topology.lean

Proof steps:
state_before: f : ℍ → ℂ
z : ℍ
⊢ (f ∘ ↑ofComplex) ↑z = f z
state_after: no goals
tactic: rw [Function.comp_apply, ofComplex_apply]
Theorem: Polynomial.leadingCoeff_X_pow_add_C
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

Proof steps:
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
n : ℕ
hn : 0 < n
r : R
⊢ (X ^ n + C r).leadingCoeff = 1
state_after: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
n : ℕ
hn : 0 < n
r : R
a✝ : Nontrivial R
⊢ (X ^ n + C r).leadingCoeff = 1
tactic: nontriviality R
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
n : ℕ
hn : 0 < n
r : R
a✝ : Nontrivial R
⊢ (X ^ n + C r).leadingCoeff = 1
state_after: no goals
tactic: rw [leadingCoeff, natDegree_X_pow_add_C, coeff_add, coeff_X_pow_self, coeff_C,
    if_neg (pos_iff_ne_zero.mp hn), add_zero]
Theorem: Types.monoOverEquivalenceSet_unitIso
File: Mathlib/CategoryTheory/Subobject/Types.lean

Proof steps:
state_before: α : Type u
f g : MonoOver α
t : f ⟶ g
⊢ (fun f => Set.range f.obj.hom) f ≤ (fun f => Set.range f.obj.hom) g
state_after: case intro
α : Type u
f g : MonoOver α
t : f ⟶ g
x : (𝟭 (Type u)).obj f.obj.left
⊢ f.obj.hom x ∈ (fun f => Set.range f.obj.hom) g
tactic: rintro a ⟨x, rfl⟩
state_before: case intro
α : Type u
f g : MonoOver α
t : f ⟶ g
x : (𝟭 (Type u)).obj f.obj.left
⊢ f.obj.hom x ∈ (fun f => Set.range f.obj.hom) g
state_after: no goals
tactic: exact ⟨t.1 x, congr_fun t.w x⟩
Theorem: StarConvex.union
File: Mathlib/Analysis/Convex/Star.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
x : E
s t : Set E
hs : StarConvex 𝕜 x s
ht : StarConvex 𝕜 x t
⊢ StarConvex 𝕜 x (s ∪ t)
state_after: case inl
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
x : E
s t : Set E
hs : StarConvex 𝕜 x s
ht : StarConvex 𝕜 x t
y : E
hy : y ∈ s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • x + b • y ∈ s ∪ t

case inr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
x : E
s t : Set E
hs : StarConvex 𝕜 x s
ht : StarConvex 𝕜 x t
y : E
hy : y ∈ t
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • x + b • y ∈ s ∪ t
tactic: rintro y (hy | hy) a b ha hb hab
Theorem: Real.strictMonoOn_logb_of_base_lt_one
File: Mathlib/Analysis/SpecialFunctions/Log/Base.lean

Proof steps:
state_before: b x y : ℝ
b_pos : 0 < b
b_lt_one : b < 1
⊢ StrictMonoOn (logb b) (Iio 0)
state_after: b x✝ y✝ : ℝ
b_pos : 0 < b
b_lt_one : b < 1
x : ℝ
hx : x < 0
y : ℝ
hy : y < 0
hxy : x < y
⊢ logb b x < logb b y
tactic: rintro x (hx : x < 0) y (hy : y < 0) hxy
state_before: b x✝ y✝ : ℝ
b_pos : 0 < b
b_lt_one : b < 1
x : ℝ
hx : x < 0
y : ℝ
hy : y < 0
hxy : x < y
⊢ logb b x < logb b y
state_after: b x✝ y✝ : ℝ
b_pos : 0 < b
b_lt_one : b < 1
x : ℝ
hx : x < 0
y : ℝ
hy : y < 0
hxy : x < y
⊢ logb b |x| < logb b |y|
tactic: rw [← logb_abs y, ← logb_abs x]
state_before: b x✝ y✝ : ℝ
b_pos : 0 < b
b_lt_one : b < 1
x : ℝ
hx : x < 0
y : ℝ
hy : y < 0
hxy : x < y
⊢ logb b |x| < logb b |y|
state_after: b x✝ y✝ : ℝ
b_pos : 0 < b
b_lt_one : b < 1
x : ℝ
hx : x < 0
y : ℝ
hy : y < 0
hxy : x < y
⊢ |y| < |x|
tactic: refine logb_lt_logb_of_base_lt_one b_pos b_lt_one (abs_pos.2 hy.ne) ?_
state_before: b x✝ y✝ : ℝ
b_pos : 0 < b
b_lt_one : b < 1
x : ℝ
hx : x < 0
y : ℝ
hy : y < 0
hxy : x < y
⊢ |y| < |x|
state_after: no goals
tactic: rwa [abs_of_neg hy, abs_of_neg hx, neg_lt_neg_iff]
Theorem: Finset.id_traverse
File: Mathlib/Data/Finset/Functor.lean

Proof steps:
state_before: α β γ : Type u
F G : Type u → Type u
inst✝⁴ : Applicative F
inst✝³ : Applicative G
inst✝² : CommApplicative F
inst✝¹ : CommApplicative G
inst✝ : DecidableEq α
s : Finset α
⊢ traverse pure s = s
state_after: α β γ : Type u
F G : Type u → Type u
inst✝⁴ : Applicative F
inst✝³ : Applicative G
inst✝² : CommApplicative F
inst✝¹ : CommApplicative G
inst✝ : DecidableEq α
s : Finset α
⊢ Multiset.toFinset <$> s.val = s
tactic: rw [traverse, Multiset.id_traverse]
state_before: α β γ : Type u
F G : Type u → Type u
inst✝⁴ : Applicative F
inst✝³ : Applicative G
inst✝² : CommApplicative F
inst✝¹ : CommApplicative G
inst✝ : DecidableEq α
s : Finset α
⊢ Multiset.toFinset <$> s.val = s
state_after: no goals
tactic: exact s.val_toFinset
Theorem: Nat.bitwise_zero_left
File: Mathlib/Data/Nat/Bitwise.lean

Proof steps:
state_before: f : Bool → Bool → Bool
m : ℕ
⊢ bitwise f 0 m = if f false true = true then m else 0
state_after: no goals
tactic: simp [bitwise]
Theorem: EMetric.hausdorffEdist_image
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
h : Isometry Φ
⊢ hausdorffEdist (Φ '' s) (Φ '' t) = hausdorffEdist s t
state_after: no goals
tactic: simp only [hausdorffEdist_def, iSup_image, infEdist_image h]
Theorem: AddMonoid.Coprod.mclosure_range_inl_union_inr
File: Mathlib/GroupTheory/Coprod/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
M' : Type u_3
N' : Type u_4
P : Type u_5
inst✝⁴ : MulOneClass M
inst✝³ : MulOneClass N
inst✝² : MulOneClass M'
inst✝¹ : MulOneClass N'
inst✝ : MulOneClass P
⊢ Submonoid.closure (Set.range ⇑inl ∪ Set.range ⇑inr) = ⊤
state_after: M : Type u_1
N : Type u_2
M' : Type u_3
N' : Type u_4
P : Type u_5
inst✝⁴ : MulOneClass M
inst✝³ : MulOneClass N
inst✝² : MulOneClass M'
inst✝¹ : MulOneClass N'
inst✝ : MulOneClass P
⊢ Submonoid.closure (Set.range ⇑inl ∪ Set.range ⇑inr) =
    Submonoid.closure (Set.range ((⇑mk ∘ of) ∘ Sum.inl) ∪ Set.range ((⇑mk ∘ of) ∘ Sum.inr))
tactic: rw [← mrange_mk, MonoidHom.mrange_eq_map, ← closure_range_of, MonoidHom.map_mclosure,
    ← range_comp, Sum.range_eq]
state_before: M : Type u_1
N : Type u_2
M' : Type u_3
N' : Type u_4
P : Type u_5
inst✝⁴ : MulOneClass M
inst✝³ : MulOneClass N
inst✝² : MulOneClass M'
inst✝¹ : MulOneClass N'
inst✝ : MulOneClass P
⊢ Submonoid.closure (Set.range ⇑inl ∪ Set.range ⇑inr) =
    Submonoid.closure (Set.range ((⇑mk ∘ of) ∘ Sum.inl) ∪ Set.range ((⇑mk ∘ of) ∘ Sum.inr))
state_after: no goals
tactic: rfl
Theorem: Nonneg.toNonneg_le
File: Mathlib/Algebra/Order/Ring/Unbundled/Nonneg.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Zero α
inst✝ : LinearOrder α
a : α
b : { x // 0 ≤ x }
⊢ toNonneg a ≤ b ↔ a ≤ ↑b
state_after: case mk
α : Type u_1
inst✝¹ : Zero α
inst✝ : LinearOrder α
a b : α
hb : 0 ≤ b
⊢ toNonneg a ≤ ⟨b, hb⟩ ↔ a ≤ ↑⟨b, hb⟩
tactic: cases' b with b hb
state_before: case mk
α : Type u_1
inst✝¹ : Zero α
inst✝ : LinearOrder α
a b : α
hb : 0 ≤ b
⊢ toNonneg a ≤ ⟨b, hb⟩ ↔ a ≤ ↑⟨b, hb⟩
state_after: no goals
tactic: simp [toNonneg, hb]
Theorem: IsLocalization.exists_integer_multiple
File: Mathlib/RingTheory/Localization/Integer.lean

Proof steps:
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
inst✝ : IsLocalization M S
a : S
⊢ ∃ b, IsInteger R (↑b • a)
state_after: R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
inst✝ : IsLocalization M S
a : S
⊢ ∃ b, IsInteger R (a * (algebraMap R S) ↑b)
tactic: simp_rw [Algebra.smul_def, mul_comm _ a]
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
inst✝ : IsLocalization M S
a : S
⊢ ∃ b, IsInteger R (a * (algebraMap R S) ↑b)
state_after: no goals
tactic: apply exists_integer_multiple'
Theorem: List.prod_concat
File: Mathlib/Algebra/BigOperators/Group/List.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l l₁ l₂ : List M
a : M
⊢ (l.concat a).prod = l.prod * a
state_after: no goals
tactic: rw [concat_eq_append, prod_append, prod_singleton]