ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Finsupp.single_multiset_sum
File: Mathlib/Algebra/BigOperators/Finsupp.lean

Proof steps:
state_before: α : Type u_1
ι : Type u_2
γ : Type u_3
A : Type u_4
B : Type u_5
C : Type u_6
inst✝³ : AddCommMonoid A
inst✝² : AddCommMonoid B
inst✝¹ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s✝¹ : Finset α
f : α → ι →₀ A
i : ι
g : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type u_7
M : Type u_8
M' : Type u_9
N : Type u_10
P : Type u_11
G : Type u_12
H : Type u_13
R : Type u_14
S : Type u_15
inst✝ : AddCommMonoid M
s✝ : Multiset M
a✝ : α
a : M
s : Multiset M
ih : single a✝ s.sum = (Multiset.map (single a✝) s).sum
⊢ single a✝ (a ::ₘ s).sum = (Multiset.map (single a✝) (a ::ₘ s)).sum
state_after: no goals
tactic: rw [Multiset.sum_cons, single_add, ih, Multiset.map_cons, Multiset.sum_cons]
Theorem: PiToModule.fromEnd_injective
File: Mathlib/LinearAlgebra/Matrix/Charpoly/LinearMap.lean

Proof steps:
state_before: ι : Type u_1
inst✝³ : Fintype ι
M : Type u_2
inst✝² : AddCommGroup M
R : Type u_3
inst✝¹ : CommRing R
inst✝ : Module R M
I : Ideal R
b : ι → M
hb✝ hb : Submodule.span R (Set.range b) = ⊤
⊢ Function.Injective ⇑(fromEnd R b)
state_after: ι : Type u_1
inst✝³ : Fintype ι
M : Type u_2
inst✝² : AddCommGroup M
R : Type u_3
inst✝¹ : CommRing R
inst✝ : Module R M
I : Ideal R
b : ι → M
hb✝ hb : Submodule.span R (Set.range b) = ⊤
x y : Module.End R M
e : (fromEnd R b) x = (fromEnd R b) y
⊢ x = y
tactic: intro x y e
state_before: ι : Type u_1
inst✝³ : Fintype ι
M : Type u_2
inst✝² : AddCommGroup M
R : Type u_3
inst✝¹ : CommRing R
inst✝ : Module R M
I : Ideal R
b : ι → M
hb✝ hb : Submodule.span R (Set.range b) = ⊤
x y : Module.End R M
e : (fromEnd R b) x = (fromEnd R b) y
⊢ x = y
state_after: case h
ι : Type u_1
inst✝³ : Fintype ι
M : Type u_2
inst✝² : AddCommGroup M
R : Type u_3
inst✝¹ : CommRing R
inst✝ : Module R M
I : Ideal R
b : ι → M
hb✝ hb : Submodule.span R (Set.range b) = ⊤
x y : Module.End R M
e : (fromEnd R b) x = (fromEnd R b) y
m : M
⊢ x m = y m
tactic: ext m
state_before: case h
ι : Type u_1
inst✝³ : Fintype ι
M : Type u_2
inst✝² : AddCommGroup M
R : Type u_3
inst✝¹ : CommRing R
inst✝ : Module R M
I : Ideal R
b : ι → M
hb✝ hb : Submodule.span R (Set.range b) = ⊤
x y : Module.End R M
e : (fromEnd R b) x = (fromEnd R b) y
m : M
⊢ x m = y m
state_after: case h.intro
ι : Type u_1
inst✝³ : Fintype ι
M : Type u_2
inst✝² : AddCommGroup M
R : Type u_3
inst✝¹ : CommRing R
inst✝ : Module R M
I : Ideal R
b : ι → M
hb✝ hb : Submodule.span R (Set.range b) = ⊤
x y : Module.End R M
e : (fromEnd R b) x = (fromEnd R b) y
m : ι → R
⊢ x (((Fintype.total R R) b) m) = y (((Fintype.total R R) b) m)
tactic: obtain ⟨m, rfl⟩ : m ∈ LinearMap.range (Fintype.total R R b) := by
    rw [(Fintype.range_total R b).trans hb]
    exact Submodule.mem_top
