ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: TopologicalSpace.exists_countable_basis
File: Mathlib/Topology/Bases.lean

Proof steps:
state_before: α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
⊢ ∃ b, b.Countable ∧ ∅ ∉ b ∧ IsTopologicalBasis b
state_after: case intro.intro
α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
b : Set (Set α)
hb₁ : b.Countable
hb₂ : t = generateFrom b
⊢ ∃ b, b.Countable ∧ ∅ ∉ b ∧ IsTopologicalBasis b
tactic: obtain ⟨b, hb₁, hb₂⟩ := @SecondCountableTopology.is_open_generated_countable α _ _
state_before: case intro.intro
α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
b : Set (Set α)
hb₁ : b.Countable
hb₂ : t = generateFrom b
⊢ ∃ b, b.Countable ∧ ∅ ∉ b ∧ IsTopologicalBasis b
state_after: case intro.intro.refine_1
α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
b : Set (Set α)
hb₁ : b.Countable
hb₂ : t = generateFrom b
⊢ ((fun f => ⋂₀ f) '' {f | f.Finite ∧ f ⊆ b} \ {∅}).Countable

case intro.intro.refine_2
α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
b : Set (Set α)
hb₁ : b.Countable
hb₂ : t = generateFrom b
⊢ ∅ ∈ {∅}
tactic: refine ⟨_, ?_, not_mem_diff_of_mem ?_, (isTopologicalBasis_of_subbasis hb₂).diff_empty⟩
state_before: case intro.intro.refine_1
α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
b : Set (Set α)
hb₁ : b.Countable
hb₂ : t = generateFrom b
⊢ ((fun f => ⋂₀ f) '' {f | f.Finite ∧ f ⊆ b} \ {∅}).Countable

case intro.intro.refine_2
α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
b : Set (Set α)
hb₁ : b.Countable
hb₂ : t = generateFrom b
⊢ ∅ ∈ {∅}
state_after: no goals
tactic: exacts [((countable_setOf_finite_subset hb₁).image _).mono diff_subset, rfl]
Theorem: Set.Icc_union_Icc'
File: Mathlib/Order/Interval/Set/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
h₂ : a ≤ d
⊢ Icc a b ∪ Icc c d = Icc (min a c) (max b d)
state_after: case h
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
h₂ : a ≤ d
x : α
⊢ x ∈ Icc a b ∪ Icc c d ↔ x ∈ Icc (min a c) (max b d)
tactic: ext1 x
state_before: case h
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
h₂ : a ≤ d
x : α
⊢ x ∈ Icc a b ∪ Icc c d ↔ x ∈ Icc (min a c) (max b d)
state_after: case h
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
h₂ : a ≤ d
x : α
⊢ a ≤ x ∧ x ≤ b ∨ c ≤ x ∧ x ≤ d ↔ (a ≤ x ∨ c ≤ x) ∧ (x ≤ b ∨ x ≤ d)
tactic: simp_rw [mem_union, mem_Icc, min_le_iff, le_max_iff]
state_before: case h
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
h₂ : a ≤ d
x : α
⊢ a ≤ x ∧ x ≤ b ∨ c ≤ x ∧ x ≤ d ↔ (a ≤ x ∨ c ≤ x) ∧ (x ≤ b ∨ x ≤ d)
state_after: case pos
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
h₂ : a ≤ d
x : α
hc : c ≤ x
hd : x ≤ d
⊢ a ≤ x ∧ x ≤ b ∨ c ≤ x ∧ x ≤ d ↔ (a ≤ x ∨ c ≤ x) ∧ (x ≤ b ∨ x ≤ d)

case neg
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
h₂ : a ≤ d
x : α
hc : c ≤ x
hd : ¬x ≤ d
⊢ a ≤ x ∧ x ≤ b ∨ c ≤ x ∧ x ≤ d ↔ (a ≤ x ∨ c ≤ x) ∧ (x ≤ b ∨ x ≤ d)

