1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Function.isPeriodicPt_minimalPeriod
File: Mathlib/Dynamics/PeriodicPts.lean

tactic: delta minimalPeriod
state_before: α : Type u_1
β : Type u_2
f✝ fa : α → α
fb : β → β
x✝ y : α
m n : ℕ
f : α → α
x : α
⊢ IsPeriodicPt f (minimalPeriod f x) x
state_after: α : Type u_1
β : Type u_2
f✝ fa : α → α
fb : β → β
x✝ y : α
m n : ℕ
f : α → α
x : α
⊢ IsPeriodicPt f (if h : x ∈ periodicPts f then Nat.find h else 0) x

tactic: split_ifs with hx
state_before: α : Type u_1
β : Type u_2
f✝ fa : α → α
fb : β → β
x✝ y : α
m n : ℕ
f : α → α
x : α
⊢ IsPeriodicPt f (if h : x ∈ periodicPts f then Nat.find h else 0) x
state_after: case pos
α : Type u_1
β : Type u_2
f✝ fa : α → α
fb : β → β
x✝ y : α
m n : ℕ
f : α → α
x : α
hx : x ∈ periodicPts f
⊢ IsPeriodicPt f (Nat.find hx) x

case neg
α : Type u_1
β : Type u_2
f✝ fa : α → α
fb : β → β
x✝ y : α
m n : ℕ
f : α → α
x : α
hx : x ∉ periodicPts f
⊢ IsPeriodicPt f 0 x

tactic: exact (Nat.find_spec hx).2
state_before: case pos
α : Type u_1
β : Type u_2
f✝ fa : α → α
fb : β → β
x✝ y : α
m n : ℕ
f : α → α
x : α
hx : x ∈ periodicPts f
⊢ IsPeriodicPt f (Nat.find hx) x
state_after: no goals

tactic: exact isPeriodicPt_zero f x
state_before: case neg
α : Type u_1
β : Type u_2
f✝ fa : α → α
fb : β → β
x✝ y : α
m n : ℕ
f : α → α
x : α
hx : x ∉ periodicPts f
⊢ IsPeriodicPt f 0 x
state_after: no goals
Theorem: Int.csInf_mem
File: Mathlib/Data/Int/ConditionallyCompleteOrder.lean

tactic: convert (leastOfBdd _ (Classical.choose_spec h2) h1).2.1
state_before: s : Set ℤ
h1 : s.Nonempty
h2 : BddBelow s
⊢ sInf s ∈ s
state_after: case h.e'_4
s : Set ℤ
h1 : s.Nonempty
h2 : BddBelow s
⊢ sInf s = ↑((Classical.choose h2).leastOfBdd ⋯ h1)

tactic: exact dif_pos ⟨h1, h2⟩
state_before: case h.e'_4
s : Set ℤ
h1 : s.Nonempty
h2 : BddBelow s
⊢ sInf s = ↑((Classical.choose h2).leastOfBdd ⋯ h1)
state_after: no goals
Theorem: Subgroup.mem_center_iff
File: Mathlib/GroupTheory/Subgroup/Center.lean

tactic: rw [← Semigroup.mem_center_iff]
state_before: G : Type u_1
inst✝ : Group G
z : G
⊢ z ∈ center G ↔ ∀ (g : G), g * z = z * g
state_after: G : Type u_1
inst✝ : Group G
z : G
⊢ z ∈ center G ↔ z ∈ Set.center G

tactic: exact Iff.rfl
state_before: G : Type u_1
inst✝ : Group G
z : G
⊢ z ∈ center G ↔ z ∈ Set.center G
state_after: no goals
Theorem: stereographic_neg_apply
File: Mathlib/Geometry/Manifold/Instances/Sphere.lean

tactic: convert stereographic_apply_neg (-v)
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
v✝ : E
v : ↑(sphere 0 1)
⊢ ↑(stereographic ⋯) v = 0
state_after: case h.e'_2.h.e'_6
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
v✝ : E
v : ↑(sphere 0 1)
⊢ v = - -v

tactic: ext1
state_before: case h.e'_2.h.e'_6
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
v✝ : E
v : ↑(sphere 0 1)
⊢ v = - -v
state_after: case h.e'_2.h.e'_6.a
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
v✝ : E
v : ↑(sphere 0 1)
⊢ ↑v = ↑(- -v)