state_before: case h.intro
ι : Type u_1
inst✝³ : Fintype ι
M : Type u_2
inst✝² : AddCommGroup M
R : Type u_3
inst✝¹ : CommRing R
inst✝ : Module R M
I : Ideal R
b : ι → M
hb✝ hb : Submodule.span R (Set.range b) = ⊤
x y : Module.End R M
e : (fromEnd R b) x = (fromEnd R b) y
m : ι → R
⊢ x (((Fintype.total R R) b) m) = y (((Fintype.total R R) b) m)
state_after: no goals
tactic: exact (LinearMap.congr_fun e m : _)
Theorem: IsPrimitiveRoot.subOneIntegralPowerBasis'_gen
File: Mathlib/NumberTheory/Cyclotomic/Rat.lean

Proof steps:
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
hcycl : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
⊢ IsCyclotomicExtension {p ^ 1} ℚ K
state_after: case h.e'_1.h.e'_4
p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
hcycl : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
⊢ p ^ 1 = p
tactic: convert hcycl
state_before: case h.e'_1.h.e'_4
p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
hcycl : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
⊢ p ^ 1 = p
state_after: no goals
tactic: rw [pow_one]
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
hcycl : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
⊢ IsPrimitiveRoot ζ ↑(p ^ 1)
state_after: no goals
tactic: rwa [pow_one]
Theorem: Metric.exists_dist_lt_of_hausdorffDist_lt'
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
r : ℝ
h : y ∈ t
H : hausdorffDist s t < r
fin : hausdorffEdist s t ≠ ⊤
⊢ ∃ x ∈ s, dist x y < r
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
r : ℝ
h : y ∈ t
H : hausdorffDist t s < r
fin : hausdorffEdist s t ≠ ⊤
⊢ ∃ x ∈ s, dist x y < r
tactic: rw [hausdorffDist_comm] at H
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
r : ℝ
h : y ∈ t
H : hausdorffDist t s < r
fin : hausdorffEdist s t ≠ ⊤
⊢ ∃ x ∈ s, dist x y < r
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
r : ℝ
h : y ∈ t
H : hausdorffDist t s < r
fin : hausdorffEdist t s ≠ ⊤
⊢ ∃ x ∈ s, dist x y < r
tactic: rw [hausdorffEdist_comm] at fin
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
r : ℝ
h : y ∈ t
H : hausdorffDist t s < r
fin : hausdorffEdist t s ≠ ⊤
⊢ ∃ x ∈ s, dist x y < r
state_after: no goals
tactic: simpa [dist_comm] using exists_dist_lt_of_hausdorffDist_lt h H fin
Theorem: IsLocalizedModule.mk'_neg
File: Mathlib/Algebra/Module/LocalizedModule.lean

