ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Finsupp.mem_supported'
File: Mathlib/LinearAlgebra/Finsupp.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
s : Set α
p : α →₀ M
⊢ p ∈ supported M R s ↔ ∀ x ∉ s, p x = 0
state_after: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
s : Set α
p : α →₀ M
this : DecidablePred fun x => x ∈ s
⊢ p ∈ supported M R s ↔ ∀ x ∉ s, p x = 0
tactic: haveI := Classical.decPred fun x : α => x ∈ s
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
s : Set α
p : α →₀ M
this : DecidablePred fun x => x ∈ s
⊢ p ∈ supported M R s ↔ ∀ x ∉ s, p x = 0
state_after: no goals
tactic: simp [mem_supported, Set.subset_def, not_imp_comm]
Theorem: Submodule.span_eq_closure
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 s : Set M
⊢ (span R s).toAddSubmonoid = closure (univ • s)
state_after: case refine_1
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 s : Set M
⊢ univ • s ⊆ ↑(span R s).toAddSubmonoid

case refine_2
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 s : Set M
x : M
hx : x ∈ (span R s).toAddSubmonoid
r : R
m : M
hm : m ∈ closure (univ • s)
⊢ ∀ x ∈ univ • s, r • x ∈ closure (univ • s)

case refine_3
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 s : Set M
x : M
hx : x ∈ (span R s).toAddSubmonoid
r : R
m : M
hm : m ∈ closure (univ • s)
⊢ r • 0 ∈ closure (univ • s)