case pos
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
h₂ : a ≤ d
x : α
hc : ¬c ≤ x
hd : x ≤ d
⊢ a ≤ x ∧ x ≤ b ∨ c ≤ x ∧ x ≤ d ↔ (a ≤ x ∨ c ≤ x) ∧ (x ≤ b ∨ x ≤ d)

case neg
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
h₂ : a ≤ d
x : α
hc : ¬c ≤ x
hd : ¬x ≤ d
⊢ a ≤ x ∧ x ≤ b ∨ c ≤ x ∧ x ≤ d ↔ (a ≤ x ∨ c ≤ x) ∧ (x ≤ b ∨ x ≤ d)
tactic: by_cases hc : c ≤ x <;> by_cases hd : x ≤ d
Theorem: Metric.le_glueDist_inr_inl
File: Mathlib/Topology/MetricSpace/Gluing.lean

Proof steps:
state_before: X : Type u
Y : Type v
Z : Type w
inst✝¹ : MetricSpace X
inst✝ : MetricSpace Y
Φ✝ : Z → X
Ψ✝ : Z → Y
ε✝ : ℝ
Φ : Z → X
Ψ : Z → Y
ε : ℝ
x : Y
y : X
⊢ ε ≤ glueDist Φ Ψ ε (Sum.inr x) (Sum.inl y)
state_after: X : Type u
Y : Type v
Z : Type w
inst✝¹ : MetricSpace X
inst✝ : MetricSpace Y
Φ✝ : Z → X
Ψ✝ : Z → Y
ε✝ : ℝ
Φ : Z → X
Ψ : Z → Y
ε : ℝ
x : Y
y : X
⊢ ε ≤ glueDist Φ Ψ ε (Sum.inl y) (Sum.inr x)
tactic: rw [glueDist_comm]
state_before: X : Type u
Y : Type v
Z : Type w
inst✝¹ : MetricSpace X
inst✝ : MetricSpace Y
Φ✝ : Z → X
Ψ✝ : Z → Y
ε✝ : ℝ
Φ : Z → X
Ψ : Z → Y
ε : ℝ
x : Y
y : X
⊢ ε ≤ glueDist Φ Ψ ε (Sum.inl y) (Sum.inr x)
state_after: no goals
tactic: apply le_glueDist_inl_inr
Theorem: dite_comp_equiv_update
File: Mathlib/Logic/Equiv/Set.lean

Proof steps:
state_before: α✝ : Sort u
β✝ : Sort v
γ✝ : Sort w
α : Type u_1
β : Sort u_2
γ : Sort u_3
p : α → Prop
e : β ≃ Subtype p
v : β → γ
w : α → γ
j : β
x : γ
inst✝² : DecidableEq β
inst✝¹ : DecidableEq α
inst✝ : (j : α) → Decidable (p j)
⊢ (fun i => if h : p i then update v j x (e.symm ⟨i, h⟩) else w i) =
    update (fun i => if h : p i then v (e.symm ⟨i, h⟩) else w i) (↑(e j)) x
state_after: case h
α✝ : Sort u
β✝ : Sort v
γ✝ : Sort w
α : Type u_1
β : Sort u_2
γ : Sort u_3
p : α → Prop
e : β ≃ Subtype p
v : β → γ
w : α → γ
j : β
x : γ
inst✝² : DecidableEq β
inst✝¹ : DecidableEq α
inst✝ : (j : α) → Decidable (p j)
i : α
⊢ (if h : p i then update v j x (e.symm ⟨i, h⟩) else w i) =
    update (fun i => if h : p i then v (e.symm ⟨i, h⟩) else w i) (↑(e j)) x i
tactic: ext i
state_before: case h
α✝ : Sort u
β✝ : Sort v
γ✝ : Sort w
α : Type u_1
β : Sort u_2
γ : Sort u_3
p : α → Prop
e : β ≃ Subtype p
v : β → γ
w : α → γ
j : β
x : γ
inst✝² : DecidableEq β
inst✝¹ : DecidableEq α
inst✝ : (j : α) → Decidable (p j)
i : α
⊢ (if h : p i then update v j x (e.symm ⟨i, h⟩) else w i) =
    update (fun i => if h : p i then v (e.symm ⟨i, h⟩) else w i) (↑(e j)) x i
