ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: powers_eq_top_of_prime_card
File: Mathlib/GroupTheory/SpecificGroups/Cyclic.lean

Proof steps:
state_before: α : Type u
a : α
inst✝¹ : Group α
G : Type u_1
inst✝ : Group G
x✝ : Fintype G
p : ℕ
hp : Fact (Nat.Prime p)
h : Fintype.card G = p
g : G
hg : g ≠ 1
⊢ Submonoid.powers g = ⊤
state_after: case h
α : Type u
a : α
inst✝¹ : Group α
G : Type u_1
inst✝ : Group G
x✝ : Fintype G
p : ℕ
hp : Fact (Nat.Prime p)
h : Fintype.card G = p
g : G
hg : g ≠ 1
x : G
⊢ x ∈ Submonoid.powers g ↔ x ∈ ⊤
tactic: ext x
state_before: case h
α : Type u
a : α
inst✝¹ : Group α
G : Type u_1
inst✝ : Group G
x✝ : Fintype G
p : ℕ
hp : Fact (Nat.Prime p)
h : Fintype.card G = p
g : G
hg : g ≠ 1
x : G
⊢ x ∈ Submonoid.powers g ↔ x ∈ ⊤
state_after: no goals
tactic: simp [mem_powers_of_prime_card h hg]
Theorem: Preperfect.open_inter
File: Mathlib/Topology/Perfect.lean

Proof steps:
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C U : Set α
hC : Preperfect C
hU : IsOpen U
⊢ Preperfect (U ∩ C)
state_after: case intro
α : Type u_1
inst✝ : TopologicalSpace α
C U : Set α
hC : Preperfect C
hU : IsOpen U
x : α
xU : x ∈ U
xC : x ∈ C
⊢ AccPt x (𝓟 (U ∩ C))
tactic: rintro x ⟨xU, xC⟩
state_before: case intro
α : Type u_1
inst✝ : TopologicalSpace α
C U : Set α
hC : Preperfect C
hU : IsOpen U
x : α
xU : x ∈ U
xC : x ∈ C
⊢ AccPt x (𝓟 (U ∩ C))
state_after: case intro
α : Type u_1
inst✝ : TopologicalSpace α
C U : Set α
hC : Preperfect C
hU : IsOpen U
x : α
xU : x ∈ U
xC : x ∈ C
⊢ U ∈ 𝓝 x
tactic: apply (hC _ xC).nhds_inter
state_before: case intro
α : Type u_1
inst✝ : TopologicalSpace α
C U : Set α
hC : Preperfect C
hU : IsOpen U
x : α
xU : x ∈ U
xC : x ∈ C
⊢ U ∈ 𝓝 x
state_after: no goals
tactic: exact hU.mem_nhds xU
Theorem: Sylow.normal_of_all_max_subgroups_normal
File: Mathlib/GroupTheory/Sylow.lean

Proof steps:
state_before: G : Type u
α : Type v
β : Type w
inst✝³ : Group G
inst✝² : Finite G
hnc : ∀ (H : Subgroup G), IsCoatom H → H.Normal
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : Finite (Sylow p G)
P : Sylow p G
⊢ (↑P).normalizer = ⊤
state_after: case inl
G : Type u
α : Type v
β : Type w
inst✝³ : Group G
inst✝² : Finite G
hnc : ∀ (H : Subgroup G), IsCoatom H → H.Normal
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : Finite (Sylow p G)
P : Sylow p G
heq : (↑P).normalizer = ⊤
⊢ (↑P).normalizer = ⊤

case inr.intro.intro
G : Type u
α : Type v
β : Type w
inst✝³ : Group G
inst✝² : Finite G
hnc : ∀ (H : Subgroup G), IsCoatom H → H.Normal
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : Finite (Sylow p G)
P : Sylow p G
K : Subgroup G
hK : IsCoatom K
hNK : (↑P).normalizer ≤ K
⊢ (↑P).normalizer = ⊤
tactic: rcases eq_top_or_exists_le_coatom (↑P : Subgroup G).normalizer with (heq | ⟨K, hK, hNK⟩)
Theorem: Nat.roughNumbersUpTo_card_le'
File: Mathlib/NumberTheory/SumPrimeReciprocals.lean