tactic: simp
state_before: case h.e'_2.h.e'_6.a
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
v✝ : E
v : ↑(sphere 0 1)
⊢ ↑v = ↑(- -v)
state_after: no goals
Theorem: Filter.tendsto_zpow_atTop_atTop
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: lift n to ℕ+ using hn
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : LinearOrderedSemifield α
l : Filter β
f : β → α
r c : α
n✝ : ℕ
n : ℤ
hn : 0 < n
⊢ Tendsto (fun x => x ^ n) atTop atTop
state_after: case intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : LinearOrderedSemifield α
l : Filter β
f : β → α
r c : α
n✝ : ℕ
n : ℕ+
⊢ Tendsto (fun x => x ^ ↑↑n) atTop atTop

tactic: simp
state_before: case intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : LinearOrderedSemifield α
l : Filter β
f : β → α
r c : α
n✝ : ℕ
n : ℕ+
⊢ Tendsto (fun x => x ^ ↑↑n) atTop atTop
state_after: no goals
Theorem: Part.div_mem_div
File: Mathlib/Data/Part.lean

tactic: simp [div_def]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Div α
a b : Part α
ma mb : α
ha : ma ∈ a
hb : mb ∈ b
⊢ ma / mb ∈ a / b
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Div α
a b : Part α
ma mb : α
ha : ma ∈ a
hb : mb ∈ b
⊢ ∃ a_1 ∈ a, ∃ a ∈ b, a_1 / a = ma / mb

tactic: aesop
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Div α
a b : Part α
ma mb : α
ha : ma ∈ a
hb : mb ∈ b
⊢ ∃ a_1 ∈ a, ∃ a ∈ b, a_1 / a = ma / mb
state_after: no goals
Theorem: List.next_reverse_eq_prev
File: Mathlib/Data/List/Cycle.lean

tactic: convert (prev_reverse_eq_next l.reverse (nodup_reverse.mpr h) x (mem_reverse.mpr hx)).symm
state_before: α : Type u_1
inst✝ : DecidableEq α
l✝ : List α
x✝ : α
l : List α
h : l.Nodup
x : α
hx : x ∈ l
⊢ l.reverse.next x ⋯ = l.prev x hx
state_after: case h.e'_3.h.e'_3
α : Type u_1
inst✝ : DecidableEq α
l✝ : List α
x✝ : α
l : List α
h : l.Nodup
x : α
hx : x ∈ l
⊢ l = l.reverse.reverse

tactic: exact (reverse_reverse l).symm
state_before: case h.e'_3.h.e'_3
α : Type u_1
inst✝ : DecidableEq α
l✝ : List α
x✝ : α
l : List α
h : l.Nodup
x : α
hx : x ∈ l
⊢ l = l.reverse.reverse
state_after: no goals
Theorem: List.take_one_drop_eq_of_lt_length
File: Mathlib/Data/List/Basic.lean

tactic: rw [drop_eq_get_cons h, take, take]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ l : List α
n : ℕ
h : n < l.length
⊢ take 1 (drop n l) = [l.get ⟨n, h⟩]
state_after: no goals
Theorem: ContinuousLinearEquiv.comp_right_hasFDerivAt_iff
File: Mathlib/Analysis/Calculus/FDeriv/Equiv.lean

