ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Equiv.Perm.sameCycle_pow_left
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
p : α → Prop
x y z : α
n : ℕ
⊢ f.SameCycle ((f ^ n) x) y ↔ f.SameCycle x y
state_after: no goals
tactic: rw [← zpow_natCast, sameCycle_zpow_left]
Theorem: Submodule.span_int_eq
File: Mathlib/LinearAlgebra/Span.lean

Proof steps:
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M✝ : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝⁸ : Semiring R
inst✝⁷ : AddCommMonoid M✝
inst✝⁶ : Module R M✝
x : M✝
p p' : Submodule R M✝
inst✝⁵ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R₂ M₂
F : Type u_8
inst✝² : FunLike F M✝ M₂
inst✝¹ : SemilinearMapClass F σ₁₂ M✝ M₂
s✝ t : Set M✝
M : Type u_9
inst✝ : AddCommGroup M
s : AddSubgroup M
⊢ (span ℤ ↑s).toAddSubgroup = s
state_after: no goals
tactic: rw [span_int_eq_addSubgroup_closure, s.closure_eq]
Theorem: LowerAdjoint.mem_iff
File: Mathlib/Order/Closure.lean

Proof steps:
state_before: α : Type u_1
ι : Sort u_2
κ : ι → Sort u_3
β : Type u_4
inst✝ : SetLike α β
l : LowerAdjoint SetLike.coe
s : Set β
x : β
⊢ x ∈ l.toFun s ↔ ∀ (S : α), s ⊆ ↑S → x ∈ S
state_after: α : Type u_1
ι : Sort u_2
κ : ι → Sort u_3
β : Type u_4
inst✝ : SetLike α β
l : LowerAdjoint SetLike.coe
s : Set β
x : β
⊢ l.toFun {x} ≤ l.toFun s ↔ ∀ (S : α), l.toFun s ≤ S → l.toFun {x} ≤ S
tactic: simp_rw [← SetLike.mem_coe, ← Set.singleton_subset_iff, ← l.le_iff_subset]
state_before: α : Type u_1
ι : Sort u_2
κ : ι → Sort u_3
β : Type u_4
inst✝ : SetLike α β
l : LowerAdjoint SetLike.coe
s : Set β
x : β
⊢ l.toFun {x} ≤ l.toFun s ↔ ∀ (S : α), l.toFun s ≤ S → l.toFun {x} ≤ S
state_after: no goals
tactic: exact ⟨fun h S => h.trans, fun h => h _ le_rfl⟩
Theorem: CategoryTheory.Limits.WidePushout.arrow_ι
File: Mathlib/CategoryTheory/Limits/Shapes/WidePullbacks.lean

Proof steps:
state_before: J : Type w
C✝ : Type u
inst✝² : Category.{v, u} C✝
C : Type u
inst✝¹ : Category.{v, u} C
B : C
objs : J → C
arrows : (j : J) → B ⟶ objs j
inst✝ : HasWidePushout B objs arrows
j : J
⊢ arrows j ≫ ι arrows j = head arrows
state_after: no goals
tactic: apply colimit.w (WidePushoutShape.wideSpan _ _ _) (WidePushoutShape.Hom.init j)
Theorem: Real.hasSum_pow_div_log_of_abs_lt_one
File: Mathlib/Analysis/SpecialFunctions/Log/Deriv.lean

Proof steps:
state_before: x : ℝ
h : |x| < 1
⊢ HasSum (fun n => x ^ (n + 1) / (↑n + 1)) (-log (1 - x))
state_after: x : ℝ
h : |x| < 1
⊢ Tendsto (fun n => ∑ i ∈ Finset.range n, x ^ (i + 1) / (↑i + 1)) atTop (𝓝 (-log (1 - x)))