Proof steps:
state_before: N k : ℕ
⊢ ↑(N.roughNumbersUpTo k).card ≤ ↑N * ∑ p ∈ N.succ.primesBelow \ k.primesBelow, 1 / ↑p
state_after: N k : ℕ
⊢ ↑(N.roughNumbersUpTo k).card ≤ ∑ x ∈ N.succ.primesBelow \ k.primesBelow, ↑N / ↑x
tactic: simp_rw [Finset.mul_sum, mul_one_div]
state_before: N k : ℕ
⊢ ↑(N.roughNumbersUpTo k).card ≤ ∑ x ∈ N.succ.primesBelow \ k.primesBelow, ↑N / ↑x
state_after: no goals
tactic: exact (Nat.cast_le.mpr <| roughNumbersUpTo_card_le N k).trans <|
    (cast_sum (β := ℝ) ..) ▸ Finset.sum_le_sum fun n _ ↦ cast_div_le
Theorem: MvPowerSeries.coeff_pow
File: Mathlib/RingTheory/MvPowerSeries/Basic.lean

Proof steps:
state_before: σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : MvPowerSeries σ R
n : ℕ
d : σ →₀ ℕ
⊢ (coeff R d) (f ^ n) = ∑ l ∈ (range n).finsuppAntidiag d, ∏ i ∈ range n, (coeff R (l i)) f
state_after: σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : MvPowerSeries σ R
n : ℕ
d : σ →₀ ℕ
⊢ f ^ n = ∏ x ∈ range n, f
tactic: suffices f ^ n = (Finset.range n).prod fun _ ↦ f by
    rw [this, coeff_prod]
state_before: σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : MvPowerSeries σ R
n : ℕ
d : σ →₀ ℕ
⊢ f ^ n = ∏ x ∈ range n, f
state_after: no goals
tactic: rw [Finset.prod_const, card_range]
Theorem: CategoryTheory.Limits.coprod.pentagon
File: Mathlib/CategoryTheory/Limits/Shapes/BinaryProducts.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
X✝ Y✝ : C
inst✝¹ : Category.{v, u} C
inst✝ : HasBinaryCoproducts C
W X Y Z : C
⊢ map (associator W X Y).hom (𝟙 Z) ≫ (associator W (X ⨿ Y) Z).hom ≫ map (𝟙 W) (associator X Y Z).hom =
    (associator (W ⨿ X) Y Z).hom ≫ (associator W X (Y ⨿ Z)).hom
state_after: no goals
tactic: simp
Theorem: List.get_reverse_aux₁
File: Mathlib/Data/List/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
l r : List α
i : ℕ
⊢ ∀ (h1 : i + (a :: l).length < ((a :: l).reverseAux r).length) (h2 : i < r.length),
    ((a :: l).reverseAux r).get ⟨i + (a :: l).length, h1⟩ = r.get ⟨i, h2⟩
state_after: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
l r : List α
i : ℕ
⊢ ∀ (h1 : i + 1 + l.length < ((a :: l).reverseAux r).length) (h2 : i < r.length),
    ((a :: l).reverseAux r).get ⟨i + 1 + l.length, h1⟩ = r.get ⟨i, h2⟩
tactic: rw [show i + length (a :: l) = i + 1 + length l from Nat.add_right_comm i (length l) 1]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
l r : List α
i : ℕ
⊢ ∀ (h1 : i + 1 + l.length < ((a :: l).reverseAux r).length) (h2 : i < r.length),
    ((a :: l).reverseAux r).get ⟨i + 1 + l.length, h1⟩ = r.get ⟨i, h2⟩
state_after: no goals
tactic: exact fun h1 h2 => get_reverse_aux₁ l (a :: r) (i + 1) h1 (succ_lt_succ h2)
Theorem: Real.logDeriv_cosh
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Deriv.lean