Proof steps:
state_before: R : Type u_1
inst✝¹⁷ : CommSemiring R
S : Submonoid R
M✝ : Type u_2
M'✝ : Type u_3
M'' : Type u_4
inst✝¹⁶ : AddCommMonoid M✝
inst✝¹⁵ : AddCommMonoid M'✝
inst✝¹⁴ : AddCommMonoid M''
A : Type u_5
inst✝¹³ : CommSemiring A
inst✝¹² : Algebra R A
inst✝¹¹ : Module A M'✝
inst✝¹⁰ : IsLocalization S A
inst✝⁹ : Module R M✝
inst✝⁸ : Module R M'✝
inst✝⁷ : Module R M''
inst✝⁶ : IsScalarTower R A M'✝
f✝ : M✝ →ₗ[R] M'✝
g : M✝ →ₗ[R] M''
inst✝⁵ : IsLocalizedModule S f✝
M : Type u_6
M' : Type u_7
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup M'
inst✝² : Module R M
inst✝¹ : Module R M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
m : M
s : ↥S
⊢ mk' f (-m) s = -mk' f m s
state_after: R : Type u_1
inst✝¹⁷ : CommSemiring R
S : Submonoid R
M✝ : Type u_2
M'✝ : Type u_3
M'' : Type u_4
inst✝¹⁶ : AddCommMonoid M✝
inst✝¹⁵ : AddCommMonoid M'✝
inst✝¹⁴ : AddCommMonoid M''
A : Type u_5
inst✝¹³ : CommSemiring A
inst✝¹² : Algebra R A
inst✝¹¹ : Module A M'✝
inst✝¹⁰ : IsLocalization S A
inst✝⁹ : Module R M✝
inst✝⁸ : Module R M'✝
inst✝⁷ : Module R M''
inst✝⁶ : IsScalarTower R A M'✝
f✝ : M✝ →ₗ[R] M'✝
g : M✝ →ₗ[R] M''
inst✝⁵ : IsLocalizedModule S f✝
M : Type u_6
M' : Type u_7
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup M'
inst✝² : Module R M
inst✝¹ : Module R M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
m : M
s : ↥S
⊢ (fromLocalizedModule S f) (LocalizedModule.mk (-m) s) = -(fromLocalizedModule S f) (LocalizedModule.mk m s)
tactic: delta mk'
state_before: R : Type u_1
inst✝¹⁷ : CommSemiring R
S : Submonoid R
M✝ : Type u_2
M'✝ : Type u_3
M'' : Type u_4
inst✝¹⁶ : AddCommMonoid M✝
inst✝¹⁵ : AddCommMonoid M'✝
inst✝¹⁴ : AddCommMonoid M''
A : Type u_5
inst✝¹³ : CommSemiring A
inst✝¹² : Algebra R A
inst✝¹¹ : Module A M'✝
inst✝¹⁰ : IsLocalization S A
inst✝⁹ : Module R M✝
inst✝⁸ : Module R M'✝
inst✝⁷ : Module R M''
inst✝⁶ : IsScalarTower R A M'✝
f✝ : M✝ →ₗ[R] M'✝
g : M✝ →ₗ[R] M''
inst✝⁵ : IsLocalizedModule S f✝
M : Type u_6
M' : Type u_7
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup M'
inst✝² : Module R M
inst✝¹ : Module R M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
m : M
s : ↥S
⊢ (fromLocalizedModule S f) (LocalizedModule.mk (-m) s) = -(fromLocalizedModule S f) (LocalizedModule.mk m s)
state_after: no goals
tactic: rw [LocalizedModule.mk_neg, map_neg]
Theorem: Set.range_subset_singleton
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 α
f : ι → α
x : α
⊢ range f ⊆ {x} ↔ f = const ι x
state_after: no goals
tactic: simp [range_subset_iff, funext_iff, mem_singleton]
Theorem: Uniform.continuousWithinAt_iff'_right
File: Mathlib/Topology/UniformSpace/Basic.lean

Proof steps:
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝¹ : UniformSpace α
inst✝ : TopologicalSpace β
f : β → α
b : β
s : Set β
⊢ ContinuousWithinAt f s b ↔ Tendsto (fun x => (f b, f x)) (𝓝[s] b) (𝓤 α)
state_after: no goals
tactic: rw [ContinuousWithinAt, tendsto_nhds_right]
Theorem: Function.minimalPeriod_prod_map
File: Mathlib/Dynamics/PeriodicPts.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
f✝ : α → α
g✝ : β → β
x✝ : α × β
a : α
b : β
m n : ℕ
f : α → α
g : β → β
x : α × β
⊢ ∀ (c : ℕ), minimalPeriod (Prod.map f g) x ∣ c ↔ (minimalPeriod f x.1).lcm (minimalPeriod g x.2) ∣ c
state_after: case mk
α : Type u_1
β : Type u_2
f✝ : α → α
g✝ : β → β
x : α × β
a : α
b : β
m n : ℕ
f : α → α
g : β → β
fst✝ : α
snd✝ : β
⊢ ∀ (c : ℕ),
    minimalPeriod (Prod.map f g) (fst✝, snd✝) ∣ c ↔
      (minimalPeriod f (fst✝, snd✝).1).lcm (minimalPeriod g (fst✝, snd✝).2) ∣ c