x : ℝ
h : |x| < 1
⊢ Summable fun n => x ^ (n + 1) / (↑n + 1)
tactic: rw [Summable.hasSum_iff_tendsto_nat]
state_before: x : ℝ
h : |x| < 1
⊢ Summable fun n => x ^ (n + 1) / (↑n + 1)
state_after: x : ℝ
h : |x| < 1
i : ℕ
⊢ ‖x ^ (i + 1) / (↑i + 1)‖ ≤ |x| ^ i
tactic: refine .of_norm_bounded _ (summable_geometric_of_lt_one (abs_nonneg _) h) fun i => ?_
state_before: x : ℝ
h : |x| < 1
i : ℕ
⊢ ‖x ^ (i + 1) / (↑i + 1)‖ ≤ |x| ^ i
state_after: no goals
tactic: calc
    ‖x ^ (i + 1) / (i + 1)‖ = |x| ^ (i + 1) / (i + 1) := by
      have : (0 : ℝ) ≤ i + 1 := le_of_lt (Nat.cast_add_one_pos i)
      rw [norm_eq_abs, abs_div, ← pow_abs, abs_of_nonneg this]
    _ ≤ |x| ^ (i + 1) / (0 + 1) := by
      gcongr
      exact i.cast_nonneg
    _ ≤ |x| ^ i := by
      simpa [pow_succ] using mul_le_of_le_one_right (pow_nonneg (abs_nonneg x) i) (le_of_lt h)
Theorem: Submodule.fg_iff_add_subgroup_fg
File: Mathlib/RingTheory/Finiteness.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝³ : Semiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
G : Type u_3
inst✝ : AddCommGroup G
P : Submodule ℤ G
x✝ : P.FG
S : Finset G
hS : span ℤ ↑S = P
⊢ AddSubgroup.closure ↑S = P.toAddSubgroup
state_after: no goals
tactic: simpa [← span_int_eq_addSubgroup_closure] using hS
state_before: R : Type u_1
M : Type u_2
inst✝³ : Semiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
G : Type u_3
inst✝ : AddCommGroup G
P : Submodule ℤ G
x✝ : P.toAddSubgroup.FG
S : Finset G
hS : AddSubgroup.closure ↑S = P.toAddSubgroup
⊢ span ℤ ↑S = P
state_after: no goals
tactic: simpa [← span_int_eq_addSubgroup_closure] using hS
Theorem: AlgebraicClosure.toSplittingField_evalXSelf
File: Mathlib/FieldTheory/IsAlgClosed/AlgebraicClosure.lean

Proof steps:
state_before: k : Type u
inst✝ : Field k
s : Finset (MonicIrreducible k)
f : MonicIrreducible k
hf : f ∈ s
⊢ (toSplittingField k s) (evalXSelf k f) = 0
state_after: k : Type u
inst✝ : Field k
s : Finset (MonicIrreducible k)
f : MonicIrreducible k
hf : f ∈ s
⊢ Polynomial.eval₂ (algebraMap k (∏ x ∈ s, ↑x).SplittingField)
      (rootOfSplits (algebraMap k (∏ x ∈ s, ↑x).SplittingField) ⋯ ⋯) ↑f =
    0
tactic: rw [toSplittingField, evalXSelf, ← AlgHom.coe_toRingHom, hom_eval₂, AlgHom.coe_toRingHom,
    MvPolynomial.aeval_X, dif_pos hf, ← MvPolynomial.algebraMap_eq, AlgHom.comp_algebraMap]
state_before: k : Type u
inst✝ : Field k
s : Finset (MonicIrreducible k)
f : MonicIrreducible k
hf : f ∈ s
⊢ Polynomial.eval₂ (algebraMap k (∏ x ∈ s, ↑x).SplittingField)
      (rootOfSplits (algebraMap k (∏ x ∈ s, ↑x).SplittingField) ⋯ ⋯) ↑f =
    0
state_after: no goals
tactic: exact map_rootOfSplits _ _ _
Theorem: Nat.roughNumbersUpTo_card_le
File: Mathlib/NumberTheory/SmoothNumbers.lean

Proof steps:
state_before: N k : ℕ
⊢ (N.roughNumbersUpTo k).card ≤ ∑ p ∈ N.succ.primesBelow \ k.primesBelow, N / p
state_after: N k : ℕ
⊢ ((N.succ.primesBelow \ k.primesBelow).biUnion fun p =>
        Finset.filter (fun m => m ≠ 0 ∧ p ∣ m) (Finset.range N.succ)).card ≤
    ∑ p ∈ N.succ.primesBelow \ k.primesBelow, N / p