tactic: simp only [← hasFDerivWithinAt_univ, ← comp_right_hasFDerivWithinAt_iff, preimage_univ]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f'✝ f₀' f₁' g' e : E →L[𝕜] F
x✝ : E
s t : Set E
L L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
f : F → G
x : E
f' : F →L[𝕜] G
⊢ HasFDerivAt (f ∘ ⇑iso) (f'.comp ↑iso) x ↔ HasFDerivAt f f' (iso x)
state_after: no goals
Theorem: intervalIntegral.integral_comp_mul_deriv'
File: Mathlib/MeasureTheory/Integral/FundThmCalculus.lean

tactic: simpa [mul_comm] using integral_comp_smul_deriv' h h' hg
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
f✝¹ : ℝ → E
g' g✝ φ : ℝ → ℝ
a b : ℝ
inst✝ : CompleteSpace E
f✝ f'✝ : ℝ → E
f f' g : ℝ → ℝ
h : ∀ x ∈ [[a, b]], HasDerivAt f (f' x) x
h' : ContinuousOn f' [[a, b]]
hg : ContinuousOn g (f '' [[a, b]])
⊢ ∫ (x : ℝ) in a..b, (g ∘ f) x * f' x = ∫ (x : ℝ) in f a..f b, g x
state_after: no goals
Theorem: ForInStep.bindList_cons'
File: .lake/packages/batteries/Batteries/Control/ForInStep/Lemmas.lean

tactic: simp
state_before: m : Type u_1 → Type u_2
α : Type u_3
β : Type u_1
inst✝¹ : Monad m
inst✝ : LawfulMonad m
f : α → β → m (ForInStep β)
s : ForInStep β
a : α
l : List α
⊢ bindList f (a :: l) s = do
    let x ← s.bind (f a)
    bindList f l x
state_after: no goals
Theorem: Filter.hasBasis_cocardinal
File: Mathlib/Order/Filter/Cocardinal.lean

tactic: have : #↑sᶜ < c := by
  apply lt_of_le_of_lt _ htf
  rw [compl_subset_comm] at hts
  apply Cardinal.mk_le_mk_of_subset hts
state_before: ι α β : Type u
c : Cardinal.{u}
hreg : c.IsRegular
l : Filter α
s : Set α
x✝ : ∃ i, {s | #↑s < c} i ∧ iᶜ ⊆ s
_t : Set α
htf : {s | #↑s < c} _t
hts : _tᶜ ⊆ s
⊢ s ∈ cocardinal α hreg
state_after: ι α β : Type u
c : Cardinal.{u}
hreg : c.IsRegular
l : Filter α
s : Set α
x✝ : ∃ i, {s | #↑s < c} i ∧ iᶜ ⊆ s
_t : Set α
htf : {s | #↑s < c} _t
hts : _tᶜ ⊆ s
this : #↑sᶜ < c
⊢ s ∈ cocardinal α hreg

tactic: simp_all only [mem_cocardinal]
state_before: ι α β : Type u
c : Cardinal.{u}
hreg : c.IsRegular
l : Filter α
s : Set α
x✝ : ∃ i, {s | #↑s < c} i ∧ iᶜ ⊆ s
_t : Set α
htf : {s | #↑s < c} _t
hts : _tᶜ ⊆ s
this : #↑sᶜ < c
⊢ s ∈ cocardinal α hreg
state_after: no goals

tactic: apply lt_of_le_of_lt _ htf
state_before: ι α β : Type u
c : Cardinal.{u}
hreg : c.IsRegular
l : Filter α
s : Set α
x✝ : ∃ i, {s | #↑s < c} i ∧ iᶜ ⊆ s
_t : Set α
htf : {s | #↑s < c} _t
hts : _tᶜ ⊆ s
⊢ #↑sᶜ < c
state_after: ι α β : Type u
c : Cardinal.{u}
hreg : c.IsRegular
l : Filter α
s : Set α
x✝ : ∃ i, {s | #↑s < c} i ∧ iᶜ ⊆ s
_t : Set α
htf : {s | #↑s < c} _t
hts : _tᶜ ⊆ s
⊢ #↑sᶜ ≤ #↑_t

tactic: rw [compl_subset_comm] at hts
state_before: ι α β : Type u
c : Cardinal.{u}
hreg : c.IsRegular
l : Filter α
s : Set α
x✝ : ∃ i, {s | #↑s < c} i ∧ iᶜ ⊆ s
_t : Set α
htf : {s | #↑s < c} _t
hts : _tᶜ ⊆ s
⊢ #↑sᶜ ≤ #↑_t
state_after: ι α β : Type u
c : Cardinal.{u}
hreg : c.IsRegular
l : Filter α
s : Set α
x✝ : ∃ i, {s | #↑s < c} i ∧ iᶜ ⊆ s
_t : Set α
htf : {s | #↑s < c} _t
hts : sᶜ ⊆ _t
⊢ #↑sᶜ ≤ #↑_t

tactic: apply Cardinal.mk_le_mk_of_subset hts
state_before: ι α β : Type u
c : Cardinal.{u}
hreg : c.IsRegular
l : Filter α
s : Set α
x✝ : ∃ i, {s | #↑s < c} i ∧ iᶜ ⊆ s
_t : Set α
htf : {s | #↑s < c} _t
hts : sᶜ ⊆ _t
⊢ #↑sᶜ ≤ #↑_t
state_after: no goals
Theorem: Set.prod_eq_seq
File: Mathlib/Data/Set/Lattice.lean

tactic: rw [seq_eq_image2, image2_image_left, image2_mk_eq_prod]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set α
t : Set β
⊢ s ×ˢ t = (Prod.mk '' s).seq t
state_after: no goals
Theorem: bihimp_top
File: Mathlib/Order/SymmDiff.lean

tactic: rw [bihimp, himp_top, top_himp, inf_top_eq]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : GeneralizedHeytingAlgebra α
a b c d : α
⊢ a ⇔ ⊤ = a
state_after: no goals
Theorem: iteratedFDeriv_const_smul_apply
File: Mathlib/Analysis/Calculus/ContDiff/Basic.lean

tactic: simp_rw [← contDiffOn_univ, ← iteratedFDerivWithin_univ] at *
state_before: 𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
i : ℕ
a : R
x : E
hf : ContDiff 𝕜 (↑i) f
⊢ iteratedFDeriv 𝕜 i (a • f) x = a • iteratedFDeriv 𝕜 i f x
state_after: 𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
i : ℕ
a : R
x : E
hf : ContDiffOn 𝕜 (↑i) f univ
⊢ iteratedFDerivWithin 𝕜 i (a • f) univ x = a • iteratedFDerivWithin 𝕜 i f univ x

tactic: exact iteratedFDerivWithin_const_smul_apply hf uniqueDiffOn_univ (Set.mem_univ _)
state_before: 𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
i : ℕ
a : R
x : E
hf : ContDiffOn 𝕜 (↑i) f univ
⊢ iteratedFDerivWithin 𝕜 i (a • f) univ x = a • iteratedFDerivWithin 𝕜 i f univ x
state_after: no goals
Theorem: Set.Finite.subset
File: Mathlib/Data/Set/Finite.lean

tactic: have := hs.to_subtype
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s : Set α
hs : s.Finite
t : Set α
ht : t ⊆ s
⊢ t.Finite
state_after: α : Type u
β : Type v
ι : Sort w
γ : Type x
s : Set α
hs : s.Finite
t : Set α
ht : t ⊆ s
this : Finite ↑s
⊢ t.Finite

tactic: exact Finite.Set.subset _ ht
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s : Set α
hs : s.Finite
t : Set α
ht : t ⊆ s
this : Finite ↑s
⊢ t.Finite
state_after: no goals
Theorem: WittVector.bind₁_onePoly_wittPolynomial
File: Mathlib/RingTheory/WittVector/IsPoly.lean

tactic: rw [wittPolynomial_eq_sum_C_mul_X_pow, AlgHom.map_sum, Finset.sum_eq_single 0]
state_before: p : ℕ
R S : Type u
σ : Type u_1
idx : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
hp : Fact (Nat.Prime p)
n : ℕ
⊢ (bind₁ onePoly) (wittPolynomial p ℤ n) = 1
state_after: p : ℕ
R S : Type u
σ : Type u_1
idx : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
hp : Fact (Nat.Prime p)
n : ℕ
⊢ (bind₁ onePoly) (C (↑p ^ 0) * X 0 ^ p ^ (n - 0)) = 1

case h₀
p : ℕ
R S : Type u
σ : Type u_1
idx : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
hp : Fact (Nat.Prime p)
n : ℕ
⊢ ∀ b ∈ Finset.range (n + 1), b ≠ 0 → (bind₁ onePoly) (C (↑p ^ b) * X b ^ p ^ (n - b)) = 0

case h₁
p : ℕ
R S : Type u
σ : Type u_1
idx : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
hp : Fact (Nat.Prime p)
n : ℕ
⊢ 0 ∉ Finset.range (n + 1) → (bind₁ onePoly) (C (↑p ^ 0) * X 0 ^ p ^ (n - 0)) = 0

tactic: simp only [onePoly, one_pow, one_mul, AlgHom.map_pow, C_1, pow_zero, bind₁_X_right, if_true,
  eq_self_iff_true]
state_before: p : ℕ
R S : Type u
σ : Type u_1
idx : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
hp : Fact (Nat.Prime p)
n : ℕ
⊢ (bind₁ onePoly) (C (↑p ^ 0) * X 0 ^ p ^ (n - 0)) = 1
state_after: no goals

tactic: intro i _hi hi0
state_before: case h₀
p : ℕ
R S : Type u
σ : Type u_1
idx : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
hp : Fact (Nat.Prime p)
n : ℕ
⊢ ∀ b ∈ Finset.range (n + 1), b ≠ 0 → (bind₁ onePoly) (C (↑p ^ b) * X b ^ p ^ (n - b)) = 0
state_after: case h₀
p : ℕ
R S : Type u
σ : Type u_1
idx : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
hp : Fact (Nat.Prime p)
n i : ℕ
_hi : i ∈ Finset.range (n + 1)
hi0 : i ≠ 0
⊢ (bind₁ onePoly) (C (↑p ^ i) * X i ^ p ^ (n - i)) = 0

tactic: simp only [onePoly, if_neg hi0, zero_pow (pow_ne_zero _ hp.1.ne_zero), mul_zero,
  AlgHom.map_pow, bind₁_X_right, AlgHom.map_mul]
state_before: case h₀
p : ℕ
R S : Type u
σ : Type u_1
idx : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
hp : Fact (Nat.Prime p)
n i : ℕ
_hi : i ∈ Finset.range (n + 1)
hi0 : i ≠ 0
⊢ (bind₁ onePoly) (C (↑p ^ i) * X i ^ p ^ (n - i)) = 0
state_after: no goals

tactic: simp
state_before: case h₁
p : ℕ
R S : Type u
σ : Type u_1
idx : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
hp : Fact (Nat.Prime p)
n : ℕ
⊢ 0 ∉ Finset.range (n + 1) → (bind₁ onePoly) (C (↑p ^ 0) * X 0 ^ p ^ (n - 0)) = 0
state_after: no goals
Theorem: Lagrange.degree_interpolate_le
File: Mathlib/LinearAlgebra/Lagrange.lean

tactic: refine (degree_sum_le _ _).trans ?_
state_before: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
⊢ ((interpolate s v) r).degree ≤ ↑(s.card - 1)
state_after: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
⊢ (s.sup fun b => (C (r b) * Lagrange.basis s v b).degree) ≤ ↑(s.card - 1)

tactic: rw [Finset.sup_le_iff]
state_before: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
⊢ (s.sup fun b => (C (r b) * Lagrange.basis s v b).degree) ≤ ↑(s.card - 1)
state_after: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
⊢ ∀ b ∈ s, (C (r b) * Lagrange.basis s v b).degree ≤ ↑(s.card - 1)

tactic: intro i hi
state_before: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
⊢ ∀ b ∈ s, (C (r b) * Lagrange.basis s v b).degree ≤ ↑(s.card - 1)
state_after: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i✝ j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
i : ι
hi : i ∈ s
⊢ (C (r i) * Lagrange.basis s v i).degree ≤ ↑(s.card - 1)

tactic: rw [degree_mul, degree_basis hvs hi]
state_before: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i✝ j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
i : ι
hi : i ∈ s
⊢ (C (r i) * Lagrange.basis s v i).degree ≤ ↑(s.card - 1)
state_after: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i✝ j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
i : ι
hi : i ∈ s
⊢ (C (r i)).degree + ↑(s.card - 1) ≤ ↑(s.card - 1)

tactic: by_cases hr : r i = 0
state_before: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i✝ j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
i : ι
hi : i ∈ s
⊢ (C (r i)).degree + ↑(s.card - 1) ≤ ↑(s.card - 1)
state_after: case pos
F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i✝ j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
i : ι
hi : i ∈ s
hr : r i = 0
⊢ (C (r i)).degree + ↑(s.card - 1) ≤ ↑(s.card - 1)

case neg
F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i✝ j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
i : ι
hi : i ∈ s
hr : ¬r i = 0
⊢ (C (r i)).degree + ↑(s.card - 1) ≤ ↑(s.card - 1)

tactic: simpa only [hr, map_zero, degree_zero, WithBot.bot_add] using bot_le
state_before: case pos
F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i✝ j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
i : ι
hi : i ∈ s
hr : r i = 0
⊢ (C (r i)).degree + ↑(s.card - 1) ≤ ↑(s.card - 1)
state_after: no goals

tactic: rw [degree_C hr, zero_add]
state_before: case neg
F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i✝ j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
i : ι
hi : i ∈ s
hr : ¬r i = 0
⊢ (C (r i)).degree + ↑(s.card - 1) ≤ ↑(s.card - 1)
state_after: no goals
Theorem: Nat.mod_two_ne_one
File: Mathlib/Data/Nat/Defs.lean

tactic: cases' mod_two_eq_zero_or_one n with h h <;> simp [h]
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ ¬n % 2 = 1 ↔ n % 2 = 0
state_after: no goals
Theorem: div_pos
File: Mathlib/Algebra/Order/Field/Defs.lean

tactic: rw [div_eq_mul_inv]
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
a b : α
ha : 0 < a
hb : 0 < b
⊢ 0 < a / b
state_after: α : Type u_1
inst✝ : LinearOrderedSemifield α
a b : α
ha : 0 < a
hb : 0 < b
⊢ 0 < a * b⁻¹

tactic: exact mul_pos ha (inv_pos.2 hb)
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
a b : α
ha : 0 < a
hb : 0 < b
⊢ 0 < a * b⁻¹
state_after: no goals
Theorem: MeasureTheory.snorm_eq_zero_and_zero_of_ae_le_mul_neg
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

tactic: simp_rw [le_mul_iff_eq_zero_of_nonneg_of_neg_of_nonneg (norm_nonneg _) hc (norm_nonneg _),
  norm_eq_zero, eventually_and] at h
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
g : α → G
c : ℝ
h : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c * ‖g x‖
hc : c < 0
p : ℝ≥0∞
⊢ snorm f p μ = 0 ∧ snorm g p μ = 0
state_after: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
g : α → G
c : ℝ
hc : c < 0
p : ℝ≥0∞
h : (∀ᵐ (x : α) ∂μ, f x = 0) ∧ ∀ᵐ (x : α) ∂μ, g x = 0
⊢ snorm f p μ = 0 ∧ snorm g p μ = 0

tactic: change f =ᵐ[μ] 0 ∧ g =ᵐ[μ] 0 at h
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
g : α → G
c : ℝ
hc : c < 0
p : ℝ≥0∞
h : (∀ᵐ (x : α) ∂μ, f x = 0) ∧ ∀ᵐ (x : α) ∂μ, g x = 0
⊢ snorm f p μ = 0 ∧ snorm g p μ = 0
state_after: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
g : α → G
c : ℝ
hc : c < 0
p : ℝ≥0∞
h : f =ᶠ[ae μ] 0 ∧ g =ᶠ[ae μ] 0
⊢ snorm f p μ = 0 ∧ snorm g p μ = 0

tactic: simp [snorm_congr_ae h.1, snorm_congr_ae h.2]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
g : α → G
c : ℝ
hc : c < 0
p : ℝ≥0∞
h : f =ᶠ[ae μ] 0 ∧ g =ᶠ[ae μ] 0
⊢ snorm f p μ = 0 ∧ snorm g p μ = 0
state_after: no goals
Theorem: PadicInt.norm_intCast_eq_padic_norm
File: Mathlib/NumberTheory/Padics/PadicIntegers.lean

tactic: simp [norm_def]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
z : ℤ
⊢ ‖↑z‖ = ‖↑z‖
state_after: no goals
Theorem: ClosedEmbedding.closed_iff_preimage_closed
File: Mathlib/Topology/Maps.lean

tactic: rw [hf.closed_iff_image_closed, image_preimage_eq_of_subset hs]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
ι : Type u_4
f : X → Y
g : Y → Z
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
hf : ClosedEmbedding f
s : Set Y
hs : s ⊆ range f
⊢ IsClosed s ↔ IsClosed (f ⁻¹' s)
state_after: no goals
Theorem: sign_mul_abs
File: Mathlib/Data/Sign.lean

tactic: rcases lt_trichotomy x 0 with hx | rfl | hx <;> simp [*, abs_of_pos, abs_of_neg]
state_before: α : Type u_1
inst✝ : LinearOrderedRing α
a b x : α
⊢ ↑(sign x) * |x| = x
state_after: no goals