tactic: cases x
state_before: case mk
α : Type u_1
β : Type u_2
f✝ : α → α
g✝ : β → β
x : α × β
a : α
b : β
m n : ℕ
f : α → α
g : β → β
fst✝ : α
snd✝ : β
⊢ ∀ (c : ℕ),
    minimalPeriod (Prod.map f g) (fst✝, snd✝) ∣ c ↔
      (minimalPeriod f (fst✝, snd✝).1).lcm (minimalPeriod g (fst✝, snd✝).2) ∣ c
state_after: no goals
tactic: simp [← isPeriodicPt_iff_minimalPeriod_dvd, Nat.lcm_dvd_iff]
Theorem: CategoryTheory.Limits.PullbackCone.unop_inl
File: Mathlib/CategoryTheory/Limits/Opposites.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
X✝ : Type v₂
X Y Z : Cᵒᵖ
f : X ⟶ Z
g : Y ⟶ Z
c : PullbackCone f g
⊢ c.unop.inl = c.fst.unop
state_after: no goals
tactic: aesop_cat
Theorem: CategoryTheory.ProjectiveResolution.isoLeftDerivedObj_inv_naturality
File: Mathlib/CategoryTheory/Abelian/LeftDerived.lean

Proof steps:
state_before: C : Type u
inst✝⁵ : Category.{v, u} C
D : Type u_1
inst✝⁴ : Category.{u_2, u_1} D
inst✝³ : Abelian C
inst✝² : HasProjectiveResolutions C
inst✝¹ : Abelian D
X Y : C
f : X ⟶ Y
P : ProjectiveResolution X
Q : ProjectiveResolution Y
φ : P.complex ⟶ Q.complex
comm : φ.f 0 ≫ Q.π.f 0 = P.π.f 0 ≫ f
F : C ⥤ D
inst✝ : F.Additive
n : ℕ
⊢ (P.isoLeftDerivedObj F n).inv ≫ (F.leftDerived n).map f =
    (F.mapHomologicalComplex (ComplexShape.down ℕ) ⋙ HomologicalComplex.homologyFunctor D (ComplexShape.down ℕ) n).map
        φ ≫
      (Q.isoLeftDerivedObj F n).inv
state_after: no goals
tactic: rw [← cancel_mono (Q.isoLeftDerivedObj F n).hom, assoc, assoc,
    ProjectiveResolution.isoLeftDerivedObj_hom_naturality f P Q φ comm F n,
    Iso.inv_hom_id_assoc, Iso.inv_hom_id, comp_id]
Theorem: IsClosed.isGδ
File: Mathlib/Topology/GDelta.lean