case refine_4
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 s : Set M
x : M
hx : x ∈ (span R s).toAddSubmonoid
r : R
m : M
hm : m ∈ closure (univ • s)
x✝¹ x✝ : M
h : r • x✝¹ ∈ closure (univ • s)
h' : r • x✝ ∈ closure (univ • s)
⊢ r • (x✝¹ + x✝) ∈ closure (univ • s)
tactic: refine le_antisymm
    (fun x hx ↦ span_induction hx (fun x hx ↦ subset_closure ⟨1, trivial, x, hx, one_smul R x⟩)
      (zero_mem _) (fun _ _ ↦ add_mem) fun r m hm ↦ closure_induction hm ?_ ?_ fun _ _ h h' ↦ ?_)
    (closure_le.2 ?_)
Theorem: BoundedContinuousFunction.add_norm_nonneg
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

Proof steps:
state_before: F : Type u_1
α✝ : Type u
β : Type v
γ : Type w
α : Type u_2
inst✝ : TopologicalSpace α
f : α →ᵇ ℝ
⊢ 0 ≤ f + const α ‖f‖
state_after: F : Type u_1
α✝ : Type u
β : Type v
γ : Type w
α : Type u_2
inst✝ : TopologicalSpace α
f : α →ᵇ ℝ
x : α
⊢ (fun f => f.toFun) 0 x ≤ (fun f => f.toFun) (f + const α ‖f‖) x
tactic: intro x
state_before: F : Type u_1
α✝ : Type u
β : Type v
γ : Type w
α : Type u_2
inst✝ : TopologicalSpace α
f : α →ᵇ ℝ
x : α
⊢ (fun f => f.toFun) 0 x ≤ (fun f => f.toFun) (f + const α ‖f‖) x
state_after: F : Type u_1
α✝ : Type u
β : Type v
γ : Type w
α : Type u_2
inst✝ : TopologicalSpace α
f : α →ᵇ ℝ
x : α
⊢ 0 ≤ f x + ‖f‖
tactic: simp only [ContinuousMap.toFun_eq_coe, coe_to_continuous_fun, coe_zero, Pi.zero_apply, coe_add,
    const_toFun, Pi.add_apply]
state_before: F : Type u_1
α✝ : Type u
β : Type v
γ : Type w
α : Type u_2
inst✝ : TopologicalSpace α
f : α →ᵇ ℝ
x : α
⊢ 0 ≤ f x + ‖f‖
state_after: no goals
tactic: linarith [(abs_le.mp (norm_coe_le_norm f x)).1]
Theorem: List.not_mem_range_self
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

Proof steps:
state_before: n : Nat
⊢ ¬n ∈ range n
state_after: no goals
tactic: simp
Theorem: one_le_mul_self_iff
File: Mathlib/Algebra/Order/Monoid/Defs.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrderedCommMonoid α
a : α
h : ¬1 ≤ a
⊢ ¬1 ≤ a * a
state_after: α : Type u_1
β : Type u_2
inst✝ : LinearOrderedCommMonoid α
a : α
h : a < 1
⊢ a * a < 1
tactic: push_neg at h ⊢
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrderedCommMonoid α
a : α
h : a < 1
⊢ a * a < 1
state_after: no goals
tactic: exact mul_lt_one' h h
Theorem: inf_eq_left
File: Mathlib/Order/Lattice.lean

Proof steps:
state_before: α : Type u
β : Type v
inst✝ : SemilatticeInf α
a b c d : α
⊢ a ⊓ b ≤ a ∧ a ≤ a ⊓ b ↔ a ≤ b
state_after: no goals
tactic: simp [le_rfl]
Theorem: Matrix.submatrix_diagonal
File: Mathlib/Data/Matrix/Basic.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : Zero α
inst✝¹ : DecidableEq m
inst✝ : DecidableEq l
d : m → α
e : l → m
he : Function.Injective e
i j : l
⊢ (diagonal d).submatrix e e i j = diagonal (d ∘ e) i j
state_after: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : Zero α
inst✝¹ : DecidableEq m
inst✝ : DecidableEq l
d : m → α
e : l → m
he : Function.Injective e
i j : l
⊢ diagonal d (e i) (e j) = diagonal (d ∘ e) i j
tactic: rw [submatrix_apply]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : Zero α
inst✝¹ : DecidableEq m
inst✝ : DecidableEq l
d : m → α
e : l → m
he : Function.Injective e
i j : l
⊢ diagonal d (e i) (e j) = diagonal (d ∘ e) i j
state_after: case pos
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : Zero α
inst✝¹ : DecidableEq m
inst✝ : DecidableEq l
d : m → α
e : l → m
he : Function.Injective e
i j : l
h : i = j
⊢ diagonal d (e i) (e j) = diagonal (d ∘ e) i j

case neg
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : Zero α
inst✝¹ : DecidableEq m
inst✝ : DecidableEq l
d : m → α
e : l → m
he : Function.Injective e
i j : l
h : ¬i = j
⊢ diagonal d (e i) (e j) = diagonal (d ∘ e) i j
tactic: by_cases h : i = j
Theorem: Polynomial.eval_divByMonic_pow_rootMultiplicity_ne_zero
File: Mathlib/Algebra/Polynomial/Div.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a✝ b : R
n : ℕ
inst✝ : CommRing R
p✝ q p : R[X]
a : R
hp : p ≠ 0
⊢ eval a (p /ₘ (X - C a) ^ rootMultiplicity a p) ≠ 0
state_after: no goals
tactic: classical
  haveI : Nontrivial R := Nontrivial.of_polynomial_ne hp
  rw [Ne, ← IsRoot, ← dvd_iff_isRoot]
  rintro ⟨q, hq⟩
  have := pow_mul_divByMonic_rootMultiplicity_eq p a
  rw [hq, ← mul_assoc, ← pow_succ, rootMultiplicity_eq_multiplicity, dif_neg hp] at this
  exact
    multiplicity.is_greatest'
      (multiplicity_finite_of_degree_pos_of_monic
        (show (0 : WithBot ℕ) < degree (X - C a) by rw [degree_X_sub_C]; decide)
        (monic_X_sub_C _) hp)
      (Nat.lt_succ_self _) (dvd_of_mul_right_eq _ this)
Theorem: SimpleGraph.ComponentCompl.supp_injective
File: Mathlib/Combinatorics/SimpleGraph/Ends/Defs.lean

Proof steps:
state_before: V : Type u
G : SimpleGraph V
K L L' M : Set V
⊢ Function.Injective supp
state_after: V : Type u
G : SimpleGraph V
K L L' M : Set V
⊢ ∀ (v w : ↑Kᶜ),
    supp ((induce Kᶜ G).connectedComponentMk v) = supp ((induce Kᶜ G).connectedComponentMk w) →
      (induce Kᶜ G).connectedComponentMk v = (induce Kᶜ G).connectedComponentMk w
tactic: refine ConnectedComponent.ind₂ ?_
state_before: V : Type u
G : SimpleGraph V
K L L' M : Set V
⊢ ∀ (v w : ↑Kᶜ),
    supp ((induce Kᶜ G).connectedComponentMk v) = supp ((induce Kᶜ G).connectedComponentMk w) →
      (induce Kᶜ G).connectedComponentMk v = (induce Kᶜ G).connectedComponentMk w
state_after: case mk.mk
V : Type u
G : SimpleGraph V
K L L' M : Set V
v : V
hv : v ∈ Kᶜ
w : V
hw : w ∈ Kᶜ
h : supp ((induce Kᶜ G).connectedComponentMk ⟨v, hv⟩) = supp ((induce Kᶜ G).connectedComponentMk ⟨w, hw⟩)
⊢ (induce Kᶜ G).connectedComponentMk ⟨v, hv⟩ = (induce Kᶜ G).connectedComponentMk ⟨w, hw⟩
tactic: rintro ⟨v, hv⟩ ⟨w, hw⟩ h
state_before: case mk.mk
V : Type u
G : SimpleGraph V
K L L' M : Set V
v : V
hv : v ∈ Kᶜ
w : V
hw : w ∈ Kᶜ
h : supp ((induce Kᶜ G).connectedComponentMk ⟨v, hv⟩) = supp ((induce Kᶜ G).connectedComponentMk ⟨w, hw⟩)
⊢ (induce Kᶜ G).connectedComponentMk ⟨v, hv⟩ = (induce Kᶜ G).connectedComponentMk ⟨w, hw⟩
state_after: case mk.mk
V : Type u
G : SimpleGraph V
K L L' M : Set V
v : V
hv : v ∈ Kᶜ
w : V
hw : w ∈ Kᶜ
h :
  ∀ (x : V),
    (∃ (h : x ∉ K), (induce Kᶜ G).Reachable ⟨x, ⋯⟩ ⟨v, hv⟩) ↔ ∃ (h : x ∉ K), (induce Kᶜ G).Reachable ⟨x, ⋯⟩ ⟨w, hw⟩
⊢ (induce Kᶜ G).Reachable ⟨v, hv⟩ ⟨w, hw⟩
tactic: simp only [Set.ext_iff, ConnectedComponent.eq, Set.mem_setOf_eq, ComponentCompl.supp] at h ⊢
state_before: case mk.mk
V : Type u
G : SimpleGraph V
K L L' M : Set V
v : V
hv : v ∈ Kᶜ
w : V
hw : w ∈ Kᶜ
h :
  ∀ (x : V),
    (∃ (h : x ∉ K), (induce Kᶜ G).Reachable ⟨x, ⋯⟩ ⟨v, hv⟩) ↔ ∃ (h : x ∉ K), (induce Kᶜ G).Reachable ⟨x, ⋯⟩ ⟨w, hw⟩
⊢ (induce Kᶜ G).Reachable ⟨v, hv⟩ ⟨w, hw⟩
state_after: no goals
tactic: exact ((h v).mp ⟨hv, Reachable.refl _⟩).choose_spec
Theorem: minpoly.degree_eq_one_iff
File: Mathlib/FieldTheory/Minpoly/Basic.lean

Proof steps:
state_before: A : Type u_1
B : Type u_2
B' : Type u_3
inst✝³ : CommRing A
inst✝² : Ring B
inst✝¹ : Algebra A B
x : B
inst✝ : Nontrivial B
⊢ (minpoly A x).degree = 1 ↔ x ∈ (algebraMap A B).range
state_after: A : Type u_1
B : Type u_2
B' : Type u_3
inst✝³ : CommRing A
inst✝² : Ring B
inst✝¹ : Algebra A B
x : B
inst✝ : Nontrivial B
⊢ x ∈ (algebraMap A B).range → (minpoly A x).degree = 1
tactic: refine ⟨minpoly.mem_range_of_degree_eq_one _ _, ?_⟩
state_before: A : Type u_1
B : Type u_2
B' : Type u_3
inst✝³ : CommRing A
inst✝² : Ring B
inst✝¹ : Algebra A B
x : B
inst✝ : Nontrivial B
⊢ x ∈ (algebraMap A B).range → (minpoly A x).degree = 1
state_after: case intro
A : Type u_1
B : Type u_2
B' : Type u_3
inst✝³ : CommRing A
inst✝² : Ring B
inst✝¹ : Algebra A B
inst✝ : Nontrivial B
x : A
⊢ (minpoly A ((algebraMap A B) x)).degree = 1
tactic: rintro ⟨x, rfl⟩
state_before: case intro
A : Type u_1
B : Type u_2
B' : Type u_3
inst✝³ : CommRing A
inst✝² : Ring B
inst✝¹ : Algebra A B
inst✝ : Nontrivial B
x : A
⊢ (minpoly A ((algebraMap A B) x)).degree = 1
state_after: case intro
A : Type u_1
B : Type u_2
B' : Type u_3
inst✝³ : CommRing A
inst✝² : Ring B
inst✝¹ : Algebra A B
inst✝ : Nontrivial B
x : A
this : Nontrivial A
⊢ (minpoly A ((algebraMap A B) x)).degree = 1
tactic: haveI := Module.nontrivial A B
state_before: case intro
A : Type u_1
B : Type u_2
B' : Type u_3
inst✝³ : CommRing A
inst✝² : Ring B
inst✝¹ : Algebra A B
inst✝ : Nontrivial B
x : A
this : Nontrivial A
⊢ (minpoly A ((algebraMap A B) x)).degree = 1
state_after: no goals
tactic: exact (degree_X_sub_C x ▸ minpoly.min A (algebraMap A B x) (monic_X_sub_C x) (by simp)).antisymm
    (Nat.WithBot.add_one_le_of_lt <| minpoly.degree_pos isIntegral_algebraMap)
Theorem: SimpleGraph.degree_pos_iff_exists_adj
File: Mathlib/Combinatorics/SimpleGraph/Finite.lean

Proof steps:
state_before: V : Type u_1
G : SimpleGraph V
e : Sym2 V
v : V
inst✝ : Fintype ↑(G.neighborSet v)
⊢ 0 < G.degree v ↔ ∃ w, G.Adj v w
state_after: no goals
tactic: simp only [degree, card_pos, Finset.Nonempty, mem_neighborFinset]
Theorem: DirichletCharacter.primitiveCharacter_one
File: Mathlib/NumberTheory/DirichletCharacter/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommMonoidWithZero R
n : ℕ
χ : DirichletCharacter R n
hn : n ≠ 0
⊢ primitiveCharacter 1 = 1
state_after: no goals
tactic: rw [eq_one_iff_conductor_eq_one <| (@conductor_one R _ _ hn) ▸ Nat.one_ne_zero,
      (isPrimitive_def _).1 (1 : DirichletCharacter R n).primitiveCharacter_isPrimitive,
      conductor_one hn]
Theorem: Filter.HasBasis.isVonNBounded_iff
File: Mathlib/Analysis/LocallyConvex/Bounded.lean

Proof steps:
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝³ : SeminormedRing 𝕜
inst✝² : SMul 𝕜 E
inst✝¹ : Zero E
inst✝ : TopologicalSpace E
q : ι → Prop
s : ι → Set E
A : Set E
h : (𝓝 0).HasBasis q s
⊢ IsVonNBounded 𝕜 A ↔ ∀ (i : ι), q i → Absorbs 𝕜 (s i) A
state_after: 𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝³ : SeminormedRing 𝕜
inst✝² : SMul 𝕜 E
inst✝¹ : Zero E
inst✝ : TopologicalSpace E
q : ι → Prop
s : ι → Set E
A : Set E
h : (𝓝 0).HasBasis q s
hA : ∀ (i : ι), q i → Absorbs 𝕜 (s i) A
V : Set E
hV : V ∈ 𝓝 0
⊢ Absorbs 𝕜 V A
tactic: refine ⟨fun hA i hi => hA (h.mem_of_mem hi), fun hA V hV => ?_⟩
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝³ : SeminormedRing 𝕜
inst✝² : SMul 𝕜 E
inst✝¹ : Zero E
inst✝ : TopologicalSpace E
q : ι → Prop
s : ι → Set E
A : Set E
h : (𝓝 0).HasBasis q s
hA : ∀ (i : ι), q i → Absorbs 𝕜 (s i) A
V : Set E
hV : V ∈ 𝓝 0
⊢ Absorbs 𝕜 V A
state_after: case intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝³ : SeminormedRing 𝕜
inst✝² : SMul 𝕜 E
inst✝¹ : Zero E
inst✝ : TopologicalSpace E
q : ι → Prop
s : ι → Set E
A : Set E
h : (𝓝 0).HasBasis q s
hA : ∀ (i : ι), q i → Absorbs 𝕜 (s i) A
V : Set E
hV✝ : V ∈ 𝓝 0
i : ι
hi : q i
hV : s i ⊆ V
⊢ Absorbs 𝕜 V A
tactic: rcases h.mem_iff.mp hV with ⟨i, hi, hV⟩
state_before: case intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝³ : SeminormedRing 𝕜
inst✝² : SMul 𝕜 E
inst✝¹ : Zero E
inst✝ : TopologicalSpace E
q : ι → Prop
s : ι → Set E
A : Set E
h : (𝓝 0).HasBasis q s
hA : ∀ (i : ι), q i → Absorbs 𝕜 (s i) A
V : Set E
hV✝ : V ∈ 𝓝 0
i : ι
hi : q i
hV : s i ⊆ V
⊢ Absorbs 𝕜 V A
state_after: no goals
tactic: exact (hA i hi).mono_left hV
Theorem: HasDerivWithinAt.finset_prod
File: Mathlib/Analysis/Calculus/Deriv/Mul.lean

Proof steps:
state_before: 𝕜 : Type u
inst✝⁹ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
E : Type w
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
G : Type u_1
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
f✝ f₀ f₁ g : 𝕜 → F
f'✝ f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
ι : Type u_2
inst✝² : DecidableEq ι
𝔸' : Type u_3
inst✝¹ : NormedCommRing 𝔸'
inst✝ : NormedAlgebra 𝕜 𝔸'
u : Finset ι
f : ι → 𝕜 → 𝔸'
f' : ι → 𝔸'
hf : ∀ i ∈ u, HasDerivWithinAt (f i) (f' i) s x
⊢ HasDerivWithinAt (fun x => ∏ i ∈ u, f i x) (∑ i ∈ u, (∏ j ∈ u.erase i, f j x) • f' i) s x
state_after: no goals
tactic: simpa [ContinuousLinearMap.sum_apply, ContinuousLinearMap.smul_apply] using
    (HasFDerivWithinAt.finset_prod (fun i hi ↦ (hf i hi).hasFDerivWithinAt)).hasDerivWithinAt
Theorem: Polynomial.toLaurent_X
File: Mathlib/Algebra/Polynomial/Laurent.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
⊢ toLaurent X = T 1
state_after: R : Type u_1
inst✝ : Semiring R
this : X = (monomial 1) 1
⊢ toLaurent X = T 1
tactic: have : (Polynomial.X : R[X]) = monomial 1 1 := by simp [← C_mul_X_pow_eq_monomial]
state_before: R : Type u_1
inst✝ : Semiring R
this : X = (monomial 1) 1
⊢ toLaurent X = T 1
state_after: no goals
tactic: simp [this, Polynomial.toLaurent_C_mul_T]
Theorem: MeasureTheory.average_zero
File: Mathlib/MeasureTheory/Integral/Average.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
m0 : MeasurableSpace α
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : CompleteSpace E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
μ ν : Measure α
s t : Set α
f g : α → E
⊢ ⨍ (x : α), 0 ∂μ = 0
state_after: no goals
tactic: rw [average, integral_zero]
Theorem: RingHom.range_eq_map
File: Mathlib/Algebra/Ring/Subring/Basic.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
inst✝² : Ring R
inst✝¹ : Ring S
inst✝ : Ring T
g : S →+* T
f✝ f : R →+* S
⊢ f.range = Subring.map f ⊤
state_after: case h
R : Type u
S : Type v
T : Type w
inst✝² : Ring R
inst✝¹ : Ring S
inst✝ : Ring T
g : S →+* T
f✝ f : R →+* S
x✝ : S
⊢ x✝ ∈ f.range ↔ x✝ ∈ Subring.map f ⊤
tactic: ext
state_before: case h
R : Type u
S : Type v
T : Type w
inst✝² : Ring R
inst✝¹ : Ring S
inst✝ : Ring T
g : S →+* T
f✝ f : R →+* S
x✝ : S
⊢ x✝ ∈ f.range ↔ x✝ ∈ Subring.map f ⊤
state_after: no goals
tactic: simp
Theorem: Rat.inv_zero
File: .lake/packages/batteries/Batteries/Data/Rat/Lemmas.lean

Proof steps:
state_before: ⊢ Rat.inv 0 = 0
state_after: ⊢ (if h : num 0 < 0 then { num := -↑(den 0), den := (num 0).natAbs, den_nz := ⋯, reduced := ⋯ }
    else if h : num 0 > 0 then { num := ↑(den 0), den := (num 0).natAbs, den_nz := ⋯, reduced := ⋯ } else 0) =
    0
tactic: unfold Rat.inv
state_before: ⊢ (if h : num 0 < 0 then { num := -↑(den 0), den := (num 0).natAbs, den_nz := ⋯, reduced := ⋯ }
    else if h : num 0 > 0 then { num := ↑(den 0), den := (num 0).natAbs, den_nz := ⋯, reduced := ⋯ } else 0) =
    0
state_after: no goals
tactic: rfl
Theorem: Finset.prod_fin_eq_prod_range
File: Mathlib/Data/Fintype/BigOperators.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : CommMonoid β
n : ℕ
c : Fin n → β
⊢ ∏ i : Fin n, c i = ∏ i ∈ range n, if h : i < n then c ⟨i, h⟩ else 1
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : CommMonoid β
n : ℕ
c : Fin n → β
⊢ ∀ x ∈ univ, c x = if h : ↑x < n then c ⟨↑x, h⟩ else 1
tactic: rw [← Fin.prod_univ_eq_prod_range, Finset.prod_congr rfl]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : CommMonoid β
n : ℕ
c : Fin n → β
⊢ ∀ x ∈ univ, c x = if h : ↑x < n then c ⟨↑x, h⟩ else 1
state_after: case mk
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : CommMonoid β
n : ℕ
c : Fin n → β
i : ℕ
hi : i < n
a✝ : ⟨i, hi⟩ ∈ univ
⊢ c ⟨i, hi⟩ = if h : ↑⟨i, hi⟩ < n then c ⟨↑⟨i, hi⟩, h⟩ else 1
tactic: rintro ⟨i, hi⟩ _
state_before: case mk
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : CommMonoid β
n : ℕ
c : Fin n → β
i : ℕ
hi : i < n
a✝ : ⟨i, hi⟩ ∈ univ
⊢ c ⟨i, hi⟩ = if h : ↑⟨i, hi⟩ < n then c ⟨↑⟨i, hi⟩, h⟩ else 1
state_after: no goals
tactic: simp only [hi, dif_pos]
Theorem: NFA.toεNFA_correct
File: Mathlib/Computability/EpsilonNFA.lean

Proof steps:
state_before: α : Type u
σ σ' : Type v
M✝ : εNFA α σ
S : Set σ
x : List α
s : σ
a : α
M : NFA α σ
⊢ M.toεNFA.accepts = M.accepts
state_after: α : Type u
σ σ' : Type v
M✝ : εNFA α σ
S : Set σ
x : List α
s : σ
a : α
M : NFA α σ
⊢ {x | ∃ S ∈ M.toεNFA.accept, S ∈ M.evalFrom M.toεNFA.start x} = M.accepts
tactic: rw [εNFA.accepts, εNFA.eval, toεNFA_evalFrom_match]
state_before: α : Type u
σ σ' : Type v
M✝ : εNFA α σ
S : Set σ
x : List α
s : σ
a : α
M : NFA α σ
⊢ {x | ∃ S ∈ M.toεNFA.accept, S ∈ M.evalFrom M.toεNFA.start x} = M.accepts
state_after: no goals
tactic: rfl
Theorem: Matrix.cons_transpose
File: Mathlib/Data/Matrix/Notation.lean

Proof steps:
state_before: α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
v : n' → α
A : Matrix (Fin m) n' α
⊢ (of (vecCons v A))ᵀ = of fun i => vecCons (v i) (Aᵀ i)
state_after: case a
α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
v : n' → α
A : Matrix (Fin m) n' α
i : n'
j : Fin m.succ
⊢ (of (vecCons v A))ᵀ i j = of (fun i => vecCons (v i) (Aᵀ i)) i j
tactic: ext i j
state_before: case a
α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
v : n' → α
A : Matrix (Fin m) n' α
i : n'
j : Fin m.succ
⊢ (of (vecCons v A))ᵀ i j = of (fun i => vecCons (v i) (Aᵀ i)) i j
state_after: no goals
tactic: refine Fin.cases ?_ ?_ j <;> simp
Theorem: Nat.factorial_mul_pow_le_factorial
File: Mathlib/Data/Nat/Factorial/Basic.lean

Proof steps:
state_before: m✝ n m : ℕ
⊢ m ! * (m + 1) ^ 0 ≤ (m + 0)!
state_after: no goals
tactic: simp
state_before: m✝ n✝ m n : ℕ
⊢ m ! * (m + 1) ^ (n + 1) ≤ (m + (n + 1))!
state_after: m✝ n✝ m n : ℕ
⊢ m ! * (m + 1) ^ n * (m + 1) ≤ (m + n)! * (m + n + 1)
tactic: rw [← Nat.add_assoc, factorial_succ, Nat.mul_comm (_ + 1), Nat.pow_succ, ← Nat.mul_assoc]
state_before: m✝ n✝ m n : ℕ
⊢ m ! * (m + 1) ^ n * (m + 1) ≤ (m + n)! * (m + n + 1)
state_after: no goals
tactic: exact Nat.mul_le_mul factorial_mul_pow_le_factorial (succ_le_succ (le_add_right _ _))
Theorem: Matroid.closure_union_closure_left_eq
File: Mathlib/Data/Matroid/Closure.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
M✝ : Matroid α
F X✝ Y✝ : Set α
e : α
M : Matroid α
X Y : Set α
⊢ M.closure (M.closure X ∪ Y) = M.closure (X ∪ Y)
state_after: no goals
tactic: rw [← closure_closure_union_closure_eq_closure_union, closure_closure,
    closure_closure_union_closure_eq_closure_union]
Theorem: bernsteinPolynomial.sum
File: Mathlib/RingTheory/Polynomial/Bernstein.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommRing R
n : ℕ
⊢ ∑ ν ∈ Finset.range (n + 1), bernsteinPolynomial R n ν = (X + (1 - X)) ^ n
state_after: R : Type u_1
inst✝ : CommRing R
n : ℕ
⊢ ∑ ν ∈ Finset.range (n + 1), bernsteinPolynomial R n ν =
    ∑ m ∈ Finset.range (n + 1), X ^ m * (1 - X) ^ (n - m) * ↑(n.choose m)
tactic: rw [add_pow]
state_before: R : Type u_1
inst✝ : CommRing R
n : ℕ
⊢ ∑ ν ∈ Finset.range (n + 1), bernsteinPolynomial R n ν =
    ∑ m ∈ Finset.range (n + 1), X ^ m * (1 - X) ^ (n - m) * ↑(n.choose m)
state_after: no goals
tactic: simp only [bernsteinPolynomial, mul_comm, mul_assoc, mul_left_comm]
state_before: R : Type u_1
inst✝ : CommRing R
n : ℕ
⊢ (X + (1 - X)) ^ n = 1
state_after: no goals
tactic: simp
Theorem: IsGalois.card_fixingSubgroup_eq_finrank
File: Mathlib/FieldTheory/Galois.lean

Proof steps:
state_before: F : Type u_1
inst✝⁵ : Field F
E : Type u_2
inst✝⁴ : Field E
inst✝³ : Algebra F E
H : Subgroup (E ≃ₐ[F] E)
K : IntermediateField F E
inst✝² : DecidablePred fun x => x ∈ K.fixingSubgroup
inst✝¹ : FiniteDimensional F E
inst✝ : IsGalois F E
⊢ Fintype.card ↥K.fixingSubgroup = finrank (↥K) E
state_after: no goals
tactic: conv_rhs => rw [← fixedField_fixingSubgroup K, IntermediateField.finrank_fixedField_eq_card]
Theorem: AkraBazziRecurrence.T_pos
File: Mathlib/Computability/AkraBazzi/AkraBazzi.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
n : ℕ
⊢ 0 < T n
state_after: no goals
tactic: induction n using Nat.strongInductionOn with
  | ind n h_ind =>
    cases lt_or_le n R.n₀ with
    | inl hn => exact R.T_gt_zero' n hn -- n < R.n₀
    | inr hn => -- R.n₀ ≤ n
      rw [R.h_rec n hn]
      have := R.g_nonneg
      refine add_pos_of_pos_of_nonneg (Finset.sum_pos ?sum_elems univ_nonempty) (by aesop)
      exact fun i _ => mul_pos (R.a_pos i) <| h_ind _ (R.r_lt_n i _ hn)