Proof steps:
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : E → ℝ
f' : E →L[ℝ] ℝ
x : E
s : Set E
⊢ logDeriv cosh = tanh
state_after: case h
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : E → ℝ
f' : E →L[ℝ] ℝ
x : E
s : Set E
x✝ : ℝ
⊢ logDeriv cosh x✝ = tanh x✝
tactic: ext
state_before: case h
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : E → ℝ
f' : E →L[ℝ] ℝ
x : E
s : Set E
x✝ : ℝ
⊢ logDeriv cosh x✝ = tanh x✝
state_after: no goals
tactic: rw [logDeriv, Real.deriv_cosh, Pi.div_apply, Real.tanh_eq_sinh_div_cosh]
Theorem: AddSubgroup.comap_normalizer_eq_of_injective_of_le_range
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
N✝ : Type u_5
inst✝¹ : Group N✝
f✝ : G →* N✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ comap f H.normalizer = (comap f H).normalizer
state_after: case a
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
N✝ : Type u_5
inst✝¹ : Group N✝
f✝ : G →* N✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ map f (comap f H.normalizer) = map f (comap f H).normalizer
tactic: apply Subgroup.map_injective hf
state_before: case a
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
N✝ : Type u_5
inst✝¹ : Group N✝
f✝ : G →* N✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ map f (comap f H.normalizer) = map f (comap f H).normalizer
state_after: case a
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
N✝ : Type u_5
inst✝¹ : Group N✝
f✝ : G →* N✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ H.normalizer = map f (comap f H).normalizer
tactic: rw [map_comap_eq_self h]
state_before: case a
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
N✝ : Type u_5
inst✝¹ : Group N✝
f✝ : G →* N✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ H.normalizer = map f (comap f H).normalizer
state_after: case a.a
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
N✝ : Type u_5
inst✝¹ : Group N✝
f✝ : G →* N✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ H.normalizer ≤ map f (comap f H).normalizer

case a.a
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
N✝ : Type u_5
inst✝¹ : Group N✝
f✝ : G →* N✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ map f (comap f H).normalizer ≤ H.normalizer
tactic: apply le_antisymm
Theorem: isAddCyclic_of_surjective
File: Mathlib/GroupTheory/SpecificGroups/Cyclic.lean

Proof steps:
state_before: α : Type u
a : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
hH : IsCyclic H
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
⊢ IsCyclic G
state_after: case mk.intro
α : Type u
a : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
x : H
hx : ∀ (x_1 : H), x_1 ∈ zpowers x
⊢ IsCyclic G
tactic: obtain ⟨x, hx⟩ := hH
state_before: case mk.intro
α : Type u
a : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
x : H
hx : ∀ (x_1 : H), x_1 ∈ zpowers x
⊢ IsCyclic G
state_after: case mk.intro
α : Type u
a✝ : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
x : H
hx : ∀ (x_1 : H), x_1 ∈ zpowers x
a : G
⊢ a ∈ zpowers (f x)
tactic: refine ⟨f x, fun a ↦ ?_⟩
state_before: case mk.intro
α : Type u
a✝ : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
x : H
hx : ∀ (x_1 : H), x_1 ∈ zpowers x
a : G
⊢ a ∈ zpowers (f x)
state_after: case mk.intro.intro
α : Type u
a✝ : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
x : H
hx : ∀ (x_1 : H), x_1 ∈ zpowers x
a : H
⊢ f a ∈ zpowers (f x)
tactic: obtain ⟨a, rfl⟩ := hf a
state_before: case mk.intro.intro
α : Type u
a✝ : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
x : H
hx : ∀ (x_1 : H), x_1 ∈ zpowers x
a : H
⊢ f a ∈ zpowers (f x)
state_after: case mk.intro.intro.intro
α : Type u
a : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
x : H
hx : ∀ (x_1 : H), x_1 ∈ zpowers x
n : ℤ
⊢ f ((fun x_1 => x ^ x_1) n) ∈ zpowers (f x)
tactic: obtain ⟨n, rfl⟩ := hx a
state_before: case mk.intro.intro.intro
α : Type u
a : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
x : H
hx : ∀ (x_1 : H), x_1 ∈ zpowers x
n : ℤ
⊢ f ((fun x_1 => x ^ x_1) n) ∈ zpowers (f x)
state_after: no goals
tactic: exact ⟨n, (map_zpow _ _ _).symm⟩
Theorem: Complex.cosh_sq_sub_sinh_sq
File: Mathlib/Data/Complex/Exponential.lean