Proof steps:
state_before: X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : UniformSpace X
inst✝ : (𝓤 X).IsCountablyGenerated
s : Set X
hs : IsClosed s
⊢ IsGδ s
state_after: case intro.intro.mk
X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : UniformSpace X
inst✝ : (𝓤 X).IsCountablyGenerated
s : Set X
hs : IsClosed s
U : ℕ → Set (X × X)
hUo : ∀ (i : ℕ), U i ∈ 𝓤 X ∧ IsOpen (U i)
hU : (𝓤 X).HasBasis (fun x => True) fun i => id (U i)
⊢ IsGδ s
tactic: rcases (@uniformity_hasBasis_open X _).exists_antitone_subbasis with ⟨U, hUo, hU, -⟩
state_before: case intro.intro.mk
X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : UniformSpace X
inst✝ : (𝓤 X).IsCountablyGenerated
s : Set X
hs : IsClosed s
U : ℕ → Set (X × X)
hUo : ∀ (i : ℕ), U i ∈ 𝓤 X ∧ IsOpen (U i)
hU : (𝓤 X).HasBasis (fun x => True) fun i => id (U i)
⊢ IsGδ s
state_after: case intro.intro.mk
X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : UniformSpace X
inst✝ : (𝓤 X).IsCountablyGenerated
s : Set X
hs : IsClosed s
U : ℕ → Set (X × X)
hUo : ∀ (i : ℕ), U i ∈ 𝓤 X ∧ IsOpen (U i)
hU : (𝓤 X).HasBasis (fun x => True) fun i => id (U i)
⊢ IsGδ (⋂ i, ⋂ (_ : True), ⋃ x ∈ s, UniformSpace.ball x (id (U i)))
tactic: rw [← hs.closure_eq, ← hU.biInter_biUnion_ball]
state_before: case intro.intro.mk
X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : UniformSpace X
inst✝ : (𝓤 X).IsCountablyGenerated
s : Set X
hs : IsClosed s
U : ℕ → Set (X × X)
hUo : ∀ (i : ℕ), U i ∈ 𝓤 X ∧ IsOpen (U i)
hU : (𝓤 X).HasBasis (fun x => True) fun i => id (U i)
⊢ IsGδ (⋂ i, ⋂ (_ : True), ⋃ x ∈ s, UniformSpace.ball x (id (U i)))
state_after: case intro.intro.mk
X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : UniformSpace X
inst✝ : (𝓤 X).IsCountablyGenerated
s : Set X
hs : IsClosed s
U : ℕ → Set (X × X)
hUo : ∀ (i : ℕ), U i ∈ 𝓤 X ∧ IsOpen (U i)
hU : (𝓤 X).HasBasis (fun x => True) fun i => id (U i)
n : ℕ
x✝ : n ∈ fun i => True
⊢ IsOpen (⋃ x ∈ s, UniformSpace.ball x (id (U n)))
tactic: refine .biInter (to_countable _) fun n _ => IsOpen.isGδ ?_
state_before: case intro.intro.mk
X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : UniformSpace X
inst✝ : (𝓤 X).IsCountablyGenerated
s : Set X
hs : IsClosed s
U : ℕ → Set (X × X)
hUo : ∀ (i : ℕ), U i ∈ 𝓤 X ∧ IsOpen (U i)
hU : (𝓤 X).HasBasis (fun x => True) fun i => id (U i)
n : ℕ
x✝ : n ∈ fun i => True
⊢ IsOpen (⋃ x ∈ s, UniformSpace.ball x (id (U n)))
state_after: no goals
tactic: exact isOpen_biUnion fun x _ => UniformSpace.isOpen_ball _ (hUo _).2
Theorem: ZeroAtInftyContinuousMap.tendsto_iff_tendstoUniformly
File: Mathlib/Topology/ContinuousFunction/ZeroAtInfty.lean

Proof steps:
state_before: F✝ : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : PseudoMetricSpace β
inst✝² : Zero β
inst✝¹ : FunLike F✝ α β
inst✝ : ZeroAtInftyContinuousMapClass F✝ α β
C : ℝ
f✝ g : α →C₀ β
ι : Type u_2
F : ι → α →C₀ β
f : α →C₀ β
l : Filter ι
⊢ Tendsto F l (𝓝 f) ↔ TendstoUniformly (fun i => ⇑(F i)) (⇑f) l
state_after: no goals
tactic: simpa only [Metric.tendsto_nhds] using
    @BoundedContinuousFunction.tendsto_iff_tendstoUniformly _ _ _ _ _ (fun i => (F i).toBCF)
      f.toBCF l
Theorem: List.sym_one_eq
File: Mathlib/Data/List/Sym.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
xs ys : List α
n : ℕ
⊢ List.sym 1 xs = map (fun x => x ::ₛ Sym.nil) xs
state_after: no goals
tactic: induction xs with
  | nil => simp only [List.sym, Nat.succ_eq_add_one, Nat.reduceAdd, map_nil]
  | cons x xs ih =>
    rw [map_cons, ← ih, List.sym, List.sym, map_singleton, singleton_append]