state_after: case pos
α✝ : Sort u
β✝ : Sort v
γ✝ : Sort w
α : Type u_1
β : Sort u_2
γ : Sort u_3
p : α → Prop
e : β ≃ Subtype p
v : β → γ
w : α → γ
j : β
x : γ
inst✝² : DecidableEq β
inst✝¹ : DecidableEq α
inst✝ : (j : α) → Decidable (p j)
i : α
h : p i
⊢ (if h : p i then update v j x (e.symm ⟨i, h⟩) else w i) =
    update (fun i => if h : p i then v (e.symm ⟨i, h⟩) else w i) (↑(e j)) x i

case neg
α✝ : Sort u
β✝ : Sort v
γ✝ : Sort w
α : Type u_1
β : Sort u_2
γ : Sort u_3
p : α → Prop
e : β ≃ Subtype p
v : β → γ
w : α → γ
j : β
x : γ
inst✝² : DecidableEq β
inst✝¹ : DecidableEq α
inst✝ : (j : α) → Decidable (p j)
i : α
h : ¬p i
⊢ (if h : p i then update v j x (e.symm ⟨i, h⟩) else w i) =
    update (fun i => if h : p i then v (e.symm ⟨i, h⟩) else w i) (↑(e j)) x i
tactic: by_cases h : p i
Theorem: Fintype.card_compl_eq_card_compl
File: Mathlib/Data/Fintype/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : Finite α
p q : α → Prop
inst✝³ : Fintype { x // p x }
inst✝² : Fintype { x // ¬p x }
inst✝¹ : Fintype { x // q x }
inst✝ : Fintype { x // ¬q x }
h : card { x // p x } = card { x // q x }
⊢ card { x // ¬p x } = card { x // ¬q x }
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : Finite α
p q : α → Prop
inst✝³ : Fintype { x // p x }
inst✝² : Fintype { x // ¬p x }
inst✝¹ : Fintype { x // q x }
inst✝ : Fintype { x // ¬q x }
h : card { x // p x } = card { x // q x }
val✝ : Fintype α
⊢ card { x // ¬p x } = card { x // ¬q x }
tactic: cases nonempty_fintype α
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : Finite α
p q : α → Prop
inst✝³ : Fintype { x // p x }
inst✝² : Fintype { x // ¬p x }
inst✝¹ : Fintype { x // q x }
inst✝ : Fintype { x // ¬q x }
h : card { x // p x } = card { x // q x }
val✝ : Fintype α
⊢ card { x // ¬p x } = card { x // ¬q x }
state_after: no goals
tactic: simp only [Fintype.card_subtype_compl, h]
Theorem: AddUnits.neg_eq_of_add_eq_zero_right
File: Mathlib/Algebra/Group/Units.lean

Proof steps:
state_before: α : Type u
inst✝ : Monoid α
a✝ b c u : αˣ
a : α
h : ↑u * a = 1
⊢ ↑u⁻¹ = ↑u⁻¹ * 1
state_after: no goals
tactic: rw [mul_one]
state_before: α : Type u
inst✝ : Monoid α
a✝ b c u : αˣ
a : α
h : ↑u * a = 1
⊢ ↑u⁻¹ * 1 = a
state_after: no goals
tactic: rw [← h, inv_mul_cancel_left]
Theorem: TopologicalSpace.IsSeparable.prod
File: Mathlib/Topology/Bases.lean

Proof steps:
state_before: α : Type u
β✝ : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
β : Type u_2
inst✝ : TopologicalSpace β
s : Set α
t : Set β
hs : IsSeparable s
ht : IsSeparable t
⊢ IsSeparable (s ×ˢ t)
state_after: case intro.intro
α : Type u
β✝ : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
β : Type u_2
inst✝ : TopologicalSpace β
s : Set α
t : Set β
ht : IsSeparable t
cs : Set α
cs_count : cs.Countable
hcs : s ⊆ closure cs
⊢ IsSeparable (s ×ˢ t)
tactic: rcases hs with ⟨cs, cs_count, hcs⟩
state_before: case intro.intro
α : Type u
β✝ : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
β : Type u_2
inst✝ : TopologicalSpace β
s : Set α
t : Set β
ht : IsSeparable t
cs : Set α
cs_count : cs.Countable
hcs : s ⊆ closure cs
⊢ IsSeparable (s ×ˢ t)
state_after: case intro.intro.intro.intro
α : Type u
β✝ : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
β : Type u_2
inst✝ : TopologicalSpace β
s : Set α
t : Set β
cs : Set α
cs_count : cs.Countable
hcs : s ⊆ closure cs
ct : Set β
ct_count : ct.Countable
hct : t ⊆ closure ct
⊢ IsSeparable (s ×ˢ t)
tactic: rcases ht with ⟨ct, ct_count, hct⟩
state_before: case intro.intro.intro.intro
α : Type u
β✝ : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
β : Type u_2
inst✝ : TopologicalSpace β
s : Set α
t : Set β
cs : Set α
cs_count : cs.Countable
hcs : s ⊆ closure cs
ct : Set β
ct_count : ct.Countable
hct : t ⊆ closure ct
⊢ IsSeparable (s ×ˢ t)
state_after: case intro.intro.intro.intro
α : Type u
β✝ : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
β : Type u_2
inst✝ : TopologicalSpace β
s : Set α
t : Set β
cs : Set α
cs_count : cs.Countable
hcs : s ⊆ closure cs
ct : Set β
ct_count : ct.Countable
hct : t ⊆ closure ct
⊢ s ×ˢ t ⊆ closure (cs ×ˢ ct)
tactic: refine ⟨cs ×ˢ ct, cs_count.prod ct_count, ?_⟩
state_before: case intro.intro.intro.intro
α : Type u
β✝ : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
β : Type u_2
inst✝ : TopologicalSpace β
s : Set α
t : Set β
cs : Set α
cs_count : cs.Countable
hcs : s ⊆ closure cs
ct : Set β
ct_count : ct.Countable
hct : t ⊆ closure ct
⊢ s ×ˢ t ⊆ closure (cs ×ˢ ct)
state_after: case intro.intro.intro.intro
α : Type u
β✝ : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
β : Type u_2
inst✝ : TopologicalSpace β
s : Set α
t : Set β
cs : Set α
cs_count : cs.Countable
hcs : s ⊆ closure cs
ct : Set β
ct_count : ct.Countable
hct : t ⊆ closure ct
⊢ s ×ˢ t ⊆ closure cs ×ˢ closure ct
tactic: rw [closure_prod_eq]
state_before: case intro.intro.intro.intro
α : Type u
β✝ : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
β : Type u_2
inst✝ : TopologicalSpace β
s : Set α
t : Set β
cs : Set α
cs_count : cs.Countable
hcs : s ⊆ closure cs
ct : Set β
ct_count : ct.Countable
hct : t ⊆ closure ct
⊢ s ×ˢ t ⊆ closure cs ×ˢ closure ct
state_after: no goals
tactic: gcongr
Theorem: CategoryTheory.Limits.biprod.braiding'_eq_braiding
File: Mathlib/CategoryTheory/Limits/Shapes/Biproducts.lean

Proof steps:
state_before: J : Type w
C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
D : Type uD
inst✝² : Category.{uD', uD} D
inst✝¹ : HasZeroMorphisms D
P✝ Q✝ : C
inst✝ : HasBinaryBiproducts C
P Q : C
⊢ braiding' P Q = braiding P Q
state_after: no goals
tactic: aesop_cat
Theorem: Multiset.filter_filter
File: Mathlib/Data/Multiset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
p : α → Prop
inst✝¹ : DecidablePred p
q : α → Prop
inst✝ : DecidablePred q
s : Multiset α
l : List α
⊢ filter p (filter q (Quot.mk Setoid.r l)) = filter (fun a => p a ∧ q a) (Quot.mk Setoid.r l)
state_after: no goals
tactic: simp
Theorem: Ordinal.principal_mul_iff_le_two_or_omega_opow_opow
File: Mathlib/SetTheory/Ordinal/Principal.lean

Proof steps:
state_before: o : Ordinal.{u_1}
⊢ Principal (fun x x_1 => x * x_1) o ↔ o ≤ 2 ∨ ∃ a, o = ω ^ ω ^ a
state_after: case refine_1
o : Ordinal.{u_1}
ho : Principal (fun x x_1 => x * x_1) o
⊢ o ≤ 2 ∨ ∃ a, o = ω ^ ω ^ a

case refine_2
o : Ordinal.{u_1}
⊢ (o ≤ 2 ∨ ∃ a, o = ω ^ ω ^ a) → Principal (fun x x_1 => x * x_1) o
tactic: refine ⟨fun ho => ?_, ?_⟩
Theorem: _private.Mathlib.Topology.Category.Compactum.0.Compactum.subset_cl
File: Mathlib/Topology/Category/Compactum.lean

Proof steps:
state_before: X : Compactum
A : Set X.A
a : X.A
ha : a ∈ A
⊢ X.str (X.incl a) = a
state_after: no goals
tactic: simp
Theorem: smul_mul_smul
File: Mathlib/Algebra/Group/Action/Defs.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
G : Type u_3
H : Type u_4
A : Type u_5
B : Type u_6
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
inst✝⁴ : Monoid M
inst✝³ : MulAction M α
inst✝² : Mul α
r s : M
x y : α
inst✝¹ : IsScalarTower M α α
inst✝ : SMulCommClass M α α
⊢ r • x * s • y = (r * s) • (x * y)
state_after: no goals
tactic: rw [smul_mul_assoc, mul_smul_comm, ← smul_assoc, smul_eq_mul]
Theorem: DirectSum.mk_apply_of_not_mem
File: Mathlib/Algebra/DirectSum/Basic.lean

Proof steps:
state_before: ι : Type v
β : ι → Type w
inst✝¹ : (i : ι) → AddCommMonoid (β i)
inst✝ : DecidableEq ι
s : Finset ι
f : (i : ↑↑s) → β ↑i
n : ι
hn : n ∉ s
⊢ ((mk β s) f) n = 0
state_after: ι : Type v
β : ι → Type w
inst✝¹ : (i : ι) → AddCommMonoid (β i)
inst✝ : DecidableEq ι
s : Finset ι
f : (i : ↑↑s) → β ↑i
n : ι
hn : n ∉ s
⊢ (if H : n ∈ s then f ⟨n, H⟩ else 0) = 0
tactic: dsimp only [Finset.coe_sort_coe, mk, AddMonoidHom.coe_mk, ZeroHom.coe_mk, DFinsupp.mk_apply]
state_before: ι : Type v
β : ι → Type w
inst✝¹ : (i : ι) → AddCommMonoid (β i)
inst✝ : DecidableEq ι
s : Finset ι
f : (i : ↑↑s) → β ↑i
n : ι
hn : n ∉ s
⊢ (if H : n ∈ s then f ⟨n, H⟩ else 0) = 0
state_after: no goals
tactic: rw [dif_neg hn]
Theorem: scaleRoots_aeval_eq_zero_of_aeval_mk'_eq_zero
File: Mathlib/RingTheory/Polynomial/RationalRoot.lean

Proof steps:
state_before: A : Type u_1
K : Type u_2
R : Type u_3
S : Type u_4
inst✝⁷ : CommRing A
inst✝⁶ : Field K
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid A
inst✝³ : Algebra A S
inst✝² : IsLocalization M S
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
p : A[X]
r : A
s : ↥M
hr : (aeval (mk' S r s)) p = 0
⊢ (aeval ((algebraMap A S) r)) (p.scaleRoots ↑s) = 0
state_after: case h.e'_2.h.e
A : Type u_1
K : Type u_2
R : Type u_3
S : Type u_4
inst✝⁷ : CommRing A
inst✝⁶ : Field K
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid A
inst✝³ : Algebra A S
inst✝² : IsLocalization M S
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
p : A[X]
r : A
s : ↥M
hr : (aeval (mk' S r s)) p = 0
⊢ ⇑(aeval ((algebraMap A S) r)) = eval₂ (algebraMap A S) ((algebraMap A S) ↑s * mk' S r s)
tactic: convert scaleRoots_eval₂_eq_zero (algebraMap A S) hr
state_before: case h.e'_2.h.e
A : Type u_1
K : Type u_2
R : Type u_3
S : Type u_4
inst✝⁷ : CommRing A
inst✝⁶ : Field K
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid A
inst✝³ : Algebra A S
inst✝² : IsLocalization M S
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
p : A[X]
r : A
s : ↥M
hr : (aeval (mk' S r s)) p = 0
⊢ ⇑(aeval ((algebraMap A S) r)) = eval₂ (algebraMap A S) ((algebraMap A S) ↑s * mk' S r s)
state_after: case h.e'_2.h.e.h
A : Type u_1
K : Type u_2
R : Type u_3
S : Type u_4
inst✝⁷ : CommRing A
inst✝⁶ : Field K
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid A
inst✝³ : Algebra A S
inst✝² : IsLocalization M S
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
p : A[X]
r : A
s : ↥M
hr : (aeval (mk' S r s)) p = 0
x✝ : A[X]
⊢ (aeval ((algebraMap A S) r)) x✝ = eval₂ (algebraMap A S) ((algebraMap A S) ↑s * mk' S r s) x✝
tactic: funext
state_before: case h.e'_2.h.e.h
A : Type u_1
K : Type u_2
R : Type u_3
S : Type u_4
inst✝⁷ : CommRing A
inst✝⁶ : Field K
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid A
inst✝³ : Algebra A S
inst✝² : IsLocalization M S
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
p : A[X]
r : A
s : ↥M
hr : (aeval (mk' S r s)) p = 0
x✝ : A[X]
⊢ (aeval ((algebraMap A S) r)) x✝ = eval₂ (algebraMap A S) ((algebraMap A S) ↑s * mk' S r s) x✝
state_after: no goals
tactic: rw [aeval_def, mk'_spec' _ r s]
Theorem: VectorFourier.fourierPowSMulRight_iteratedFDeriv_fourierIntegral
File: Mathlib/Analysis/Fourier/FourierTransformDeriv.lean

Proof steps:
state_before: E : Type u_1
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace ℂ E
V : Type u_2
W : Type u_3
inst✝⁸ : NormedAddCommGroup V
inst✝⁷ : NormedSpace ℝ V
inst✝⁶ : NormedAddCommGroup W
inst✝⁵ : NormedSpace ℝ W
L : V →L[ℝ] W →L[ℝ] ℝ
f : V → E
inst✝⁴ : SecondCountableTopology V
inst✝³ : MeasurableSpace V
inst✝² : BorelSpace V
μ✝ : Measure V
inst✝¹ : FiniteDimensional ℝ V
μ : Measure V
inst✝ : μ.IsAddHaarMeasure
K N : ℕ∞
hf : ContDiff ℝ N f
h'f : ∀ (k n : ℕ), ↑k ≤ K → ↑n ≤ N → Integrable (fun v => ‖v‖ ^ k * ‖iteratedFDeriv ℝ n f v‖) μ
k n : ℕ
hk : ↑k ≤ K
hn : ↑n ≤ N
w : W
⊢ fourierPowSMulRight (-L.flip) (iteratedFDeriv ℝ k (fourierIntegral 𝐞 μ L.toLinearMap₂ f)) w n =
    fourierIntegral 𝐞 μ L.toLinearMap₂ (iteratedFDeriv ℝ n fun v => fourierPowSMulRight L f v k) w
state_after: E : Type u_1
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace ℂ E
V : Type u_2
W : Type u_3
inst✝⁸ : NormedAddCommGroup V
inst✝⁷ : NormedSpace ℝ V
inst✝⁶ : NormedAddCommGroup W
inst✝⁵ : NormedSpace ℝ W
L : V →L[ℝ] W →L[ℝ] ℝ
f : V → E
inst✝⁴ : SecondCountableTopology V
inst✝³ : MeasurableSpace V
inst✝² : BorelSpace V
μ✝ : Measure V
inst✝¹ : FiniteDimensional ℝ V
μ : Measure V
inst✝ : μ.IsAddHaarMeasure
K N : ℕ∞
hf : ContDiff ℝ N f
h'f : ∀ (k n : ℕ), ↑k ≤ K → ↑n ≤ N → Integrable (fun v => ‖v‖ ^ k * ‖iteratedFDeriv ℝ n f v‖) μ
k n : ℕ
hk : ↑k ≤ K
hn : ↑n ≤ N
w : W
⊢ fourierPowSMulRight (-L.flip) (iteratedFDeriv ℝ k (fourierIntegral 𝐞 μ L.toLinearMap₂ f)) w n =
    (fun w =>
        fourierPowSMulRight (-L.flip) (fourierIntegral 𝐞 μ L.toLinearMap₂ fun v => fourierPowSMulRight L f v k) w n)
      w

E : Type u_1
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace ℂ E
V : Type u_2
W : Type u_3
inst✝⁸ : NormedAddCommGroup V
inst✝⁷ : NormedSpace ℝ V
inst✝⁶ : NormedAddCommGroup W
inst✝⁵ : NormedSpace ℝ W
L : V →L[ℝ] W →L[ℝ] ℝ
f : V → E
inst✝⁴ : SecondCountableTopology V
inst✝³ : MeasurableSpace V
inst✝² : BorelSpace V
μ✝ : Measure V
inst✝¹ : FiniteDimensional ℝ V
μ : Measure V
inst✝ : μ.IsAddHaarMeasure
K N : ℕ∞
hf : ContDiff ℝ N f
h'f : ∀ (k n : ℕ), ↑k ≤ K → ↑n ≤ N → Integrable (fun v => ‖v‖ ^ k * ‖iteratedFDeriv ℝ n f v‖) μ
k n : ℕ
hk : ↑k ≤ K
hn : ↑n ≤ N
w : W
⊢ ∀ (n : ℕ), ↑n ≤ N → Integrable (iteratedFDeriv ℝ n fun v => fourierPowSMulRight L f v k) μ
tactic: rw [fourierIntegral_iteratedFDeriv (N := N) _ (hf.fourierPowSMulRight _ _) _ hn]
Theorem: MeasurableEquiv.preimage_image
File: Mathlib/MeasureTheory/MeasurableSpace/Embedding.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
inst✝³ : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
e : α ≃ᵐ β
s : Set α
⊢ ⇑e ⁻¹' (⇑e '' s) = s
state_after: no goals
tactic: rw [← coe_toEquiv, Equiv.preimage_image]
Theorem: disjoint_interior_frontier
File: Mathlib/Topology/Basic.lean

Proof steps:
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ Disjoint (interior s) (frontier s)
state_after: no goals
tactic: rw [disjoint_iff_inter_eq_empty, ← closure_diff_interior, diff_eq,
    ← inter_assoc, inter_comm, ← inter_assoc, compl_inter_self, empty_inter]
Theorem: Polynomial.mem_lift_of_splits_of_roots_mem_range
File: Mathlib/Algebra/Polynomial/Splits.lean

Proof steps:
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝⁴ : CommRing R
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Field F
i : K →+* L
inst✝ : Algebra R K
f : K[X]
hs : Splits (RingHom.id K) f
hm : f.Monic
hr : ∀ a ∈ f.roots, a ∈ (algebraMap R K).range
⊢ f ∈ lifts (algebraMap R K)
state_after: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝⁴ : CommRing R
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Field F
i : K →+* L
inst✝ : Algebra R K
f : K[X]
hs : Splits (RingHom.id K) f
hm : f.Monic
hr : ∀ a ∈ f.roots, a ∈ (algebraMap R K).range
⊢ (Multiset.map (fun a => X - C a) f.roots).prod ∈ liftsRing (algebraMap R K)
tactic: rw [eq_prod_roots_of_monic_of_splits_id hm hs, lifts_iff_liftsRing]
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝⁴ : CommRing R
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Field F
i : K →+* L
inst✝ : Algebra R K
f : K[X]
hs : Splits (RingHom.id K) f
hm : f.Monic
hr : ∀ a ∈ f.roots, a ∈ (algebraMap R K).range
⊢ (Multiset.map (fun a => X - C a) f.roots).prod ∈ liftsRing (algebraMap R K)
state_after: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝⁴ : CommRing R
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Field F
i : K →+* L
inst✝ : Algebra R K
f : K[X]
hs : Splits (RingHom.id K) f
hm : f.Monic
hr : ∀ a ∈ f.roots, a ∈ (algebraMap R K).range
P : K[X]
hP : P ∈ Multiset.map (fun a => X - C a) f.roots
⊢ P ∈ liftsRing (algebraMap R K)
tactic: refine Subring.multiset_prod_mem _ _ fun P hP => ?_
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝⁴ : CommRing R
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Field F
i : K →+* L
inst✝ : Algebra R K
f : K[X]
hs : Splits (RingHom.id K) f
hm : f.Monic
hr : ∀ a ∈ f.roots, a ∈ (algebraMap R K).range
P : K[X]
hP : P ∈ Multiset.map (fun a => X - C a) f.roots
⊢ P ∈ liftsRing (algebraMap R K)
state_after: case intro.intro
R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝⁴ : CommRing R
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Field F
i : K →+* L
inst✝ : Algebra R K
f : K[X]
hs : Splits (RingHom.id K) f
hm : f.Monic
hr : ∀ a ∈ f.roots, a ∈ (algebraMap R K).range
b : K
hb : b ∈ f.roots
hP : X - C b ∈ Multiset.map (fun a => X - C a) f.roots
⊢ X - C b ∈ liftsRing (algebraMap R K)
tactic: obtain ⟨b, hb, rfl⟩ := Multiset.mem_map.1 hP
state_before: case intro.intro
R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝⁴ : CommRing R
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Field F
i : K →+* L
inst✝ : Algebra R K
f : K[X]
hs : Splits (RingHom.id K) f
hm : f.Monic
hr : ∀ a ∈ f.roots, a ∈ (algebraMap R K).range
b : K
hb : b ∈ f.roots
hP : X - C b ∈ Multiset.map (fun a => X - C a) f.roots
⊢ X - C b ∈ liftsRing (algebraMap R K)
state_after: no goals
tactic: exact Subring.sub_mem _ (X_mem_lifts _) (C'_mem_lifts (hr _ hb))
Theorem: norm_zsmul_le
File: Mathlib/Analysis/Normed/Group/Int.lean

Proof steps:
state_before: α : Type u_1
inst✝ : SeminormedCommGroup α
n : ℤ
a : α
⊢ ‖a ^ n‖ ≤ ‖n‖ * ‖a‖
state_after: no goals
tactic: rcases n.eq_nat_or_neg with ⟨n, rfl | rfl⟩ <;> simpa using norm_pow_le_mul_norm n a
Theorem: List.toFinset_finRange
File: Mathlib/Data/Fintype/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
n : ℕ
⊢ (finRange n).toFinset = univ
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
n : ℕ
a✝ : Fin n
⊢ a✝ ∈ (finRange n).toFinset ↔ a✝ ∈ univ
tactic: ext
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
n : ℕ
a✝ : Fin n
⊢ a✝ ∈ (finRange n).toFinset ↔ a✝ ∈ univ
state_after: no goals
tactic: simp