ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: HurwitzZeta.differentiableAt_update_of_residue
File: Mathlib/NumberTheory/LSeries/HurwitzZetaEven.lean

Proof steps:
state_before: Λ : ℂ → ℂ
hf : ∀ (s : ℂ), s ≠ 0 → s ≠ 1 → DifferentiableAt ℂ Λ s
L : ℂ
h_lim : Tendsto (fun s => s * Λ s) (𝓝[≠] 0) (𝓝 L)
s : ℂ
hs' : s ≠ 1
⊢ DifferentiableAt ℂ (Function.update (fun s => Λ s / s.Gammaℝ) 0 (L / 2)) s
state_after: Λ : ℂ → ℂ
hf : ∀ (s : ℂ), s ≠ 0 → s ≠ 1 → DifferentiableAt ℂ Λ s
L : ℂ
h_lim : Tendsto (fun s => s * Λ s) (𝓝[≠] 0) (𝓝 L)
s : ℂ
hs' : s ≠ 1
claim : ∀ (t : ℂ), t ≠ 0 → t ≠ 1 → DifferentiableAt ℂ (fun u => Λ u / u.Gammaℝ) t
⊢ DifferentiableAt ℂ (Function.update (fun s => Λ s / s.Gammaℝ) 0 (L / 2)) s
tactic: have claim (t) (ht : t ≠ 0) (ht' : t ≠ 1) : DifferentiableAt ℂ (fun u : ℂ ↦ Λ u / Gammaℝ u) t :=
    (hf t ht ht').mul differentiable_Gammaℝ_inv.differentiableAt
state_before: Λ : ℂ → ℂ
hf : ∀ (s : ℂ), s ≠ 0 → s ≠ 1 → DifferentiableAt ℂ Λ s
L : ℂ
h_lim : Tendsto (fun s => s * Λ s) (𝓝[≠] 0) (𝓝 L)
s : ℂ
hs' : s ≠ 1
claim : ∀ (t : ℂ), t ≠ 0 → t ≠ 1 → DifferentiableAt ℂ (fun u => Λ u / u.Gammaℝ) t
⊢ DifferentiableAt ℂ (Function.update (fun s => Λ s / s.Gammaℝ) 0 (L / 2)) s
state_after: Λ : ℂ → ℂ
hf : ∀ (s : ℂ), s ≠ 0 → s ≠ 1 → DifferentiableAt ℂ Λ s
L : ℂ
h_lim : Tendsto (fun s => s * Λ s) (𝓝[≠] 0) (𝓝 L)
s : ℂ
hs' : s ≠ 1
claim : ∀ (t : ℂ), t ≠ 0 → t ≠ 1 → DifferentiableAt ℂ (fun u => Λ u / u.Gammaℝ) t
claim2 : Tendsto (fun s => Λ s / s.Gammaℝ) (𝓝[≠] 0) (𝓝 (L / 2))
⊢ DifferentiableAt ℂ (Function.update (fun s => Λ s / s.Gammaℝ) 0 (L / 2)) s
tactic: have claim2 : Tendsto (fun s : ℂ ↦ Λ s / Gammaℝ s) (𝓝[≠] 0) (𝓝 <| L / 2) := by
    refine Tendsto.congr' ?_ (h_lim.div Gammaℝ_residue_zero two_ne_zero)
    filter_upwards [self_mem_nhdsWithin] with s (hs : s ≠ 0)
    rw [Pi.div_apply, ← div_div, mul_div_cancel_left₀ _ hs]
state_before: Λ : ℂ → ℂ
hf : ∀ (s : ℂ), s ≠ 0 → s ≠ 1 → DifferentiableAt ℂ Λ s
L : ℂ
h_lim : Tendsto (fun s => s * Λ s) (𝓝[≠] 0) (𝓝 L)
s : ℂ
hs' : s ≠ 1
claim : ∀ (t : ℂ), t ≠ 0 → t ≠ 1 → DifferentiableAt ℂ (fun u => Λ u / u.Gammaℝ) t
claim2 : Tendsto (fun s => Λ s / s.Gammaℝ) (𝓝[≠] 0) (𝓝 (L / 2))
⊢ DifferentiableAt ℂ (Function.update (fun s => Λ s / s.Gammaℝ) 0 (L / 2)) s
state_after: case inl
Λ : ℂ → ℂ
hf : ∀ (s : ℂ), s ≠ 0 → s ≠ 1 → DifferentiableAt ℂ Λ s
L : ℂ
h_lim : Tendsto (fun s => s * Λ s) (𝓝[≠] 0) (𝓝 L)
s : ℂ
hs' : s ≠ 1
claim : ∀ (t : ℂ), t ≠ 0 → t ≠ 1 → DifferentiableAt ℂ (fun u => Λ u / u.Gammaℝ) t
claim2 : Tendsto (fun s => Λ s / s.Gammaℝ) (𝓝[≠] 0) (𝓝 (L / 2))
hs : s ≠ 0
⊢ DifferentiableAt ℂ (Function.update (fun s => Λ s / s.Gammaℝ) 0 (L / 2)) s

case inr
Λ : ℂ → ℂ
hf : ∀ (s : ℂ), s ≠ 0 → s ≠ 1 → DifferentiableAt ℂ Λ s
L : ℂ
h_lim : Tendsto (fun s => s * Λ s) (𝓝[≠] 0) (𝓝 L)
claim : ∀ (t : ℂ), t ≠ 0 → t ≠ 1 → DifferentiableAt ℂ (fun u => Λ u / u.Gammaℝ) t
claim2 : Tendsto (fun s => Λ s / s.Gammaℝ) (𝓝[≠] 0) (𝓝 (L / 2))
hs' : 0 ≠ 1
⊢ DifferentiableAt ℂ (Function.update (fun s => Λ s / s.Gammaℝ) 0 (L / 2)) 0
tactic: rcases ne_or_eq s 0 with hs | rfl
Theorem: Finset.Nonempty.of_disjSups_left
File: Mathlib/Data/Finset/Sups.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : SemilatticeSup α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s s₁ s₂ t t₁ t₂ u : Finset α
a b c : α
⊢ (s ○ t).Nonempty → s.Nonempty
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : SemilatticeSup α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s s₁ s₂ t t₁ t₂ u : Finset α
a b c : α
⊢ (∃ x, ∃ a ∈ s, ∃ b ∈ t, Disjoint a b ∧ a ⊔ b = x) → ∃ x, x ∈ s
tactic: simp_rw [Finset.Nonempty, mem_disjSups]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : SemilatticeSup α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s s₁ s₂ t t₁ t₂ u : Finset α
a b c : α
⊢ (∃ x, ∃ a ∈ s, ∃ b ∈ t, Disjoint a b ∧ a ⊔ b = x) → ∃ x, x ∈ s
state_after: no goals
tactic: exact fun ⟨_, a, ha, _⟩ => ⟨a, ha⟩
Theorem: Set.Ioc_subset_Ioc_iff
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₁ : a₁ < b₁
⊢ Ioc a₁ b₁ ⊆ Ioc a₂ b₂ ↔ b₁ ≤ b₂ ∧ a₂ ≤ a₁
state_after: no goals
tactic: convert @Ico_subset_Ico_iff αᵒᵈ _ b₁ b₂ a₁ a₂ h₁ using 2 <;> exact (@dual_Ico α _ _ _).symm
Theorem: MeasureTheory.setToFun_add
File: Mathlib/MeasureTheory/Integral/SetToL1.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
F' : Type u_4
G : Type u_5
𝕜 : Type u_6
p : ℝ≥0∞
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
inst✝³ : NormedAddCommGroup F'
inst✝² : NormedSpace ℝ F'
inst✝¹ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝ : CompleteSpace F
T T' T'' : Set α → E →L[ℝ] F
C C' C'' : ℝ
f g : α → E
hT : DominatedFinMeasAdditive μ T C
hf : Integrable f μ
hg : Integrable g μ
⊢ setToFun μ T hT (f + g) = setToFun μ T hT f + setToFun μ T hT g
state_after: no goals
tactic: rw [setToFun_eq hT (hf.add hg), setToFun_eq hT hf, setToFun_eq hT hg, Integrable.toL1_add,
    (L1.setToL1 hT).map_add]
Theorem: Sum.naturality
File: Mathlib/Control/Traversable/Instances.lean

Proof steps:
state_before: σ : Type u
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : Applicative G
inst✝¹ : LawfulApplicative G
inst✝ : LawfulApplicative F
η : ApplicativeTransformation F G
α : Type u_1
β : Type u
f : α → F β
x : σ ⊕ α
⊢ (fun {α} => η.app α) (Sum.traverse f x) = Sum.traverse ((fun {α} => η.app α) ∘ f) x
state_after: no goals
tactic: cases x <;> simp! [Sum.traverse, functor_norm, ApplicativeTransformation.preserves_map,
    ApplicativeTransformation.preserves_seq, ApplicativeTransformation.preserves_pure]
Theorem: SimpleGraph.IsUniform.pos
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Uniform.lean

Proof steps:
state_before: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
hG : G.IsUniform ε s t
hε : ε ≤ 0
⊢ ↑s.card * ε ≤ ↑∅.card
state_after: no goals
tactic: simpa using mul_nonpos_of_nonneg_of_nonpos (Nat.cast_nonneg _) hε
state_before: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
hG : G.IsUniform ε s t
hε : ε ≤ 0
⊢ ↑t.card * ε ≤ ↑∅.card
state_after: no goals
tactic: simpa using mul_nonpos_of_nonneg_of_nonpos (Nat.cast_nonneg _) hε
Theorem: map_comp_mul
File: Mathlib/Algebra/Group/Hom/Defs.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
H : Type u_8
F : Type u_9
inst✝³ : Mul M
inst✝² : Mul N
inst✝¹ : FunLike F M N
inst✝ : MulHomClass F M N
f : F
g h : ι → M
⊢ ⇑f ∘ (g * h) = ⇑f ∘ g * ⇑f ∘ h
state_after: case h
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
H : Type u_8
F : Type u_9
inst✝³ : Mul M
inst✝² : Mul N
inst✝¹ : FunLike F M N
inst✝ : MulHomClass F M N
f : F
g h : ι → M
x✝ : ι
⊢ (⇑f ∘ (g * h)) x✝ = (⇑f ∘ g * ⇑f ∘ h) x✝
tactic: ext
state_before: case h
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
H : Type u_8
F : Type u_9
inst✝³ : Mul M
inst✝² : Mul N
inst✝¹ : FunLike F M N
inst✝ : MulHomClass F M N
f : F
g h : ι → M
x✝ : ι
⊢ (⇑f ∘ (g * h)) x✝ = (⇑f ∘ g * ⇑f ∘ h) x✝
state_after: no goals
tactic: simp
Theorem: CategoryTheory.simple_iff_subobject_isSimpleOrder
File: Mathlib/CategoryTheory/Simple.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroObject C
X : C
⊢ Simple X → IsSimpleOrder (Subobject X)
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroObject C
X : C
h : Simple X
⊢ IsSimpleOrder (Subobject X)
tactic: intro h
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroObject C
X : C
h : Simple X
⊢ IsSimpleOrder (Subobject X)
state_after: no goals
tactic: infer_instance
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroObject C
X : C
⊢ IsSimpleOrder (Subobject X) → Simple X
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroObject C
X : C
h : IsSimpleOrder (Subobject X)
⊢ Simple X
tactic: intro h
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroObject C
X : C
h : IsSimpleOrder (Subobject X)
⊢ Simple X
state_after: no goals
tactic: exact simple_of_isSimpleOrder_subobject X
Theorem: isOpen_iff_open_ball_subset
File: Mathlib/Topology/UniformSpace/Basic.lean

Proof steps:
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
s : Set α
⊢ IsOpen s ↔ ∀ x ∈ s, ∃ V ∈ 𝓤 α, IsOpen V ∧ ball x V ⊆ s
state_after: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
s : Set α
⊢ (∀ x ∈ s, ∃ V ∈ 𝓤 α, ball x V ⊆ s) ↔ ∀ x ∈ s, ∃ V ∈ 𝓤 α, IsOpen V ∧ ball x V ⊆ s
tactic: rw [isOpen_iff_ball_subset]
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
s : Set α
⊢ (∀ x ∈ s, ∃ V ∈ 𝓤 α, ball x V ⊆ s) ↔ ∀ x ∈ s, ∃ V ∈ 𝓤 α, IsOpen V ∧ ball x V ⊆ s
state_after: case mp
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
s : Set α
h : ∀ x ∈ s, ∃ V ∈ 𝓤 α, ball x V ⊆ s
x : α
hx : x ∈ s
⊢ ∃ V ∈ 𝓤 α, IsOpen V ∧ ball x V ⊆ s

case mpr
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
s : Set α
h : ∀ x ∈ s, ∃ V ∈ 𝓤 α, IsOpen V ∧ ball x V ⊆ s
x : α
hx : x ∈ s
⊢ ∃ V ∈ 𝓤 α, ball x V ⊆ s
tactic: constructor <;> intro h x hx
Theorem: min_sub_sub_left
File: Mathlib/Algebra/Order/Group/MinMax.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedCommGroup α
a✝ b✝ c✝ a b c : α
⊢ min (a / b) (a / c) = a / max b c
state_after: no goals
tactic: simp only [div_eq_mul_inv, min_mul_mul_left, min_inv_inv']
Theorem: RingHom.lift_injective_of_ker_le_ideal
File: Mathlib/RingTheory/Ideal/QuotientOperations.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : Semiring S
f✝ : R →+* S
I : Ideal R
f : R →+* S
H : ∀ a ∈ I, f a = 0
hI : ker f ≤ I
⊢ Function.Injective ⇑(Ideal.Quotient.lift I f H)
state_after: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : Semiring S
f✝ : R →+* S
I : Ideal R
f : R →+* S
H : ∀ a ∈ I, f a = 0
hI : ker f ≤ I
⊢ ∀ (x : R ⧸ I), (Ideal.Quotient.lift I f H) x = 0 → x = 0
tactic: rw [RingHom.injective_iff_ker_eq_bot, RingHom.ker_eq_bot_iff_eq_zero]
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : Semiring S
f✝ : R →+* S
I : Ideal R
f : R →+* S
H : ∀ a ∈ I, f a = 0
hI : ker f ≤ I
⊢ ∀ (x : R ⧸ I), (Ideal.Quotient.lift I f H) x = 0 → x = 0
state_after: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : Semiring S
f✝ : R →+* S
I : Ideal R
f : R →+* S
H : ∀ a ∈ I, f a = 0
hI : ker f ≤ I
u : R ⧸ I
hu : (Ideal.Quotient.lift I f H) u = 0
⊢ u = 0
tactic: intro u hu
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : Semiring S
f✝ : R →+* S
I : Ideal R
f : R →+* S
H : ∀ a ∈ I, f a = 0
hI : ker f ≤ I
u : R ⧸ I
hu : (Ideal.Quotient.lift I f H) u = 0
⊢ u = 0
state_after: case intro
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : Semiring S
f✝ : R →+* S
I : Ideal R
f : R →+* S
H : ∀ a ∈ I, f a = 0
hI : ker f ≤ I
v : R
hu : (Ideal.Quotient.lift I f H) ((Ideal.Quotient.mk I) v) = 0
⊢ (Ideal.Quotient.mk I) v = 0
tactic: obtain ⟨v, rfl⟩ := Ideal.Quotient.mk_surjective u
state_before: case intro
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : Semiring S
f✝ : R →+* S
I : Ideal R
f : R →+* S
H : ∀ a ∈ I, f a = 0
hI : ker f ≤ I
v : R
hu : (Ideal.Quotient.lift I f H) ((Ideal.Quotient.mk I) v) = 0
⊢ (Ideal.Quotient.mk I) v = 0
state_after: case intro
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : Semiring S
f✝ : R →+* S
I : Ideal R
f : R →+* S
H : ∀ a ∈ I, f a = 0
hI : ker f ≤ I
v : R
hu : f v = 0
⊢ (Ideal.Quotient.mk I) v = 0
tactic: rw [Ideal.Quotient.lift_mk] at hu
state_before: case intro
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : Semiring S
f✝ : R →+* S
I : Ideal R
f : R →+* S
H : ∀ a ∈ I, f a = 0
hI : ker f ≤ I
v : R
hu : f v = 0
⊢ (Ideal.Quotient.mk I) v = 0
state_after: case intro
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : Semiring S
f✝ : R →+* S
I : Ideal R
f : R →+* S
H : ∀ a ∈ I, f a = 0
hI : ker f ≤ I
v : R
hu : f v = 0
⊢ v ∈ I
tactic: rw [Ideal.Quotient.eq_zero_iff_mem]
state_before: case intro
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : Semiring S
f✝ : R →+* S
I : Ideal R
f : R →+* S
H : ∀ a ∈ I, f a = 0
hI : ker f ≤ I
v : R
hu : f v = 0
⊢ v ∈ I
state_after: no goals
tactic: exact hI ((RingHom.mem_ker f).mpr hu)
Theorem: FractionalIdeal.spanSingleton_eq_spanSingleton
File: Mathlib/RingTheory/FractionalIdeal/Operations.lean

Proof steps:
state_before: R : Type u_1
inst✝⁷ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁶ : CommRing P
inst✝⁵ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_3
inst✝⁴ : CommRing R₁
K : Type u_4
inst✝³ : Field K
inst✝² : Algebra R₁ K
inst✝¹ : IsFractionRing R₁ K
inst✝ : NoZeroSMulDivisors R P
x y : P
⊢ spanSingleton S x = spanSingleton S y ↔ ∃ z, z • x = y
state_after: R : Type u_1
inst✝⁷ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁶ : CommRing P
inst✝⁵ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_3
inst✝⁴ : CommRing R₁
K : Type u_4
inst✝³ : Field K
inst✝² : Algebra R₁ K
inst✝¹ : IsFractionRing R₁ K
inst✝ : NoZeroSMulDivisors R P
x y : P
⊢ ⟨span R {x}, ⋯⟩ = ⟨span R {y}, ⋯⟩ ↔ span R {x} = span R {y}
tactic: rw [← Submodule.span_singleton_eq_span_singleton, spanSingleton, spanSingleton]
state_before: R : Type u_1
inst✝⁷ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁶ : CommRing P
inst✝⁵ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_3
inst✝⁴ : CommRing R₁
K : Type u_4
inst✝³ : Field K
inst✝² : Algebra R₁ K
inst✝¹ : IsFractionRing R₁ K
inst✝ : NoZeroSMulDivisors R P
x y : P
⊢ ⟨span R {x}, ⋯⟩ = ⟨span R {y}, ⋯⟩ ↔ span R {x} = span R {y}
state_after: no goals
tactic: exact Subtype.mk_eq_mk
Theorem: Nat.ascFactorial_of_sub
File: Mathlib/Data/Nat/Factorial/Basic.lean

Proof steps:
state_before: n k : ℕ
⊢ (n - k) * (n - k + 1).ascFactorial k = (n - k).ascFactorial (k + 1)
state_after: no goals
tactic: rw [succ_ascFactorial, ascFactorial_succ]
Theorem: Polynomial.coeff_monomial
File: Mathlib/Algebra/Polynomial/Basic.lean

Proof steps:
state_before: R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
⊢ ((monomial n) a).coeff m = if n = m then a else 0
state_after: no goals
tactic: simp [coeff, Finsupp.single_apply]
Theorem: Finset.map_sups
File: Mathlib/Data/Finset/Sups.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁵ : DecidableEq α
inst✝⁴ : DecidableEq β
inst✝³ : SemilatticeSup α
inst✝² : SemilatticeSup β
inst✝¹ : FunLike F α β
inst✝ : SupHomClass F α β
s✝ s₁ s₂ t✝ t₁ t₂ u v : Finset α
a b c : α
f : F
hf : Injective ⇑f
s t : Finset α
⊢ map { toFun := ⇑f, inj' := hf } (s ⊻ t) = map { toFun := ⇑f, inj' := hf } s ⊻ map { toFun := ⇑f, inj' := hf } t
state_after: no goals
tactic: simpa [map_eq_image] using image_sups f s t
Theorem: Finset.sum_card
File: Mathlib/Algebra/Order/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝¹ : DecidableEq α
s : Finset α
B : Finset (Finset α)
n : ℕ
inst✝ : Fintype α
h : ∀ (a : α), (filter (fun x => a ∈ x) B).card = n
⊢ ∑ s ∈ B, s.card = Fintype.card α * n
state_after: no goals
tactic: simp_rw [Fintype.card, ← sum_card_inter fun a _ ↦ h a, univ_inter]
Theorem: Asymptotics.superpolynomialDecay_iff_isBigO
File: Mathlib/Analysis/Asymptotics/SuperpolynomialDecay.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
l : Filter α
k f g g' : α → β
inst✝¹ : NormedLinearOrderedField β
inst✝ : OrderTopology β
hk : Tendsto k l atTop
⊢ SuperpolynomialDecay l k f ↔ ∀ (z : ℤ), f =O[l] fun a => k a ^ z
state_after: α : Type u_1
β : Type u_2
l : Filter α
k f g g' : α → β
inst✝¹ : NormedLinearOrderedField β
inst✝ : OrderTopology β
hk : Tendsto k l atTop
⊢ (∀ (z : ℤ), Tendsto (fun a => k a ^ z * f a) l (𝓝 0)) ↔ ∀ (z : ℤ), f =O[l] fun a => k a ^ z
tactic: refine (superpolynomialDecay_iff_zpow_tendsto_zero f hk).trans ?_
state_before: α : Type u_1
β : Type u_2
l : Filter α
k f g g' : α → β
inst✝¹ : NormedLinearOrderedField β
inst✝ : OrderTopology β
hk : Tendsto k l atTop
⊢ (∀ (z : ℤ), Tendsto (fun a => k a ^ z * f a) l (𝓝 0)) ↔ ∀ (z : ℤ), f =O[l] fun a => k a ^ z
state_after: α : Type u_1
β : Type u_2
l : Filter α
k f g g' : α → β
inst✝¹ : NormedLinearOrderedField β
inst✝ : OrderTopology β
hk : Tendsto k l atTop
hk0 : ∀ᶠ (x : α) in l, k x ≠ 0
⊢ (∀ (z : ℤ), Tendsto (fun a => k a ^ z * f a) l (𝓝 0)) ↔ ∀ (z : ℤ), f =O[l] fun a => k a ^ z
tactic: have hk0 : ∀ᶠ x in l, k x ≠ 0 := hk.eventually_ne_atTop 0
state_before: α : Type u_1
β : Type u_2
l : Filter α
k f g g' : α → β
inst✝¹ : NormedLinearOrderedField β
inst✝ : OrderTopology β
hk : Tendsto k l atTop
hk0 : ∀ᶠ (x : α) in l, k x ≠ 0
⊢ (∀ (z : ℤ), Tendsto (fun a => k a ^ z * f a) l (𝓝 0)) ↔ ∀ (z : ℤ), f =O[l] fun a => k a ^ z
state_after: case refine_1
α : Type u_1
β : Type u_2
l : Filter α
k f g g' : α → β
inst✝¹ : NormedLinearOrderedField β
inst✝ : OrderTopology β
hk : Tendsto k l atTop
hk0 : ∀ᶠ (x : α) in l, k x ≠ 0
h : ∀ (z : ℤ), Tendsto (fun a => k a ^ z * f a) l (𝓝 0)
z : ℤ
⊢ f =O[l] fun a => k a ^ z

case refine_2
α : Type u_1
β : Type u_2
l : Filter α
k f g g' : α → β
inst✝¹ : NormedLinearOrderedField β
inst✝ : OrderTopology β
hk : Tendsto k l atTop
hk0 : ∀ᶠ (x : α) in l, k x ≠ 0
h : ∀ (z : ℤ), f =O[l] fun a => k a ^ z
z : ℤ
⊢ Tendsto (fun a => k a ^ z * f a) l (𝓝 0)
tactic: refine ⟨fun h z => ?_, fun h z => ?_⟩
Theorem: Submonoid.prod_top
File: Mathlib/Algebra/Group/Submonoid/Operations.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
s : Submonoid M
x : M × N
⊢ x ∈ s.prod ⊤ ↔ x ∈ comap (MonoidHom.fst M N) s
state_after: no goals
tactic: simp [mem_prod, MonoidHom.coe_fst]
Theorem: SetTheory.PGame.equiv_nim_grundyValue
File: Mathlib/SetTheory/Game/Nim.lean

Proof steps:
state_before: x✝ : PGame
inst✝ : x✝.Impartial
G : PGame := x✝
⊢ x✝ ≈ nim x✝.grundyValue
state_after: x✝ : PGame
inst✝ : x✝.Impartial
G : PGame := x✝
⊢ ∀ (i : (x✝ + nim x✝.grundyValue).LeftMoves), (x✝ + nim x✝.grundyValue).moveLeft i ‖ 0
tactic: rw [Impartial.equiv_iff_add_equiv_zero, ← Impartial.forall_leftMoves_fuzzy_iff_equiv_zero]
state_before: x✝ : PGame
inst✝ : x✝.Impartial
G : PGame := x✝
⊢ ∀ (i : (x✝ + nim x✝.grundyValue).LeftMoves), (x✝ + nim x✝.grundyValue).moveLeft i ‖ 0
state_after: x✝ : PGame
inst✝ : x✝.Impartial
G : PGame := x✝
i : (x✝ + nim x✝.grundyValue).LeftMoves
⊢ (x✝ + nim x✝.grundyValue).moveLeft i ‖ 0
tactic: intro i
state_before: x✝ : PGame
inst✝ : x✝.Impartial
G : PGame := x✝
i : (x✝ + nim x✝.grundyValue).LeftMoves
⊢ (x✝ + nim x✝.grundyValue).moveLeft i ‖ 0
state_after: case hl
x✝ : PGame
inst✝ : x✝.Impartial
G : PGame := x✝
i : (x✝ + nim x✝.grundyValue).LeftMoves
⊢ ∀ (i : x✝.LeftMoves), (x✝ + nim x✝.grundyValue).moveLeft (toLeftMovesAdd (Sum.inl i)) ‖ 0

case hr
x✝ : PGame
inst✝ : x✝.Impartial
G : PGame := x✝
i : (x✝ + nim x✝.grundyValue).LeftMoves
⊢ ∀ (i : (nim x✝.grundyValue).LeftMoves), (x✝ + nim x✝.grundyValue).moveLeft (toLeftMovesAdd (Sum.inr i)) ‖ 0
tactic: apply leftMoves_add_cases i
state_before: G✝ : PGame
inst✝ : G✝.Impartial
a✝ :
  ∀ (y : (G : PGame) ×' G.Impartial),
    (invImage (fun x => PSigma.casesOn x fun G inst => G) instWellFoundedRelation).1 y ⟨G✝, inst✝⟩ →
      y.1 ≈ nim y.1.grundyValue
G : PGame := G✝
i₁ : G✝.LeftMoves
⊢ (invImage (fun x => PSigma.casesOn x fun G inst => G) instWellFoundedRelation).1 ⟨G.moveLeft i₁, ⋯⟩ ⟨G✝, inst✝⟩

G✝ : PGame
inst✝ : G✝.Impartial
a✝ :
  ∀ (y : (G : PGame) ×' G.Impartial),
    (invImage (fun x => PSigma.casesOn x fun G inst => G) instWellFoundedRelation).1 y ⟨G✝, inst✝⟩ →
      y.1 ≈ nim y.1.grundyValue
G : PGame := G✝
i₂ :
  (mk (Quotient.out G✝.grundyValue).α (Quotient.out G✝.grundyValue).α (fun o₂ => nim (typein (fun x x_1 => x < x_1) o₂))
      fun o₂ => nim (typein (fun x x_1 => x < x_1) o₂)).LeftMoves
h' : ∃ i, (G.moveLeft i).grundyValue = typein (Quotient.out G.grundyValue).r i₂
i : G.LeftMoves
hi : (G.moveLeft i).grundyValue = typein (Quotient.out G.grundyValue).r i₂
h✝ : h' = ⋯
⊢ (invImage (fun x => PSigma.casesOn x fun G inst => G) instWellFoundedRelation).1 ⟨G.moveLeft i, ⋯⟩ ⟨G✝, inst✝⟩
state_after: no goals
tactic: all_goals pgame_wf_tac
Theorem: MeasureTheory.Measure.prod_zero
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

Proof steps:
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ
μ✝ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝² : NormedAddCommGroup E
inst✝¹ : SFinite ν
inst✝ : SFinite μ✝
μ : Measure α
⊢ μ.prod 0 = 0
state_after: no goals
tactic: simp [Measure.prod]
Theorem: SetTheory.PGame.star_fuzzy_zero
File: Mathlib/SetTheory/Game/PGame.lean

Proof steps:
state_before: xl xr : Type u
⊢ star ⧏ 0
state_after: xl xr : Type u
⊢ ∃ j, ∀ (i : (star.moveRight j).LeftMoves), (star.moveRight j).moveLeft i ⧏ 0
tactic: rw [lf_zero]
state_before: xl xr : Type u
⊢ ∃ j, ∀ (i : (star.moveRight j).LeftMoves), (star.moveRight j).moveLeft i ⧏ 0
state_after: case h
xl xr : Type u
⊢ ∀ (i : (star.moveRight default).LeftMoves), (star.moveRight default).moveLeft i ⧏ 0
tactic: use default
state_before: case h
xl xr : Type u
⊢ ∀ (i : (star.moveRight default).LeftMoves), (star.moveRight default).moveLeft i ⧏ 0
state_after: no goals
tactic: rintro ⟨⟩
state_before: xl xr : Type u
⊢ 0 ⧏ star
state_after: xl xr : Type u
⊢ ∃ i, ∀ (j : (star.moveLeft i).RightMoves), 0 ⧏ (star.moveLeft i).moveRight j
tactic: rw [zero_lf]
state_before: xl xr : Type u
⊢ ∃ i, ∀ (j : (star.moveLeft i).RightMoves), 0 ⧏ (star.moveLeft i).moveRight j
state_after: case h
xl xr : Type u
⊢ ∀ (j : (star.moveLeft default).RightMoves), 0 ⧏ (star.moveLeft default).moveRight j
tactic: use default
state_before: case h
xl xr : Type u
⊢ ∀ (j : (star.moveLeft default).RightMoves), 0 ⧏ (star.moveLeft default).moveRight j
state_after: no goals
tactic: rintro ⟨⟩
Theorem: PowerSeries.divided_by_X_pow_order_of_X_eq_one
File: Mathlib/RingTheory/PowerSeries/Order.lean

Proof steps:
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsDomain R
⊢ divided_by_X_pow_order ⋯ = 1
state_after: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsDomain R
⊢ X * divided_by_X_pow_order ⋯ = X
tactic: rw [← mul_eq_left₀ X_ne_zero]
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsDomain R
⊢ X * divided_by_X_pow_order ⋯ = X
state_after: no goals
tactic: simpa only [order_X, X_ne_zero, PartENat.get_one, pow_one, Ne, not_false_iff] using
    self_eq_X_pow_order_mul_divided_by_X_pow_order (@X_ne_zero R _ _)
Theorem: Mathlib.Tactic.Ring.inv_mul
File: Mathlib/Tactic/Ring/Basic.lean

Proof steps:
state_before: u✝ : Lean.Level
arg : Q(Type u✝)
sα✝ : Q(CommSemiring «$arg»)
u : Lean.Level
α : Q(Type u)
sα : Q(CommSemiring «$α»)
R✝ : Type u_1
inst✝¹ : CommSemiring R✝
a a' a₁✝ a₂✝ a₃✝ b b' b₁✝ b₂ b₃✝ c✝ c₁ c₂ : R✝
R : Type u_2
inst✝ : DivisionRing R
a₁ : R
a₂ : ℕ
a₃ b₁ b₃ c : R
x✝² : a₁⁻¹ = b₁
x✝¹ : a₃⁻¹ = b₃
x✝ : b₃ * (b₁ ^ a₂ * Nat.rawCast 1) = c
⊢ (a₁ ^ a₂ * a₃)⁻¹ = c
state_after: u✝ : Lean.Level
arg : Q(Type u✝)
sα✝ : Q(CommSemiring «$arg»)
u : Lean.Level
α : Q(Type u)
sα : Q(CommSemiring «$α»)
R✝ : Type u_1
inst✝¹ : CommSemiring R✝
a a' a₁✝ a₂✝ a₃✝ b b' b₁ b₂ b₃ c c₁ c₂ : R✝
R : Type u_2
inst✝ : DivisionRing R
a₁ : R
a₂ : ℕ
a₃ : R
⊢ (a₁ ^ a₂ * a₃)⁻¹ = a₃⁻¹ * (a₁⁻¹ ^ a₂ * Nat.rawCast 1)
tactic: subst_vars
state_before: u✝ : Lean.Level
arg : Q(Type u✝)
sα✝ : Q(CommSemiring «$arg»)
u : Lean.Level
α : Q(Type u)
sα : Q(CommSemiring «$α»)
R✝ : Type u_1
inst✝¹ : CommSemiring R✝
a a' a₁✝ a₂✝ a₃✝ b b' b₁ b₂ b₃ c c₁ c₂ : R✝
R : Type u_2
inst✝ : DivisionRing R
a₁ : R
a₂ : ℕ
a₃ : R
⊢ (a₁ ^ a₂ * a₃)⁻¹ = a₃⁻¹ * (a₁⁻¹ ^ a₂ * Nat.rawCast 1)
state_after: no goals
tactic: simp