Theorem: Filter.HasBasis.uniformEquicontinuous_iff_right
File: Mathlib/Topology/UniformSpace/Equicontinuity.lean

Proof steps:
state_before: ι : Type u_1
κ : Type u_2
X : Type u_3
X' : Type u_4
Y : Type u_5
Z : Type u_6
α : Type u_7
α' : Type u_8
β : Type u_9
β' : Type u_10
γ : Type u_11
𝓕 : Type u_12
tX : TopologicalSpace X
tY : TopologicalSpace Y
tZ : TopologicalSpace Z
uα : UniformSpace α
uβ : UniformSpace β
uγ : UniformSpace γ
p : κ → Prop
s : κ → Set (α × α)
F : ι → β → α
hα : (𝓤 α).HasBasis p s
⊢ UniformEquicontinuous F ↔ ∀ (k : κ), p k → ∀ᶠ (xy : β × β) in 𝓤 β, ∀ (i : ι), (F i xy.1, F i xy.2) ∈ s k
state_after: ι : Type u_1
κ : Type u_2
X : Type u_3
X' : Type u_4
Y : Type u_5
Z : Type u_6
α : Type u_7
α' : Type u_8
β : Type u_9
β' : Type u_10
γ : Type u_11
𝓕 : Type u_12
tX : TopologicalSpace X
tY : TopologicalSpace Y
tZ : TopologicalSpace Z
uα : UniformSpace α
uβ : UniformSpace β
uγ : UniformSpace γ
p : κ → Prop
s : κ → Set (α × α)
F : ι → β → α
hα : (𝓤 α).HasBasis p s
⊢ (∀ (i : κ),
      p i →
        ∀ᶠ (x : β × β) in 𝓤 β,
          ((⇑UniformFun.ofFun ∘ swap F) x.1, (⇑UniformFun.ofFun ∘ swap F) x.2) ∈ (UniformFun.gen ι α ∘ s) i) ↔
    ∀ (k : κ), p k → ∀ᶠ (xy : β × β) in 𝓤 β, ∀ (i : ι), (F i xy.1, F i xy.2) ∈ s k
tactic: rw [uniformEquicontinuous_iff_uniformContinuous, UniformContinuous,
    (UniformFun.hasBasis_uniformity_of_basis ι α hα).tendsto_right_iff]
state_before: ι : Type u_1
κ : Type u_2
X : Type u_3
X' : Type u_4
Y : Type u_5
Z : Type u_6
α : Type u_7
α' : Type u_8
β : Type u_9
β' : Type u_10
γ : Type u_11
𝓕 : Type u_12
tX : TopologicalSpace X
tY : TopologicalSpace Y
tZ : TopologicalSpace Z
uα : UniformSpace α
uβ : UniformSpace β
uγ : UniformSpace γ
p : κ → Prop
s : κ → Set (α × α)
F : ι → β → α
hα : (𝓤 α).HasBasis p s
⊢ (∀ (i : κ),
      p i →
        ∀ᶠ (x : β × β) in 𝓤 β,
          ((⇑UniformFun.ofFun ∘ swap F) x.1, (⇑UniformFun.ofFun ∘ swap F) x.2) ∈ (UniformFun.gen ι α ∘ s) i) ↔
    ∀ (k : κ), p k → ∀ᶠ (xy : β × β) in 𝓤 β, ∀ (i : ι), (F i xy.1, F i xy.2) ∈ s k
state_after: no goals
tactic: rfl
Theorem: Function.minimalPeriod_eq_zero_of_nmem_periodicPts
File: Mathlib/Dynamics/PeriodicPts.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
f fa : α → α
fb : β → β
x y : α
m n : ℕ
hx : x ∉ periodicPts f
⊢ minimalPeriod f x = 0
state_after: no goals
tactic: simp only [minimalPeriod, dif_neg hx]
Theorem: Eq.subset
File: Mathlib/Data/Set/Basic.lean