tactic: rw [roughNumbersUpTo_eq_biUnion]
state_before: N k : ℕ
⊢ ((N.succ.primesBelow \ k.primesBelow).biUnion fun p =>
        Finset.filter (fun m => m ≠ 0 ∧ p ∣ m) (Finset.range N.succ)).card ≤
    ∑ p ∈ N.succ.primesBelow \ k.primesBelow, N / p
state_after: no goals
tactic: exact Finset.card_biUnion_le.trans <| Finset.sum_le_sum fun p _ ↦ (card_multiples' N p).le
Theorem: nsmul_add_comm
File: Mathlib/Algebra/Group/Defs.lean

Proof steps:
state_before: G : Type u_1
M : Type u_2
inst✝ : Monoid M
a✝ b c : M
m✝ n✝ : ℕ
a : M
m n : ℕ
⊢ a ^ m * a ^ n = a ^ n * a ^ m
state_after: no goals
tactic: rw [← pow_add, ← pow_add, Nat.add_comm]
Theorem: SimpleGraph.Walk.IsHamiltonian.map
File: Mathlib/Combinatorics/SimpleGraph/Hamiltonian.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a b : α
p : G.Walk a b
H : SimpleGraph β
f : G →g H
hf : Bijective ⇑f
hp : p.IsHamiltonian
⊢ (Walk.map f p).IsHamiltonian
state_after: no goals
tactic: simp [IsHamiltonian, hf.surjective.forall, hf.injective, hp _]
Theorem: inv_smul_lt_iff_of_pos
File: Mathlib/Algebra/Order/Module/Defs.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
a a₁ a₂ : α
b b₁ b₂ : β
inst✝⁵ : GroupWithZero α
inst✝⁴ : Preorder α
inst✝³ : Preorder β
inst✝² : MulAction α β
inst✝¹ : PosSMulStrictMono α β
inst✝ : PosSMulReflectLT α β
ha : 0 < a
⊢ a⁻¹ • b₁ < b₂ ↔ b₁ < a • b₂
state_after: no goals
tactic: rw [← smul_lt_smul_iff_of_pos_left ha, smul_inv_smul₀ ha.ne']
Theorem: List.eq_replicate_length
File: Mathlib/Data/List/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
⊢ [] = replicate [].length a ↔ ∀ (b : α), b ∈ [] → b = a
state_after: no goals
tactic: simp
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a b : α
l : List α
⊢ b :: l = replicate (b :: l).length a ↔ ∀ (b_1 : α), b_1 ∈ b :: l → b_1 = a
state_after: no goals
tactic: simp [eq_replicate_length, replicate_succ]
Theorem: Set.preimage_const_mul_Ico_of_neg
File: Mathlib/Data/Set/Pointwise/Interval.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a✝ a b c : α
h : c < 0
⊢ (fun x => c * x) ⁻¹' Ico a b = Ioc (b / c) (a / c)
state_after: no goals
tactic: simpa only [mul_comm] using preimage_mul_const_Ico_of_neg a b h
Theorem: MeasureTheory.Measure.haar.is_left_invariant_addIndex
File: Mathlib/MeasureTheory/Measure/Haar/Basic.lean

Proof steps:
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
g : G
V : Set G
hV : (interior V).Nonempty
⊢ index ((fun h => g * h) '' K) V = index K V
state_after: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
g : G
V : Set G
hV : (interior V).Nonempty
⊢ index K V ≤ index ((fun h => g * h) '' K) V
tactic: refine le_antisymm (mul_left_index_le hK hV g) ?_
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
g : G
V : Set G
hV : (interior V).Nonempty
⊢ index K V ≤ index ((fun h => g * h) '' K) V
state_after: case h.e'_3.h.e'_3
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
g : G
V : Set G
hV : (interior V).Nonempty
⊢ K = (fun h => g⁻¹ * h) '' ((fun b => g * b) '' K)
tactic: convert mul_left_index_le (hK.image <| continuous_mul_left g) hV g⁻¹
state_before: case h.e'_3.h.e'_3
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
g : G
V : Set G
hV : (interior V).Nonempty
⊢ K = (fun h => g⁻¹ * h) '' ((fun b => g * b) '' K)
state_after: case h.e'_3.h.e'_3
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
g : G
V : Set G
hV : (interior V).Nonempty
⊢ K = (fun x => g⁻¹ * (g * x)) '' K
tactic: rw [image_image]
state_before: case h.e'_3.h.e'_3
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
g : G
V : Set G
hV : (interior V).Nonempty
⊢ K = (fun x => g⁻¹ * (g * x)) '' K
state_after: case h.e'_3.h.e'_3
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
g : G
V : Set G
hV : (interior V).Nonempty
⊢ (fun x => g⁻¹ * (g * x)) '' K = K
tactic: symm
state_before: case h.e'_3.h.e'_3
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
g : G
V : Set G
hV : (interior V).Nonempty
⊢ (fun x => g⁻¹ * (g * x)) '' K = K
state_after: case h.e'_2.h.e'_3.h
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
g : G
V : Set G
hV : (interior V).Nonempty
h : G
⊢ g⁻¹ * (g * h) = h
tactic: convert image_id' _ with h
state_before: case h.e'_2.h.e'_3.h
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
g : G
V : Set G
hV : (interior V).Nonempty
h : G
⊢ g⁻¹ * (g * h) = h
state_after: no goals
tactic: apply inv_mul_cancel_left
Theorem: BoxIntegral.Prepartition.iUnion_filter_not
File: Mathlib/Analysis/BoxIntegral/Partition/Basic.lean

Proof steps:
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π✝ π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
π : Prepartition I
p : Box ι → Prop
⊢ (π.filter fun J => ¬p J).iUnion = π.iUnion \ (π.filter p).iUnion
state_after: ι : Type u_1
I J J₁ J₂ : Box ι
π✝ π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
π : Prepartition I
p : Box ι → Prop
⊢ ⋃ J ∈ π.filter fun J => ¬p J, ↑J = (⋃ J ∈ π, ↑J) \ ⋃ J ∈ π.filter p, ↑J
tactic: simp only [Prepartition.iUnion]
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π✝ π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
π : Prepartition I
p : Box ι → Prop
⊢ ⋃ J ∈ π.filter fun J => ¬p J, ↑J = (⋃ J ∈ π, ↑J) \ ⋃ J ∈ π.filter p, ↑J
state_after: case h.e'_2.h.e'_3.h.pq.a.a
ι : Type u_1
I J J₁ J₂ : Box ι
π✝ π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
π : Prepartition I
p : Box ι → Prop
x✝ : Box ι
⊢ (x✝ ∈ π.filter fun J => ¬p J) ↔ x✝ ∈ ↑π.boxes \ ↑(π.filter p).boxes

ι : Type u_1
I J J₁ J₂ : Box ι
π✝ π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
π : Prepartition I
p : Box ι → Prop
⊢ (↑π.boxes ∪ ↑(π.filter p).boxes).PairwiseDisjoint Box.toSet
tactic: convert (@Set.biUnion_diff_biUnion_eq (ι → ℝ) (Box ι) π.boxes (π.filter p).boxes (↑) _).symm
Theorem: Set.preimage_coe_coe_diagonal
File: Mathlib/Data/Set/Prod.lean

Proof steps:
state_before: α : Type u_1
s✝ t s : Set α
⊢ (Prod.map (fun x => ↑x) fun x => ↑x) ⁻¹' diagonal α = diagonal ↑s
state_after: case h.mk.mk.mk
α : Type u_1
s✝ t s : Set α
x : α
hx : x ∈ s
y : α
hy : y ∈ s
⊢ (⟨x, hx⟩, ⟨y, hy⟩) ∈ (Prod.map (fun x => ↑x) fun x => ↑x) ⁻¹' diagonal α ↔ (⟨x, hx⟩, ⟨y, hy⟩) ∈ diagonal ↑s
tactic: ext ⟨⟨x, hx⟩, ⟨y, hy⟩⟩
state_before: case h.mk.mk.mk
α : Type u_1
s✝ t s : Set α
x : α
hx : x ∈ s
y : α
hy : y ∈ s
⊢ (⟨x, hx⟩, ⟨y, hy⟩) ∈ (Prod.map (fun x => ↑x) fun x => ↑x) ⁻¹' diagonal α ↔ (⟨x, hx⟩, ⟨y, hy⟩) ∈ diagonal ↑s
state_after: no goals
tactic: simp [Set.diagonal]
Theorem: MeasureTheory.Lp.coeFn_negPart_eq_max
File: Mathlib/MeasureTheory/Function/LpSpace.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
g : E → F
c : ℝ≥0
f : ↥(Lp ℝ p μ)
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(negPart f) a = max (-↑↑f a) 0
state_after: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
g : E → F
c : ℝ≥0
f : ↥(Lp ℝ p μ)
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(posPart (-f)) a = max (-↑↑f a) 0
tactic: rw [negPart]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
g : E → F
c : ℝ≥0
f : ↥(Lp ℝ p μ)
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(posPart (-f)) a = max (-↑↑f a) 0
state_after: case h
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
g : E → F
c : ℝ≥0
f : ↥(Lp ℝ p μ)
a✝ : α
h₁ : ↑↑(posPart (-f)) a✝ = max (↑↑(-f) a✝) 0
h₂ : ↑↑(-f) a✝ = (-↑↑f) a✝
⊢ ↑↑(posPart (-f)) a✝ = max (-↑↑f a✝) 0
tactic: filter_upwards [coeFn_posPart (-f), coeFn_neg f] with _ h₁ h₂
state_before: case h
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
g : E → F
c : ℝ≥0
f : ↥(Lp ℝ p μ)
a✝ : α
h₁ : ↑↑(posPart (-f)) a✝ = max (↑↑(-f) a✝) 0
h₂ : ↑↑(-f) a✝ = (-↑↑f) a✝
⊢ ↑↑(posPart (-f)) a✝ = max (-↑↑f a✝) 0
state_after: no goals
tactic: rw [h₁, h₂, Pi.neg_apply]
Theorem: closedEmbedding_subtype_val
File: Mathlib/Topology/Constructions.lean

Proof steps:
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
p : X → Prop
h : IsClosed {a | p a}
⊢ IsClosed (range Subtype.val)
state_after: no goals
tactic: rwa [Subtype.range_coe_subtype]
Theorem: AlgebraicGeometry.LocallyRingedSpace.evaluation_eq_zero_iff_not_mem_basicOpen
File: Mathlib/Geometry/RingedSpace/LocallyRingedSpace/ResidueField.lean

Proof steps:
state_before: X : LocallyRingedSpace
U : Opens ↑X.toTopCat
x : ↥U
f : ↑(X.presheaf.obj (op U))
⊢ (X.evaluation x) f = 0 ↔ ↑x ∉ X.toRingedSpace.basicOpen f
state_after: X : LocallyRingedSpace
U : Opens ↑X.toTopCat
x : ↥U
f : ↑(X.presheaf.obj (op U))
⊢ ¬(X.evaluation x) f = 0 ↔ IsUnit ((X.toRingedSpace.presheaf.germ x) f)
tactic: rw [X.toRingedSpace.mem_basicOpen f x, ← not_iff_not, not_not]
state_before: X : LocallyRingedSpace
U : Opens ↑X.toTopCat
x : ↥U
f : ↑(X.presheaf.obj (op U))
⊢ ¬(X.evaluation x) f = 0 ↔ IsUnit ((X.toRingedSpace.presheaf.germ x) f)
state_after: no goals
tactic: exact (LocalRing.residue_ne_zero_iff_isUnit _)
Theorem: WittVector.frobenius_verschiebung
File: Mathlib/RingTheory/WittVector/Identities.lean

Proof steps:
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
x : 𝕎 R
⊢ frobenius (verschiebung x) = x * ↑p
state_after: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
x : 𝕎 R
this : IsPoly p fun {R} [CommRing R] x => frobenius (verschiebung x)
⊢ frobenius (verschiebung x) = x * ↑p
tactic: have : IsPoly p fun {R} [CommRing R] x ↦ frobenius (verschiebung x) :=
    IsPoly.comp (hg := frobenius_isPoly p) (hf := verschiebung_isPoly)
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
x : 𝕎 R
this : IsPoly p fun {R} [CommRing R] x => frobenius (verschiebung x)
⊢ frobenius (verschiebung x) = x * ↑p
state_after: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
x : 𝕎 R
this✝ : IsPoly p fun {R} [CommRing R] x => frobenius (verschiebung x)
this : IsPoly p fun {R} [CommRing R] x => x * ↑p
⊢ frobenius (verschiebung x) = x * ↑p
tactic: have : IsPoly p fun {R} [CommRing R] x ↦ x * p := mulN_isPoly p p
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
x : 𝕎 R
this✝ : IsPoly p fun {R} [CommRing R] x => frobenius (verschiebung x)
this : IsPoly p fun {R} [CommRing R] x => x * ↑p
⊢ frobenius (verschiebung x) = x * ↑p
state_after: case refine_3
p : ℕ
hp : Fact (Nat.Prime p)
this✝ : IsPoly p fun {R} [CommRing R] x => frobenius (verschiebung x)
this : IsPoly p fun {R} [CommRing R] x => x * ↑p
R : Type u_1
R._inst : CommRing R
x : 𝕎 R
⊢ ∀ (n : ℕ), (ghostComponent n) (frobenius (verschiebung x)) = (ghostComponent n) (x * ↑p)
tactic: ghost_calc x
state_before: case refine_3
p : ℕ
hp : Fact (Nat.Prime p)
this✝ : IsPoly p fun {R} [CommRing R] x => frobenius (verschiebung x)
this : IsPoly p fun {R} [CommRing R] x => x * ↑p
R : Type u_1
R._inst : CommRing R
x : 𝕎 R
⊢ ∀ (n : ℕ), (ghostComponent n) (frobenius (verschiebung x)) = (ghostComponent n) (x * ↑p)
state_after: no goals
tactic: ghost_simp [mul_comm]
Theorem: _private.Mathlib.Analysis.NormedSpace.Multilinear.Basic.0.ContinuousMultilinearMap.uniformity_eq_seminorm
File: Mathlib/Analysis/NormedSpace/Multilinear/Basic.lean

Proof steps:
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → SeminormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : SeminormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : SeminormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
⊢ 𝓤 (ContinuousMultilinearMap 𝕜 E G) = ⨅ r, ⨅ (_ : r > 0), 𝓟 {f | ‖f.1 - f.2‖ < r}
state_after: case refine_1
𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → SeminormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : SeminormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : SeminormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
⊢ ∃ r, (ContinuousMultilinearMap.seminorm 𝕜 E G).closedBall 0 r ∈ 𝓝 0

case refine_2
𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → SeminormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : SeminormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : SeminormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
x✝¹ : Set ((i : ι) → E i) × ℝ
s : Set ((i : ι) → E i)
r : ℝ
x✝ : Bornology.IsVonNBounded 𝕜 (s, r).1 ∧ 0 < (s, r).2
hs : Bornology.IsVonNBounded 𝕜 (s, r).1
hr : 0 < (s, r).2
⊢ ∃ r_1 > 0, (ContinuousMultilinearMap.seminorm 𝕜 E G).ball 0 r_1 ⊆ {f | Set.MapsTo ⇑f (s, r).1 (closedBall 0 (s, r).2)}
tactic: refine (ContinuousMultilinearMap.seminorm 𝕜 E G).uniformity_eq_of_hasBasis
    (ContinuousMultilinearMap.hasBasis_nhds_zero_of_basis Metric.nhds_basis_closedBall)
    ?_ fun (s, r) ⟨hs, hr⟩ ↦ ?_
Theorem: Nat.coprime_of_fermatPsp
File: Mathlib/NumberTheory/FermatPsp.lean

Proof steps:
state_before: n b : ℕ
h : n.FermatPsp b
h₁ : 1 ≤ b
⊢ n.Coprime b
state_after: case intro.intro
n b : ℕ
h₁ : 1 ≤ b
hp : n.ProbablePrime b
left✝ : ¬Prime n
hn₂ : 1 < n
⊢ n.Coprime b
tactic: rcases h with ⟨hp, _, hn₂⟩
state_before: case intro.intro
n b : ℕ
h₁ : 1 ≤ b
hp : n.ProbablePrime b
left✝ : ¬Prime n
hn₂ : 1 < n
⊢ n.Coprime b
state_after: no goals
tactic: exact coprime_of_probablePrime hp (by omega) h₁
Theorem: Set.exists_subtype_range_iff
File: Mathlib/Data/Set/Image.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : ι → α
s t : Set α
p : ↑(range f) → Prop
x✝ : ∃ a, p a
a : α
i : ι
hi : f i = a
ha : p ⟨a, ⋯⟩
⊢ ∃ i, p ⟨f i, ⋯⟩
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : ι → α
s t : Set α
p : ↑(range f) → Prop
x✝ : ∃ a, p a
i : ι
ha : p ⟨f i, ⋯⟩
⊢ ∃ i, p ⟨f i, ⋯⟩
tactic: subst a
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : ι → α
s t : Set α
p : ↑(range f) → Prop
x✝ : ∃ a, p a
i : ι
ha : p ⟨f i, ⋯⟩
⊢ ∃ i, p ⟨f i, ⋯⟩
state_after: no goals
tactic: exact ⟨i, ha⟩
Theorem: intervalIntegral.integral_smul
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

Proof steps:
state_before: ι : Type u_1
𝕜✝ : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedSpace ℝ E
a b : ℝ
f✝ g : ℝ → E
μ : Measure ℝ
𝕜 : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedSpace 𝕜 E
inst✝ : SMulCommClass ℝ 𝕜 E
r : 𝕜
f : ℝ → E
⊢ ∫ (x : ℝ) in a..b, r • f x ∂μ = r • ∫ (x : ℝ) in a..b, f x ∂μ
state_after: no goals
tactic: simp only [intervalIntegral, integral_smul, smul_sub]
Theorem: ProbabilityTheory.condCount_singleton
File: Mathlib/Probability/CondCount.lean

Proof steps:
state_before: Ω : Type u_1
inst✝² : MeasurableSpace Ω
inst✝¹ : MeasurableSingletonClass Ω
ω : Ω
t : Set Ω
inst✝ : Decidable (ω ∈ t)
⊢ (condCount {ω}) t = if ω ∈ t then 1 else 0
state_after: Ω : Type u_1
inst✝² : MeasurableSpace Ω
inst✝¹ : MeasurableSingletonClass Ω
ω : Ω
t : Set Ω
inst✝ : Decidable (ω ∈ t)
⊢ Measure.count ({ω} ∩ t) = if ω ∈ t then 1 else 0
tactic: rw [condCount, cond_apply _ (measurableSet_singleton ω), Measure.count_singleton, inv_one,
    one_mul]
state_before: Ω : Type u_1
inst✝² : MeasurableSpace Ω
inst✝¹ : MeasurableSingletonClass Ω
ω : Ω
t : Set Ω
inst✝ : Decidable (ω ∈ t)
⊢ Measure.count ({ω} ∩ t) = if ω ∈ t then 1 else 0
state_after: case pos
Ω : Type u_1
inst✝² : MeasurableSpace Ω
inst✝¹ : MeasurableSingletonClass Ω
ω : Ω
t : Set Ω
inst✝ : Decidable (ω ∈ t)
h✝ : ω ∈ t
⊢ Measure.count ({ω} ∩ t) = 1

case neg
Ω : Type u_1
inst✝² : MeasurableSpace Ω
inst✝¹ : MeasurableSingletonClass Ω
ω : Ω
t : Set Ω
inst✝ : Decidable (ω ∈ t)
h✝ : ω ∉ t
⊢ Measure.count ({ω} ∩ t) = 0
tactic: split_ifs
Theorem: tendsto_ceil_left_pure
File: Mathlib/Topology/Algebra/Order/Floor.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : FloorRing α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
n : ℤ
⊢ Tendsto ceil (𝓝[≤] ↑n) (pure n)
state_after: no goals
tactic: simpa only [ceil_intCast] using tendsto_ceil_left_pure_ceil (n : α)