Proof steps:
state_before: x y : ℂ
⊢ cosh x ^ 2 - sinh x ^ 2 = 1
state_after: no goals
tactic: rw [sq_sub_sq, cosh_add_sinh, cosh_sub_sinh, ← exp_add, add_neg_self, exp_zero]
Theorem: IsPrimitiveRoot.norm_eq_one_of_linearly_ordered
File: Mathlib/NumberTheory/Cyclotomic/PrimitiveRoots.lean

Proof steps:
state_before: p n : ℕ+
A : Type w
B : Type z
K✝ : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : IsCyclotomicExtension {n} A B
inst✝⁴ : CommRing L
ζ : L
hζ : IsPrimitiveRoot ζ ↑n
inst✝³ : Field K✝
inst✝² : Algebra K✝ L
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : Algebra K L
hodd : Odd ↑n
⊢ (Algebra.norm K) ζ = 1
state_after: p n : ℕ+
A : Type w
B : Type z
K✝ : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : IsCyclotomicExtension {n} A B
inst✝⁴ : CommRing L
ζ : L
hζ : IsPrimitiveRoot ζ ↑n
inst✝³ : Field K✝
inst✝² : Algebra K✝ L
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : Algebra K L
hodd : Odd ↑n
hz : (Algebra.norm K) (ζ ^ ↑n) = (Algebra.norm K) 1
⊢ (Algebra.norm K) ζ = 1
tactic: have hz := congr_arg (norm K) ((IsPrimitiveRoot.iff_def _ n).1 hζ).1
state_before: p n : ℕ+
A : Type w
B : Type z
K✝ : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : IsCyclotomicExtension {n} A B
inst✝⁴ : CommRing L
ζ : L
hζ : IsPrimitiveRoot ζ ↑n
inst✝³ : Field K✝
inst✝² : Algebra K✝ L
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : Algebra K L
hodd : Odd ↑n
hz : (Algebra.norm K) (ζ ^ ↑n) = (Algebra.norm K) 1
⊢ (Algebra.norm K) ζ = 1
state_after: p n : ℕ+
A : Type w
B : Type z
K✝ : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : IsCyclotomicExtension {n} A B
inst✝⁴ : CommRing L
ζ : L
hζ : IsPrimitiveRoot ζ ↑n
inst✝³ : Field K✝
inst✝² : Algebra K✝ L
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : Algebra K L
hodd : Odd ↑n
hz : (Algebra.norm K) ζ ^ ↑n = 1 ^ ↑n
⊢ (Algebra.norm K) ζ = 1
tactic: rw [← (algebraMap K L).map_one, Algebra.norm_algebraMap, one_pow, map_pow, ← one_pow ↑n] at hz
state_before: p n : ℕ+
A : Type w
B : Type z
K✝ : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : IsCyclotomicExtension {n} A B
inst✝⁴ : CommRing L
ζ : L
hζ : IsPrimitiveRoot ζ ↑n
inst✝³ : Field K✝
inst✝² : Algebra K✝ L
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : Algebra K L
hodd : Odd ↑n
hz : (Algebra.norm K) ζ ^ ↑n = 1 ^ ↑n
⊢ (Algebra.norm K) ζ = 1
state_after: no goals
tactic: exact StrictMono.injective hodd.strictMono_pow hz
Theorem: Set.IsPWO.add
File: Mathlib/Data/Finset/MulAntidiagonal.lean