Proof steps:
state_before: α : Type u_1
s t : Set α
h₁ : s = t
x✝ : α
h₂ : x✝ ∈ s
⊢ x✝ ∈ t
state_after: α : Type u_1
s t : Set α
h₁ : s = t
x✝ : α
h₂ : x✝ ∈ s
⊢ x✝ ∈ s
tactic: rw [← h₁]
state_before: α : Type u_1
s t : Set α
h₁ : s = t
x✝ : α
h₂ : x✝ ∈ s
⊢ x✝ ∈ s
state_after: no goals
tactic: exact h₂
Theorem: MeasureTheory.SimpleFunc.forall_mem_range
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : MeasurableSpace α
f : α →ₛ β
p : β → Prop
⊢ (∀ y ∈ f.range, p y) ↔ ∀ (x : α), p (↑f x)
state_after: no goals
tactic: simp only [mem_range, Set.forall_mem_range]
Theorem: Nat.binomial_succ_succ
File: Mathlib/Data/Nat/Choose/Multinomial.lean

Proof steps:
state_before: α : Type u_1
s : Finset α
f : α → ℕ
a b : α
n : ℕ
inst✝ : DecidableEq α
h : a ≠ b
⊢ multinomial {a, b} (Function.update (Function.update f a (f a).succ) b (f b).succ) =
    multinomial {a, b} (Function.update f a (f a).succ) + multinomial {a, b} (Function.update f b (f b).succ)
state_after: α : Type u_1
s : Finset α
f : α → ℕ
a b : α
n : ℕ
inst✝ : DecidableEq α
h : a ≠ b
⊢ ((f a).succ + (f b).succ).choose (f a).succ =
    ((f a).succ + if b = a then (f a).succ else f b).choose (f a).succ + (f a + (f b).succ).choose (f a)
tactic: simp only [binomial_eq_choose, Function.update_apply,
    h, Ne, ite_true, ite_false, not_false_eq_true]
state_before: α : Type u_1
s : Finset α
f : α → ℕ
a b : α
n : ℕ
inst✝ : DecidableEq α
h : a ≠ b
⊢ ((f a).succ + (f b).succ).choose (f a).succ =
    ((f a).succ + if b = a then (f a).succ else f b).choose (f a).succ + (f a + (f b).succ).choose (f a)
state_after: α : Type u_1
s : Finset α
f : α → ℕ
a b : α
n : ℕ
inst✝ : DecidableEq α
h : a ≠ b
⊢ ((f a).succ + (f b).succ).choose (f a).succ = ((f a).succ + f b).choose (f a).succ + (f a + (f b).succ).choose (f a)
tactic: rw [if_neg h.symm]
state_before: α : Type u_1
s : Finset α
f : α → ℕ
a b : α
n : ℕ
inst✝ : DecidableEq α
h : a ≠ b
⊢ ((f a).succ + (f b).succ).choose (f a).succ = ((f a).succ + f b).choose (f a).succ + (f a + (f b).succ).choose (f a)
state_after: α : Type u_1
s : Finset α
f : α → ℕ
a b : α
n : ℕ
inst✝ : DecidableEq α
h : a ≠ b
⊢ (f a + (f b).succ).choose (f a) + (f a + (f b).succ).choose (f a).succ =
    (f a + (f b).succ).choose (f a).succ + (f a + (f b).succ).choose (f a)
tactic: rw [add_succ, choose_succ_succ, succ_add_eq_add_succ]
state_before: α : Type u_1
s : Finset α
f : α → ℕ
a b : α
n : ℕ
inst✝ : DecidableEq α
h : a ≠ b
⊢ (f a + (f b).succ).choose (f a) + (f a + (f b).succ).choose (f a).succ =
    (f a + (f b).succ).choose (f a).succ + (f a + (f b).succ).choose (f a)
