ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Nat.add_div
File: Mathlib/Data/Nat/ModEq.lean

Proof steps:
state_before: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ (a + b) / c = a / c + b / c + if c ≤ a % c + b % c then 1 else 0
state_after: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ (a + b) % c + a % c + b % c + c * ((a + b) / c) =
    (a + b) % c + a % c + b % c + c * (a / c + b / c + if c ≤ a % c + b % c then 1 else 0)
tactic: rw [← mul_right_inj' hc0.ne', ← @add_left_cancel_iff _ _ _ ((a + b) % c + a % c + b % c)]
state_before: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ (a + b) % c + a % c + b % c + c * ((a + b) / c) =
    (a + b) % c + a % c + b % c + c * (a / c + b / c + if c ≤ a % c + b % c then 1 else 0)
state_after: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ (a + b) % c + c * ((a + b) / c) + a % c + b % c =
    (a % c + c * (a / c) + (b % c + c * (b / c)) + c * if c ≤ a % c + b % c then 1 else 0) + (a + b) % c
tactic: suffices
    (a + b) % c + c * ((a + b) / c) + a % c + b % c =
      (a % c + c * (a / c) + (b % c + c * (b / c)) + c * if c ≤ a % c + b % c then 1 else 0) +
        (a + b) % c
    by simpa only [mul_add, add_comm, add_left_comm, add_assoc]
state_before: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ (a + b) % c + c * ((a + b) / c) + a % c + b % c =
    (a % c + c * (a / c) + (b % c + c * (b / c)) + c * if c ≤ a % c + b % c then 1 else 0) + (a + b) % c
state_after: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ a + (b + (a % c + b % c)) = (a + b + if c ≤ a % c + b % c then c * 1 else c * 0) + (a + b) % c
tactic: rw [mod_add_div, mod_add_div, mod_add_div, mul_ite, add_assoc, add_assoc]
state_before: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ a + (b + (a % c + b % c)) = (a + b + if c ≤ a % c + b % c then c * 1 else c * 0) + (a + b) % c
state_after: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ a + (b + ((a + b) % c + if c ≤ a % c + b % c then c else 0)) =
    (a + b + if c ≤ a % c + b % c then c * 1 else c * 0) + (a + b) % c
tactic: conv_lhs => rw [← add_mod_add_ite]
state_before: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ a + (b + ((a + b) % c + if c ≤ a % c + b % c then c else 0)) =
    (a + b + if c ≤ a % c + b % c then c * 1 else c * 0) + (a + b) % c
state_after: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ a + (b + ((a + b) % c + if c ≤ a % c + b % c then c else 0)) =
    (a + b + if c ≤ a % c + b % c then c else 0) + (a + b) % c
tactic: simp only [mul_one, mul_zero]
state_before: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ a + (b + ((a + b) % c + if c ≤ a % c + b % c then c else 0)) =
    (a + b + if c ≤ a % c + b % c then c else 0) + (a + b) % c