Proof steps:
state_before: α : Type u_1
s t : Set α
inst✝ : OrderedCancelCommMonoid α
hs : s.IsPWO
ht : t.IsPWO
⊢ (s * t).IsPWO
state_after: α : Type u_1
s t : Set α
inst✝ : OrderedCancelCommMonoid α
hs : s.IsPWO
ht : t.IsPWO
⊢ ((fun x => x.1 * x.2) '' s ×ˢ t).IsPWO
tactic: rw [← image_mul_prod]
state_before: α : Type u_1
s t : Set α
inst✝ : OrderedCancelCommMonoid α
hs : s.IsPWO
ht : t.IsPWO
⊢ ((fun x => x.1 * x.2) '' s ×ˢ t).IsPWO
state_after: no goals
tactic: exact (hs.prod ht).image_of_monotone (monotone_fst.mul' monotone_snd)
Theorem: Real.BohrMollerup.tendsto_logGammaSeq
File: Mathlib/Analysis/SpecialFunctions/Gamma/BohrMollerup.lean

Proof steps:
state_before: f : ℝ → ℝ
x : ℝ
n : ℕ
hf_conv : ConvexOn ℝ (Ioi 0) f
hf_feq : ∀ {y : ℝ}, 0 < y → f (y + 1) = f y + log y
hx : 0 < x
⊢ ∀ (m : ℕ), ↑m < x → x ≤ ↑m + 1 → Tendsto (logGammaSeq x) atTop (𝓝 (f x - f 1))
state_after: f : ℝ → ℝ
x : ℝ
n : ℕ
hf_conv : ConvexOn ℝ (Ioi 0) f
hf_feq : ∀ {y : ℝ}, 0 < y → f (y + 1) = f y + log y
hx : 0 < x
m : ℕ
⊢ ↑m < x → x ≤ ↑m + 1 → Tendsto (logGammaSeq x) atTop (𝓝 (f x - f 1))
tactic: intro m
state_before: f : ℝ → ℝ
x : ℝ
n : ℕ
hf_conv : ConvexOn ℝ (Ioi 0) f
hf_feq : ∀ {y : ℝ}, 0 < y → f (y + 1) = f y + log y
hx : 0 < x
m : ℕ
⊢ ↑m < x → x ≤ ↑m + 1 → Tendsto (logGammaSeq x) atTop (𝓝 (f x - f 1))
state_after: case zero
f : ℝ → ℝ
n : ℕ
hf_conv : ConvexOn ℝ (Ioi 0) f
hf_feq : ∀ {y : ℝ}, 0 < y → f (y + 1) = f y + log y
x : ℝ
hx : 0 < x
⊢ ↑0 < x → x ≤ ↑0 + 1 → Tendsto (logGammaSeq x) atTop (𝓝 (f x - f 1))

case succ
f : ℝ → ℝ
n : ℕ
hf_conv : ConvexOn ℝ (Ioi 0) f
hf_feq : ∀ {y : ℝ}, 0 < y → f (y + 1) = f y + log y
m : ℕ
hm : ∀ {x : ℝ}, 0 < x → ↑m < x → x ≤ ↑m + 1 → Tendsto (logGammaSeq x) atTop (𝓝 (f x - f 1))
x : ℝ
hx : 0 < x
⊢ ↑(m + 1) < x → x ≤ ↑(m + 1) + 1 → Tendsto (logGammaSeq x) atTop (𝓝 (f x - f 1))
tactic: induction' m with m hm generalizing x
Theorem: List.Subset.dedup_append_left
File: Mathlib/Data/Multiset/Dedup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : List α
h : t ⊆ s
⊢ (s ++ t).dedup ~ s.dedup
state_after: no goals
tactic: rw [← coe_eq_coe, ← coe_dedup, ← coe_add, Subset.dedup_add_left h, coe_dedup]
Theorem: Ideal.map_eq_iff_sup_ker_eq_of_surjective
File: Mathlib/RingTheory/Ideal/Maps.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
F : Type u_3
inst✝¹ : CommRing R
inst✝ : CommRing S
I J : Ideal R
f : R →+* S
hf : Function.Surjective ⇑f
⊢ map f I = map f J ↔ I ⊔ RingHom.ker f = J ⊔ RingHom.ker f
state_after: no goals
tactic: rw [← (comap_injective_of_surjective f hf).eq_iff, comap_map_of_surjective f hf,
    comap_map_of_surjective f hf, RingHom.ker_eq_comap_bot]
Theorem: RingHom.comap_ker
File: Mathlib/RingTheory/Ideal/Maps.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
F : Type u_1
G : Type u_2
inst✝⁴ : Semiring R
inst✝³ : Semiring S
inst✝² : Semiring T
inst✝¹ : FunLike F R S
rcf : RingHomClass F R S
inst✝ : FunLike G T S
rcg : RingHomClass G T S
f✝ : F
g✝ : G
f : S →+* R
g : T →+* S
⊢ Ideal.comap g (ker f) = ker (f.comp g)
state_after: no goals
tactic: rw [RingHom.ker_eq_comap_bot, Ideal.comap_comap, RingHom.ker_eq_comap_bot]
Theorem: SmoothFiberwiseLinear.locality_aux₂
File: Mathlib/Geometry/Manifold/VectorBundle/FiberwiseLinear.lean

Proof steps:
state_before: 𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : PartialHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
h :
  ∀ x ∈ U,
    ∃ φ u,
      ∃ (hu : IsOpen u) (_ : u ⊆ U) (_ : x ∈ u) (hφ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(φ x)) u) (h2φ :
        SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(φ x).symm) u),
        (e.restr (u ×ˢ univ)).EqOnSource (FiberwiseLinear.partialHomeomorph φ hu ⋯ ⋯)