state_after: no goals
tactic: ring
Theorem: Set.range_const_eq_diagonal
File: Mathlib/Data/Set/Prod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
hβ : Nonempty β
⊢ range (const α) = {f | ∀ (x y : α), f x = f y}
state_after: α : Type u_1
β : Type u_2
hβ : Nonempty β
f : α → β
hf : f ∈ {f | ∀ (x y : α), f x = f y}
⊢ ∃ a, const α a = f
tactic: refine (range_eq_iff _ _).mpr ⟨fun _ _ _ ↦ rfl, fun f hf ↦ ?_⟩
state_before: α : Type u_1
β : Type u_2
hβ : Nonempty β
f : α → β
hf : f ∈ {f | ∀ (x y : α), f x = f y}
⊢ ∃ a, const α a = f
state_after: case inl
α : Type u_1
β : Type u_2
hβ : Nonempty β
f : α → β
hf : f ∈ {f | ∀ (x y : α), f x = f y}
h : IsEmpty α
⊢ ∃ a, const α a = f

case inr.intro
α : Type u_1
β : Type u_2
hβ : Nonempty β
f : α → β
hf : f ∈ {f | ∀ (x y : α), f x = f y}
a : α
⊢ ∃ a, const α a = f
tactic: rcases isEmpty_or_nonempty α with h|⟨⟨a⟩⟩
Theorem: Nat.eq_mul_of_div_eq_left
File: Mathlib/Data/Nat/Defs.lean

Proof steps:
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
H1 : b ∣ a
H2 : a / b = c
⊢ a = c * b
state_after: no goals
tactic: rw [Nat.mul_comm, Nat.eq_mul_of_div_eq_right H1 H2]
Theorem: GroupAlgebra.mul_average_left
File: Mathlib/RepresentationTheory/Invariants.lean

Proof steps:
state_before: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
⊢ Finsupp.single g 1 * average k G = average k G
state_after: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
⊢ ⅟↑(Fintype.card G) • ∑ x : G, single (g * x) 1 = ⅟↑(Fintype.card G) • ∑ x : G, single x 1
tactic: simp only [mul_one, Finset.mul_sum, Algebra.mul_smul_comm, average, MonoidAlgebra.of_apply,
    Finset.sum_congr, MonoidAlgebra.single_mul_single]
state_before: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
⊢ ⅟↑(Fintype.card G) • ∑ x : G, single (g * x) 1 = ⅟↑(Fintype.card G) • ∑ x : G, single x 1
state_after: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
f : G → MonoidAlgebra k G := fun x => Finsupp.single x 1
⊢ ⅟↑(Fintype.card G) • ∑ x : G, single (g * x) 1 = ⅟↑(Fintype.card G) • Finset.univ.sum f
tactic: set f : G → MonoidAlgebra k G := fun x => Finsupp.single x 1
state_before: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
f : G → MonoidAlgebra k G := fun x => Finsupp.single x 1
⊢ ⅟↑(Fintype.card G) • ∑ x : G, single (g * x) 1 = ⅟↑(Fintype.card G) • Finset.univ.sum f
state_after: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
f : G → MonoidAlgebra k G := fun x => Finsupp.single x 1
⊢ ⅟↑(Fintype.card G) • ∑ x : G, f (g * x) = ⅟↑(Fintype.card G) • ∑ x : G, f x
tactic: show ⅟ (Fintype.card G : k) • ∑ x : G, f (g * x) = ⅟ (Fintype.card G : k) • ∑ x : G, f x
state_before: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
f : G → MonoidAlgebra k G := fun x => Finsupp.single x 1
⊢ ⅟↑(Fintype.card G) • ∑ x : G, f (g * x) = ⅟↑(Fintype.card G) • ∑ x : G, f x
state_after: no goals
tactic: rw [Function.Bijective.sum_comp (Group.mulLeft_bijective g) _]