state_after: no goals
tactic: ac_rfl
Theorem: Set.le_chainHeight_add_nat_iff
File: Mathlib/Order/Height.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LT α
inst✝ : LT β
s t : Set α
l : List α
a : α
n m : ℕ
⊢ ↑n ≤ s.chainHeight + ↑m ↔ ∃ l ∈ s.subchain, n ≤ l.length + m
state_after: no goals
tactic: simp_rw [← tsub_le_iff_right, ← ENat.coe_sub, (le_chainHeight_TFAE s (n - m)).out 0 2]
Theorem: mdifferentiableAt_iff_differentiableAt
File: Mathlib/Geometry/Manifold/MFDeriv/FDeriv.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
E' : Type u_3
inst✝¹ : NormedAddCommGroup E'
inst✝ : NormedSpace 𝕜 E'
f : E → E'
s : Set E
x : E
⊢ MDifferentiableAt 𝓘(𝕜, E) 𝓘(𝕜, E') f x ↔ DifferentiableAt 𝕜 f x
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
E' : Type u_3
inst✝¹ : NormedAddCommGroup E'
inst✝ : NormedSpace 𝕜 E'
f : E → E'
s : Set E
x : E
⊢ ContinuousAt f x ∧ DifferentiableAt 𝕜 f x ↔ DifferentiableAt 𝕜 f x
tactic: simp only [mdifferentiableAt_iff, differentiableWithinAt_univ, mfld_simps]
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
E' : Type u_3
inst✝¹ : NormedAddCommGroup E'
inst✝ : NormedSpace 𝕜 E'
f : E → E'
s : Set E
x : E
⊢ ContinuousAt f x ∧ DifferentiableAt 𝕜 f x ↔ DifferentiableAt 𝕜 f x
state_after: no goals
tactic: exact ⟨fun H => H.2, fun H => ⟨H.continuousAt, H⟩⟩
Theorem: MeasureTheory.comap_eval_le_generateFrom_squareCylinders_singleton
File: Mathlib/MeasureTheory/Constructions/Cylinders.lean

Proof steps:
state_before: ι : Type u_2
α✝ : ι → Type ?u.4974
α : ι → Type u_1
m : (i : ι) → MeasurableSpace (α i)
i : ι
⊢ MeasurableSpace.comap (Function.eval i) (m i) ≤
    MeasurableSpace.generateFrom ((fun t => {i}.pi t) '' univ.pi fun i => {s | MeasurableSet s})
state_after: ι : Type u_2
α✝ : ι → Type ?u.4974
α : ι → Type u_1
m : (i : ι) → MeasurableSpace (α i)
i : ι
⊢ MeasurableSpace.comap (Function.eval i) (m i) ≤
    MeasurableSpace.generateFrom ((fun a => Function.eval i ⁻¹' a i) '' univ.pi fun i => {s | MeasurableSet s})
tactic: simp only [Function.eval, singleton_pi]
state_before: ι : Type u_2
α✝ : ι → Type ?u.4974
α : ι → Type u_1
m : (i : ι) → MeasurableSpace (α i)
i : ι
⊢ MeasurableSpace.comap (Function.eval i) (m i) ≤
    MeasurableSpace.generateFrom ((fun a => Function.eval i ⁻¹' a i) '' univ.pi fun i => {s | MeasurableSet s})
state_after: ι : Type u_2
α✝ : ι → Type ?u.4974
α : ι → Type u_1
m : (i : ι) → MeasurableSpace (α i)
i : ι
⊢ MeasurableSpace.generateFrom {t | ∃ s, MeasurableSet s ∧ Function.eval i ⁻¹' s = t} ≤
    MeasurableSpace.generateFrom ((fun a => Function.eval i ⁻¹' a i) '' univ.pi fun i => {s | MeasurableSet s})
tactic: rw [MeasurableSpace.comap_eq_generateFrom]
state_before: ι : Type u_2
α✝ : ι → Type ?u.4974
α : ι → Type u_1
m : (i : ι) → MeasurableSpace (α i)
i : ι
⊢ MeasurableSpace.generateFrom {t | ∃ s, MeasurableSet s ∧ Function.eval i ⁻¹' s = t} ≤
    MeasurableSpace.generateFrom ((fun a => Function.eval i ⁻¹' a i) '' univ.pi fun i => {s | MeasurableSet s})
state_after: ι : Type u_2
α✝ : ι → Type ?u.4974
α : ι → Type u_1
m : (i : ι) → MeasurableSpace (α i)
i : ι
S : Set ((x : ι) → α x)
⊢ S ∈ {t | ∃ s, MeasurableSet s ∧ Function.eval i ⁻¹' s = t} →
    S ∈ (fun a => Function.eval i ⁻¹' a i) '' univ.pi fun i => {s | MeasurableSet s}
tactic: refine MeasurableSpace.generateFrom_mono fun S ↦ ?_
state_before: ι : Type u_2
α✝ : ι → Type ?u.4974
α : ι → Type u_1
m : (i : ι) → MeasurableSpace (α i)
i : ι
S : Set ((x : ι) → α x)
⊢ S ∈ {t | ∃ s, MeasurableSet s ∧ Function.eval i ⁻¹' s = t} →
    S ∈ (fun a => Function.eval i ⁻¹' a i) '' univ.pi fun i => {s | MeasurableSet s}
state_after: ι : Type u_2
α✝ : ι → Type ?u.4974
α : ι → Type u_1
m : (i : ι) → MeasurableSpace (α i)
i : ι
S : Set ((x : ι) → α x)
⊢ ∀ (x : Set (α i)),
    MeasurableSet x → Function.eval i ⁻¹' x = S → ∃ x, (∀ (i : ι), MeasurableSet (x i)) ∧ Function.eval i ⁻¹' x i = S
tactic: simp only [mem_setOf_eq, mem_image, mem_univ_pi, forall_exists_index, and_imp]
state_before: ι : Type u_2
α✝ : ι → Type ?u.4974
α : ι → Type u_1
m : (i : ι) → MeasurableSpace (α i)
i : ι
S : Set ((x : ι) → α x)
⊢ ∀ (x : Set (α i)),
    MeasurableSet x → Function.eval i ⁻¹' x = S → ∃ x, (∀ (i : ι), MeasurableSet (x i)) ∧ Function.eval i ⁻¹' x i = S
state_after: ι : Type u_2
α✝ : ι → Type ?u.4974
α : ι → Type u_1
m : (i : ι) → MeasurableSpace (α i)
i : ι
S : Set ((x : ι) → α x)
t : Set (α i)
ht : MeasurableSet t
h : Function.eval i ⁻¹' t = S
⊢ ∃ x, (∀ (i : ι), MeasurableSet (x i)) ∧ Function.eval i ⁻¹' x i = S
tactic: intro t ht h
Theorem: Matrix.sub_cons
File: Mathlib/Algebra/Group/Fin/Tuple.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
n : ℕ
inst✝ : Sub α
v : Fin n.succ → α
y : α
w : Fin n → α
⊢ v - vecCons y w = vecCons (vecHead v - y) (vecTail v - w)
state_after: case h
α : Type u_1
M : Type u_2
n : ℕ
inst✝ : Sub α
v : Fin n.succ → α
y : α
w : Fin n → α
i : Fin n.succ
⊢ (v - vecCons y w) i = vecCons (vecHead v - y) (vecTail v - w) i
tactic: ext i
state_before: case h
α : Type u_1
M : Type u_2
n : ℕ
inst✝ : Sub α
v : Fin n.succ → α
y : α
w : Fin n → α
i : Fin n.succ
⊢ (v - vecCons y w) i = vecCons (vecHead v - y) (vecTail v - w) i
state_after: no goals
tactic: refine i.cases ?_ ?_ <;> simp [vecHead, vecTail]
Theorem: List.prod_eq_one
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
hl : ∀ x ∈ l, x = 1
⊢ l.prod = 1
state_after: case nil
ι : 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
hl : ∀ x ∈ [], x = 1
⊢ [].prod = 1

case cons
ι : 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 i : M
l : List M
hil : (∀ x ∈ l, x = 1) → l.prod = 1
hl : ∀ x ∈ i :: l, x = 1
⊢ (i :: l).prod = 1
tactic: induction' l with i l hil
state_before: case cons
ι : 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 i : M
l : List M
hil : (∀ x ∈ l, x = 1) → l.prod = 1
hl : ∀ x ∈ i :: l, x = 1
⊢ (i :: l).prod = 1
state_after: no goals
tactic: rw [List.prod_cons, hil fun x hx ↦ hl _ (mem_cons_of_mem i hx), hl _ (mem_cons_self i l), one_mul]
Theorem: SimpleGraph.Subgraph.iSup_adj
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

Proof steps:
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
f : ι → G.Subgraph
⊢ (⨆ i, f i).Adj a b ↔ ∃ i, (f i).Adj a b
state_after: no goals
tactic: simp [iSup]
Theorem: TrivSqZeroExt.lift_apply_inr
File: Mathlib/Algebra/TrivSqZeroExt.lean

Proof steps:
state_before: S : Type u_1
R R' : Type u
M : Type v
inst✝¹⁸ : CommSemiring S
inst✝¹⁷ : Semiring R
inst✝¹⁶ : CommSemiring R'
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : Algebra S R
inst✝¹³ : Algebra S R'
inst✝¹² : Module S M
inst✝¹¹ : Module R M
inst✝¹⁰ : Module Rᵐᵒᵖ M
inst✝⁹ : SMulCommClass R Rᵐᵒᵖ M
inst✝⁸ : IsScalarTower S R M
inst✝⁷ : IsScalarTower S Rᵐᵒᵖ M
inst✝⁶ : Module R' M
inst✝⁵ : Module R'ᵐᵒᵖ M
inst✝⁴ : IsCentralScalar R' M
inst✝³ : IsScalarTower S R' M
A : Type u_2
inst✝² : Semiring A
inst✝¹ : Algebra S A
inst✝ : Algebra R' A
f : R →ₐ[S] A
g : M →ₗ[S] A
hg : ∀ (x y : M), g x * g y = 0
hfg : ∀ (r : R) (x : M), g (r •> x) = f r * g x
hgf : ∀ (r : R) (x : M), g (x <• r) = g x * f r
m : M
⊢ f 0 + g m = g m
state_after: no goals
tactic: rw [map_zero, zero_add]
Theorem: MeasureTheory.integral_dirac'
File: Mathlib/MeasureTheory/Integral/Bochner.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedSpace 𝕜 E
inst✝⁸ : SMulCommClass ℝ 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
inst✝⁵ : CompleteSpace F
G : Type u_5
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
ν : Measure α
inst✝ : MeasurableSpace α
f : α → E
a : α
hfm : StronglyMeasurable f
⊢ ∫ (x : α), f x ∂Measure.dirac a = f a
state_after: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedSpace 𝕜 E
inst✝⁸ : SMulCommClass ℝ 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
inst✝⁵ : CompleteSpace F
G : Type u_5
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
ν : Measure α
inst✝ : MeasurableSpace α
f : α → E
a : α
hfm : StronglyMeasurable f
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
⊢ ∫ (x : α), f x ∂Measure.dirac a = f a
tactic: borelize E
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedSpace 𝕜 E
inst✝⁸ : SMulCommClass ℝ 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
inst✝⁵ : CompleteSpace F
G : Type u_5
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
ν : Measure α
inst✝ : MeasurableSpace α
f : α → E
a : α
hfm : StronglyMeasurable f
this✝¹ : MeasurableSpace E := borel E
this✝ : BorelSpace E
⊢ ∫ (x : α), f x ∂Measure.dirac a = f a
state_after: no goals
tactic: calc
    ∫ x, f x ∂Measure.dirac a = ∫ _, f a ∂Measure.dirac a :=
      integral_congr_ae <| ae_eq_dirac' hfm.measurable
    _ = f a := by simp [Measure.dirac_apply_of_mem]
Theorem: AddSubgroup.IsComplement.add_eq
File: Mathlib/GroupTheory/Complement.lean

Proof steps:
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h : IsComplement S T
x : G
⊢ x ∈ S * T
state_after: no goals
tactic: simpa [mem_mul] using (h.existsUnique x).exists
Theorem: tendsto_sub_comap_self
File: Mathlib/Topology/Algebra/UniformGroup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
hom : Type u_3
inst✝⁶ : TopologicalSpace α
inst✝⁵ : Group α
inst✝⁴ : TopologicalGroup α
inst✝³ : TopologicalSpace β
inst✝² : Group β
inst✝¹ : FunLike hom β α
inst✝ : MonoidHomClass hom β α
e : hom
de : DenseInducing ⇑e
x₀ : α
⊢ Tendsto (fun t => t.2 / t.1) (comap (fun p => (e p.1, e p.2)) (𝓝 (x₀, x₀))) (𝓝 1)
state_after: α : Type u_1
β : Type u_2
hom : Type u_3
inst✝⁶ : TopologicalSpace α
inst✝⁵ : Group α
inst✝⁴ : TopologicalGroup α
inst✝³ : TopologicalSpace β
inst✝² : Group β
inst✝¹ : FunLike hom β α
inst✝ : MonoidHomClass hom β α
e : hom
de : DenseInducing ⇑e
x₀ : α
comm : ((fun x => x.2 / x.1) ∘ fun t => (e t.1, e t.2)) = ⇑e ∘ fun t => t.2 / t.1
⊢ Tendsto (fun t => t.2 / t.1) (comap (fun p => (e p.1, e p.2)) (𝓝 (x₀, x₀))) (𝓝 1)
tactic: have comm : ((fun x : α × α => x.2 / x.1) ∘ fun t : β × β => (e t.1, e t.2)) =
      e ∘ fun t : β × β => t.2 / t.1 := by
    ext t
    change e t.2 / e t.1 = e (t.2 / t.1)
    rw [← map_div e t.2 t.1]
state_before: α : Type u_1
β : Type u_2
hom : Type u_3
inst✝⁶ : TopologicalSpace α
inst✝⁵ : Group α
inst✝⁴ : TopologicalGroup α
inst✝³ : TopologicalSpace β
inst✝² : Group β
inst✝¹ : FunLike hom β α
inst✝ : MonoidHomClass hom β α
e : hom
de : DenseInducing ⇑e
x₀ : α
comm : ((fun x => x.2 / x.1) ∘ fun t => (e t.1, e t.2)) = ⇑e ∘ fun t => t.2 / t.1
⊢ Tendsto (fun t => t.2 / t.1) (comap (fun p => (e p.1, e p.2)) (𝓝 (x₀, x₀))) (𝓝 1)
state_after: α : Type u_1
β : Type u_2
hom : Type u_3
inst✝⁶ : TopologicalSpace α
inst✝⁵ : Group α
inst✝⁴ : TopologicalGroup α
inst✝³ : TopologicalSpace β
inst✝² : Group β
inst✝¹ : FunLike hom β α
inst✝ : MonoidHomClass hom β α
e : hom
de : DenseInducing ⇑e
x₀ : α
comm : ((fun x => x.2 / x.1) ∘ fun t => (e t.1, e t.2)) = ⇑e ∘ fun t => t.2 / t.1
lim : Tendsto (fun x => x.2 / x.1) (𝓝 (x₀, x₀)) (𝓝 (e 1))
⊢ Tendsto (fun t => t.2 / t.1) (comap (fun p => (e p.1, e p.2)) (𝓝 (x₀, x₀))) (𝓝 1)
tactic: have lim : Tendsto (fun x : α × α => x.2 / x.1) (𝓝 (x₀, x₀)) (𝓝 (e 1)) := by
    simpa using (continuous_div'.comp (@continuous_swap α α _ _)).tendsto (x₀, x₀)
state_before: α : Type u_1
β : Type u_2
hom : Type u_3
inst✝⁶ : TopologicalSpace α
inst✝⁵ : Group α
inst✝⁴ : TopologicalGroup α
inst✝³ : TopologicalSpace β
inst✝² : Group β
inst✝¹ : FunLike hom β α
inst✝ : MonoidHomClass hom β α
e : hom
de : DenseInducing ⇑e
x₀ : α
comm : ((fun x => x.2 / x.1) ∘ fun t => (e t.1, e t.2)) = ⇑e ∘ fun t => t.2 / t.1
lim : Tendsto (fun x => x.2 / x.1) (𝓝 (x₀, x₀)) (𝓝 (e 1))
⊢ Tendsto (fun t => t.2 / t.1) (comap (fun p => (e p.1, e p.2)) (𝓝 (x₀, x₀))) (𝓝 1)
state_after: no goals
tactic: simpa using de.tendsto_comap_nhds_nhds lim comm
Theorem: Polynomial.roots_of_cyclotomic
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Basic.lean

Proof steps:
state_before: R✝ : Type u_1
inst✝³ : CommRing R✝
inst✝² : IsDomain R✝
n : ℕ
R : Type u_2
inst✝¹ : CommRing R
inst✝ : IsDomain R
⊢ (cyclotomic' n R).roots = (primitiveRoots n R).val
state_after: R✝ : Type u_1
inst✝³ : CommRing R✝
inst✝² : IsDomain R✝
n : ℕ
R : Type u_2
inst✝¹ : CommRing R
inst✝ : IsDomain R
⊢ (∏ μ ∈ primitiveRoots n R, (X - C μ)).roots = (primitiveRoots n R).val
tactic: rw [cyclotomic']
state_before: R✝ : Type u_1
inst✝³ : CommRing R✝
inst✝² : IsDomain R✝
n : ℕ
R : Type u_2
inst✝¹ : CommRing R
inst✝ : IsDomain R
⊢ (∏ μ ∈ primitiveRoots n R, (X - C μ)).roots = (primitiveRoots n R).val
state_after: no goals
tactic: exact roots_prod_X_sub_C (primitiveRoots n R)
Theorem: Stirling.stirlingSeq'_bounded_by_pos_constant
File: Mathlib/Analysis/SpecialFunctions/Stirling.lean

Proof steps:
state_before: ⊢ ∃ a, 0 < a ∧ ∀ (n : ℕ), a ≤ stirlingSeq (n + 1)
state_after: case intro
c : ℝ
h : ∀ (n : ℕ), c ≤ Real.log (stirlingSeq (n + 1))
⊢ ∃ a, 0 < a ∧ ∀ (n : ℕ), a ≤ stirlingSeq (n + 1)
tactic: cases' log_stirlingSeq_bounded_by_constant with c h
state_before: case intro
c : ℝ
h : ∀ (n : ℕ), c ≤ Real.log (stirlingSeq (n + 1))
⊢ ∃ a, 0 < a ∧ ∀ (n : ℕ), a ≤ stirlingSeq (n + 1)
state_after: case intro
c : ℝ
h : ∀ (n : ℕ), c ≤ Real.log (stirlingSeq (n + 1))
n : ℕ
⊢ rexp c ≤ stirlingSeq (n + 1)
tactic: refine ⟨exp c, exp_pos _, fun n => ?_⟩
state_before: case intro
c : ℝ
h : ∀ (n : ℕ), c ≤ Real.log (stirlingSeq (n + 1))
n : ℕ
⊢ rexp c ≤ stirlingSeq (n + 1)
state_after: case intro
c : ℝ
h : ∀ (n : ℕ), c ≤ Real.log (stirlingSeq (n + 1))
n : ℕ
⊢ c ≤ Real.log (stirlingSeq (n + 1))
tactic: rw [← le_log_iff_exp_le (stirlingSeq'_pos n)]
state_before: case intro
c : ℝ
h : ∀ (n : ℕ), c ≤ Real.log (stirlingSeq (n + 1))
n : ℕ
⊢ c ≤ Real.log (stirlingSeq (n + 1))
state_after: no goals
tactic: exact h n
Theorem: UniformEquiv.piCongrLeft_toEquiv
File: Mathlib/Topology/UniformSpace/Equiv.lean

Proof steps:
state_before: α : Type u
β✝ : Type u_1
γ : Type u_2
δ : Type u_3
inst✝⁴ : UniformSpace α
inst✝³ : UniformSpace β✝
inst✝² : UniformSpace γ
inst✝¹ : UniformSpace δ
ι : Type u_4
ι' : Type u_5
β : ι' → Type u_6
inst✝ : (j : ι') → UniformSpace (β j)
e : ι ≃ ι'
i : ι
⊢ UniformContinuous fun x => (Equiv.piCongrLeft β e).toFun x (e i)
state_after: no goals
tactic: simpa only [Equiv.toFun_as_coe, Equiv.piCongrLeft_apply_apply] using
      Pi.uniformContinuous_proj _ i
Theorem: TensorProduct.finsuppScalarLeft_symm_apply_single
File: Mathlib/LinearAlgebra/DirectSum/Finsupp.lean

Proof steps:
state_before: R : Type u_1
inst✝⁹ : CommSemiring R
M : Type u_2
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
N : Type u_3
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R N
ι : Type u_4
inst✝⁴ : DecidableEq ι
S : Type u_5
inst✝³ : CommSemiring S
inst✝² : Algebra R S
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
i : ι
n : N
⊢ (finsuppScalarLeft R N ι).symm (Finsupp.single i n) = Finsupp.single i 1 ⊗ₜ[R] n
state_after: no goals
tactic: simp [finsuppScalarLeft, finsuppLeft_symm_apply_single]
Theorem: Complex.tendsto_limUnder_of_differentiable_on_punctured_nhds_of_isLittleO
File: Mathlib/Analysis/Complex/RemovableSingularity.lean

Proof steps:
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
hd : ∀ᶠ (z : ℂ) in 𝓝[≠] c, DifferentiableAt ℂ f z
ho : (fun z => f z - f c) =o[𝓝[≠] c] fun z => (z - c)⁻¹
⊢ Tendsto f (𝓝[≠] c) (𝓝 (limUnder (𝓝[≠] c) f))
state_after: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
hd : ∀ᶠ (x : ℂ) in 𝓝 c, x ∈ {c}ᶜ → DifferentiableAt ℂ f x
ho : (fun z => f z - f c) =o[𝓝[≠] c] fun z => (z - c)⁻¹
⊢ Tendsto f (𝓝[≠] c) (𝓝 (limUnder (𝓝[≠] c) f))
tactic: rw [eventually_nhdsWithin_iff] at hd
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
hd : ∀ᶠ (x : ℂ) in 𝓝 c, x ∈ {c}ᶜ → DifferentiableAt ℂ f x
ho : (fun z => f z - f c) =o[𝓝[≠] c] fun z => (z - c)⁻¹
⊢ Tendsto f (𝓝[≠] c) (𝓝 (limUnder (𝓝[≠] c) f))
state_after: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
hd : ∀ᶠ (x : ℂ) in 𝓝 c, x ∈ {c}ᶜ → DifferentiableAt ℂ f x
ho : (fun z => f z - f c) =o[𝓝[≠] c] fun z => (z - c)⁻¹
this : DifferentiableOn ℂ f ({z | z ≠ c → DifferentiableAt ℂ f z} \ {c})
⊢ Tendsto f (𝓝[≠] c) (𝓝 (limUnder (𝓝[≠] c) f))
tactic: have : DifferentiableOn ℂ f ({z | z ≠ c → DifferentiableAt ℂ f z} \ {c}) := fun z hz =>
    (hz.1 hz.2).differentiableWithinAt
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
hd : ∀ᶠ (x : ℂ) in 𝓝 c, x ∈ {c}ᶜ → DifferentiableAt ℂ f x
ho : (fun z => f z - f c) =o[𝓝[≠] c] fun z => (z - c)⁻¹
this : DifferentiableOn ℂ f ({z | z ≠ c → DifferentiableAt ℂ f z} \ {c})
⊢ Tendsto f (𝓝[≠] c) (𝓝 (limUnder (𝓝[≠] c) f))
state_after: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
hd : ∀ᶠ (x : ℂ) in 𝓝 c, x ∈ {c}ᶜ → DifferentiableAt ℂ f x
ho : (fun z => f z - f c) =o[𝓝[≠] c] fun z => (z - c)⁻¹
this : DifferentiableOn ℂ f ({z | z ≠ c → DifferentiableAt ℂ f z} \ {c})
H : DifferentiableOn ℂ (update f c (limUnder (𝓝[≠] c) f)) {x | (fun x => x ∈ {c}ᶜ → DifferentiableAt ℂ f x) x}
⊢ Tendsto f (𝓝[≠] c) (𝓝 (limUnder (𝓝[≠] c) f))
tactic: have H := differentiableOn_update_limUnder_of_isLittleO hd this ho
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
hd : ∀ᶠ (x : ℂ) in 𝓝 c, x ∈ {c}ᶜ → DifferentiableAt ℂ f x
ho : (fun z => f z - f c) =o[𝓝[≠] c] fun z => (z - c)⁻¹
this : DifferentiableOn ℂ f ({z | z ≠ c → DifferentiableAt ℂ f z} \ {c})
H : DifferentiableOn ℂ (update f c (limUnder (𝓝[≠] c) f)) {x | (fun x => x ∈ {c}ᶜ → DifferentiableAt ℂ f x) x}
⊢ Tendsto f (𝓝[≠] c) (𝓝 (limUnder (𝓝[≠] c) f))
state_after: no goals
tactic: exact continuousAt_update_same.1 (H.differentiableAt hd).continuousAt
Theorem: padicNormE.norm_int_le_one
File: Mathlib/NumberTheory/Padics/PadicNumbers.lean

Proof steps:
state_before: p : ℕ
hp : Fact (Nat.Prime p)
z : ℤ
this : ‖↑↑z‖ ≤ 1
⊢ ‖↑z‖ ≤ 1
state_after: no goals
tactic: simpa
state_before: p : ℕ
hp : Fact (Nat.Prime p)
z : ℤ
⊢ ¬p ∣ (↑z).den
state_after: no goals
tactic: simp [hp.1.ne_one]
Theorem: Function.Periodic.const_smul
File: Mathlib/Algebra/Periodic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x✝ : α
inst✝² : AddMonoid α
inst✝¹ : Group γ
inst✝ : DistribMulAction γ α
h : Periodic f c
a : γ
x : α
⊢ (fun x => f (a • x)) (x + a⁻¹ • c) = (fun x => f (a • x)) x
state_after: no goals
tactic: simpa only [smul_add, smul_inv_smul] using h (a • x)
Theorem: Multiset.prod_dvd_prod_of_dvd
File: Mathlib/Algebra/BigOperators/Group/Multiset.lean

Proof steps:
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : CommMonoid β
S : Multiset α
g1 g2 : α → β
h : ∀ a ∈ S, g1 a ∣ g2 a
⊢ (map g1 S).prod ∣ (map g2 S).prod
state_after: case h₁
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : CommMonoid β
S : Multiset α
g1 g2 : α → β
h : ∀ a ∈ S, g1 a ∣ g2 a
⊢ (map g1 0).prod ∣ (map g2 0).prod

case h₂
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : CommMonoid β
S : Multiset α
g1 g2 : α → β
h : ∀ a ∈ S, g1 a ∣ g2 a
⊢ ∀ {a : α} {s : Multiset α},
    a ∈ S → s ⊆ S → (map g1 s).prod ∣ (map g2 s).prod → (map g1 (insert a s)).prod ∣ (map g2 (insert a s)).prod
tactic: apply Multiset.induction_on' S
state_before: case h₂
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : CommMonoid β
S : Multiset α
g1 g2 : α → β
h : ∀ a ∈ S, g1 a ∣ g2 a
⊢ ∀ {a : α} {s : Multiset α},
    a ∈ S → s ⊆ S → (map g1 s).prod ∣ (map g2 s).prod → (map g1 (insert a s)).prod ∣ (map g2 (insert a s)).prod
state_after: case h₂
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : CommMonoid β
S : Multiset α
g1 g2 : α → β
h : ∀ a ∈ S, g1 a ∣ g2 a
a : α
T : Multiset α
haS : a ∈ S
a✝ : T ⊆ S
IH : (map g1 T).prod ∣ (map g2 T).prod
⊢ (map g1 (insert a T)).prod ∣ (map g2 (insert a T)).prod
tactic: intro a T haS _ IH
state_before: case h₂
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : CommMonoid β
S : Multiset α
g1 g2 : α → β
h : ∀ a ∈ S, g1 a ∣ g2 a
a : α
T : Multiset α
haS : a ∈ S
a✝ : T ⊆ S
IH : (map g1 T).prod ∣ (map g2 T).prod
⊢ (map g1 (insert a T)).prod ∣ (map g2 (insert a T)).prod
state_after: no goals
tactic: simp [mul_dvd_mul (h a haS) IH]