⊢ ∃ Φ U,
    ∃ (hU₀ : IsOpen U) (hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(Φ x)) U) (h2Φ :
      SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(Φ x).symm) U), e.EqOnSource (FiberwiseLinear.partialHomeomorph Φ hU₀ ⋯ ⋯)
state_after: no goals
tactic: classical
  rw [SetCoe.forall'] at h
  choose! φ u hu hUu hux hφ h2φ heφ using h
  have heuφ : ∀ x : U, EqOn e (fun q => (q.1, φ x q.1 q.2)) (u x ×ˢ univ) := fun x p hp ↦ by
    refine (heφ x).2 ?_
    rw [(heφ x).1]
    exact hp
  have huφ : ∀ (x x' : U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y := fun p p' y hyp hyp' ↦ by
    ext v
    have h1 : e (y, v) = (y, φ p y v) := heuφ _ ⟨(id hyp : (y, v).fst ∈ u p), trivial⟩
    have h2 : e (y, v) = (y, φ p' y v) := heuφ _ ⟨(id hyp' : (y, v).fst ∈ u p'), trivial⟩
    exact congr_arg Prod.snd (h1.symm.trans h2)
  have hUu' : U = ⋃ i, u i := by
    ext x
    rw [mem_iUnion]
    refine ⟨fun h => ⟨⟨x, h⟩, hux _⟩, ?_⟩
    rintro ⟨x, hx⟩
    exact hUu x hx
  have hU' : IsOpen U := by
    rw [hUu']
    apply isOpen_iUnion hu
  let Φ₀ : U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ (↑)) huφ U hUu'.le
  let Φ : B → F ≃L[𝕜] F := fun y =>
    if hy : y ∈ U then Φ₀ ⟨y, hy⟩ else ContinuousLinearEquiv.refl 𝕜 F
  have hΦ : ∀ (y) (hy : y ∈ U), Φ y = Φ₀ ⟨y, hy⟩ := fun y hy => dif_pos hy
  have hΦφ : ∀ x : U, ∀ y ∈ u x, Φ y = φ x y := by
    intro x y hyu
    refine (hΦ y (hUu x hyu)).trans ?_
    exact iUnionLift_mk ⟨y, hyu⟩ _
  have hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => (Φ y : F →L[𝕜] F)) U := by
    apply contMDiffOn_of_locally_contMDiffOn
    intro x hx
    refine ⟨u ⟨x, hx⟩, hu ⟨x, hx⟩, hux _, ?_⟩
    refine (ContMDiffOn.congr (hφ ⟨x, hx⟩) ?_).mono inter_subset_right
    intro y hy
    rw [hΦφ ⟨x, hx⟩ y hy]
  have h2Φ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ((Φ y).symm : F →L[𝕜] F)) U := by
    apply contMDiffOn_of_locally_contMDiffOn
    intro x hx
    refine ⟨u ⟨x, hx⟩, hu ⟨x, hx⟩, hux _, ?_⟩
    refine (ContMDiffOn.congr (h2φ ⟨x, hx⟩) ?_).mono inter_subset_right
    intro y hy
    rw [hΦφ ⟨x, hx⟩ y hy]
  refine ⟨Φ, U, hU', hΦ, h2Φ, hU, fun p hp => ?_⟩
  rw [hU] at hp
  rw [heuφ ⟨p.fst, hp.1⟩ ⟨hux _, hp.2⟩]
  congrm (_, ?_)
  rw [hΦφ]
  apply hux
Theorem: NonUnitalAlgebra.eq_top_iff
File: Mathlib/Algebra/Algebra/NonUnitalSubalgebra.lean

Proof steps:
state_before: F : Type u_1
R : Type u
A : Type v
B : Type w
inst✝¹⁰ : CommSemiring R
inst✝⁹ : NonUnitalNonAssocSemiring A
inst✝⁸ : Module R A
inst✝⁷ : IsScalarTower R A A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : IsScalarTower R B B
inst✝² : SMulCommClass R B B
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
S : NonUnitalSubalgebra R A
h : S = ⊤
x : A
⊢ x ∈ S
state_after: F : Type u_1
R : Type u
A : Type v
B : Type w
inst✝¹⁰ : CommSemiring R
inst✝⁹ : NonUnitalNonAssocSemiring A
inst✝⁸ : Module R A
inst✝⁷ : IsScalarTower R A A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : IsScalarTower R B B
inst✝² : SMulCommClass R B B
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
S : NonUnitalSubalgebra R A
h : S = ⊤
x : A
⊢ x ∈ ⊤
tactic: rw [h]
state_before: F : Type u_1
R : Type u
A : Type v
B : Type w
inst✝¹⁰ : CommSemiring R
inst✝⁹ : NonUnitalNonAssocSemiring A
inst✝⁸ : Module R A
inst✝⁷ : IsScalarTower R A A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : IsScalarTower R B B
inst✝² : SMulCommClass R B B
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
S : NonUnitalSubalgebra R A
h : S = ⊤
x : A
⊢ x ∈ ⊤
state_after: no goals
tactic: exact mem_top
state_before: F : Type u_1
R : Type u
A : Type v
B : Type w
inst✝¹⁰ : CommSemiring R
inst✝⁹ : NonUnitalNonAssocSemiring A
inst✝⁸ : Module R A
inst✝⁷ : IsScalarTower R A A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : IsScalarTower R B B
inst✝² : SMulCommClass R B B
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
S : NonUnitalSubalgebra R A
h : ∀ (x : A), x ∈ S
⊢ S = ⊤
state_after: case h
F : Type u_1
R : Type u
A : Type v
B : Type w
inst✝¹⁰ : CommSemiring R
inst✝⁹ : NonUnitalNonAssocSemiring A
inst✝⁸ : Module R A
inst✝⁷ : IsScalarTower R A A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : IsScalarTower R B B
inst✝² : SMulCommClass R B B
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
S : NonUnitalSubalgebra R A
h : ∀ (x : A), x ∈ S
x : A
⊢ x ∈ S ↔ x ∈ ⊤
tactic: ext x
state_before: case h
F : Type u_1
R : Type u
A : Type v
B : Type w
inst✝¹⁰ : CommSemiring R
inst✝⁹ : NonUnitalNonAssocSemiring A
inst✝⁸ : Module R A
inst✝⁷ : IsScalarTower R A A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : IsScalarTower R B B
inst✝² : SMulCommClass R B B
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
S : NonUnitalSubalgebra R A
h : ∀ (x : A), x ∈ S
x : A
⊢ x ∈ S ↔ x ∈ ⊤
state_after: no goals
tactic: exact ⟨fun _ => mem_top, fun _ => h x⟩
Theorem: le_nhdsAdjoint_iff
File: Mathlib/Topology/Order.lean

Proof steps:
state_before: α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
t : TopologicalSpace α
⊢ t ≤ nhdsAdjoint a f ↔ 𝓝 a ≤ pure a ⊔ f ∧ ∀ (b : α), b ≠ a → IsOpen {b}
state_after: no goals
tactic: simp only [le_nhdsAdjoint_iff', @isOpen_singleton_iff_nhds_eq_pure α t]