ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: cauchySeq_iff_tendsto_dist_atTop_0
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

Proof steps:
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝² : PseudoMetricSpace α
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
u : β → α
⊢ CauchySeq u ↔ Tendsto (fun n => dist (u n.1) (u n.2)) atTop (𝓝 0)
state_after: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝² : PseudoMetricSpace α
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
u : β → α
⊢ Tendsto (fun x => dist (Prod.map u u x).1 (Prod.map u u x).2) atTop (𝓝 0) ↔
    Tendsto (fun n => dist (u n.1) (u n.2)) atTop (𝓝 0)
tactic: rw [cauchySeq_iff_tendsto, Metric.uniformity_eq_comap_nhds_zero, tendsto_comap_iff,
    Function.comp_def]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝² : PseudoMetricSpace α
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
u : β → α
⊢ Tendsto (fun x => dist (Prod.map u u x).1 (Prod.map u u x).2) atTop (𝓝 0) ↔
    Tendsto (fun n => dist (u n.1) (u n.2)) atTop (𝓝 0)
state_after: no goals
tactic: simp_rw [Prod.map_fst, Prod.map_snd]
Theorem: Real.rpow_sum_le_const_mul_sum_rpow
File: Mathlib/Analysis/MeanInequalities.lean

Proof steps:
state_before: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hp : 1 ≤ p
⊢ (∑ i ∈ s, |f i|) ^ p ≤ ↑s.card ^ (p - 1) * ∑ i ∈ s, |f i| ^ p
state_after: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hp : 1 ≤ p
this : ↑((∑ i ∈ s, (fun i => ⟨|f i|, ⋯⟩) i) ^ p) ≤ ↑(↑s.card ^ (p - 1) * ∑ i ∈ s, (fun i => ⟨|f i|, ⋯⟩) i ^ p)
⊢ (∑ i ∈ s, |f i|) ^ p ≤ ↑s.card ^ (p - 1) * ∑ i ∈ s, |f i| ^ p
tactic: have :=
    NNReal.coe_le_coe.2
      (NNReal.rpow_sum_le_const_mul_sum_rpow s (fun i => ⟨_, abs_nonneg (f i)⟩) hp)
state_before: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hp : 1 ≤ p
this : ↑((∑ i ∈ s, (fun i => ⟨|f i|, ⋯⟩) i) ^ p) ≤ ↑(↑s.card ^ (p - 1) * ∑ i ∈ s, (fun i => ⟨|f i|, ⋯⟩) i ^ p)
⊢ (∑ i ∈ s, |f i|) ^ p ≤ ↑s.card ^ (p - 1) * ∑ i ∈ s, |f i| ^ p
state_after: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hp : 1 ≤ p
this : (∑ x ∈ s, |f x|) ^ p ≤ ↑s.card ^ (p - 1) * ∑ x ∈ s, |f x| ^ p
⊢ (∑ i ∈ s, |f i|) ^ p ≤ ↑s.card ^ (p - 1) * ∑ i ∈ s, |f i| ^ p
tactic: push_cast at this
state_before: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hp : 1 ≤ p
this : (∑ x ∈ s, |f x|) ^ p ≤ ↑s.card ^ (p - 1) * ∑ x ∈ s, |f x| ^ p
⊢ (∑ i ∈ s, |f i|) ^ p ≤ ↑s.card ^ (p - 1) * ∑ i ∈ s, |f i| ^ p
state_after: no goals
tactic: exact this
Theorem: MeasureTheory.Measure.lintegral_rnDeriv_lt_top_of_measure_ne_top
File: Mathlib/MeasureTheory/Decomposition/Lebesgue.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν✝ ν : Measure α
s : Set α
hs : μ s ≠ ⊤
⊢ ∫⁻ (x : α) in s, μ.rnDeriv ν x ∂ν < ⊤
state_after: case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν✝ ν : Measure α
s : Set α
hs : μ s ≠ ⊤
hl : μ.HaveLebesgueDecomposition ν
⊢ ∫⁻ (x : α) in s, μ.rnDeriv ν x ∂ν < ⊤

case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν✝ ν : Measure α
s : Set α
hs : μ s ≠ ⊤
hl : ¬μ.HaveLebesgueDecomposition ν
⊢ ∫⁻ (x : α) in s, μ.rnDeriv ν x ∂ν < ⊤
tactic: by_cases hl : HaveLebesgueDecomposition μ ν
Theorem: Finset.mem_shadow_iff
File: Mathlib/Combinatorics/SetFamily/Shadow.lean

Proof steps:
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
s t : Finset α
a : α
k r : ℕ
⊢ t ∈ ∂ 𝒜 ↔ ∃ s ∈ 𝒜, ∃ a ∈ s, s.erase a = t
state_after: no goals
tactic: simp only [shadow, mem_sup, mem_image]
Theorem: SubfieldClass.nnratCast_mem
File: Mathlib/Algebra/Field/Subfield.lean

Proof steps:
state_before: K : Type u
L : Type v
M : Type w
inst✝³ : DivisionRing K
inst✝² : DivisionRing L
inst✝¹ : DivisionRing M
S : Type u_1
inst✝ : SetLike S K
h : SubfieldClass S K
x : K
s : S
q : ℚ≥0
⊢ ↑q ∈ s
state_after: no goals
tactic: simpa only [NNRat.cast_def] using div_mem (natCast_mem s q.num) (natCast_mem s q.den)
Theorem: pow_lt_pow_left
File: Mathlib/Algebra/Order/Ring/Basic.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : StrictOrderedSemiring R
a x y : R
n m : ℕ
h : x < y
hx : 0 ≤ x
hn : 0 ≠ 0
⊢ x ^ 0 < y ^ 0
state_after: no goals
tactic: contradiction
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : StrictOrderedSemiring R
a x y : R
n✝ m : ℕ
h : x < y
hx : 0 ≤ x
n : ℕ
x✝ : n + 1 ≠ 0
⊢ x ^ (n + 1) < y ^ (n + 1)
state_after: no goals
tactic: simpa only [pow_succ] using mul_lt_mul_of_le_of_lt_of_nonneg_of_pos
      (pow_le_pow_left hx h.le _) h hx (pow_pos (hx.trans_lt h) _)
Theorem: MeasureTheory.lintegral_add_left
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
g : α → ℝ≥0∞
⊢ ∫⁻ (a : α), f a + g a ∂μ = ∫⁻ (a : α), f a ∂μ + ∫⁻ (a : α), g a ∂μ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
g : α → ℝ≥0∞
⊢ ∫⁻ (a : α), f a + g a ∂μ ≤ ∫⁻ (a : α), f a ∂μ + ∫⁻ (a : α), g a ∂μ
tactic: refine le_antisymm ?_ (le_lintegral_add _ _)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
g : α → ℝ≥0∞
⊢ ∫⁻ (a : α), f a + g a ∂μ ≤ ∫⁻ (a : α), f a ∂μ + ∫⁻ (a : α), g a ∂μ
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
g φ : α → ℝ≥0∞
hφm : Measurable φ
hφ_le : φ ≤ fun a => f a + g a
hφ_eq : ∫⁻ (a : α), f a + g a ∂μ = ∫⁻ (a : α), φ a ∂μ
⊢ ∫⁻ (a : α), f a + g a ∂μ ≤ ∫⁻ (a : α), f a ∂μ + ∫⁻ (a : α), g a ∂μ
tactic: rcases exists_measurable_le_lintegral_eq μ fun a => f a + g a with ⟨φ, hφm, hφ_le, hφ_eq⟩
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
g φ : α → ℝ≥0∞
hφm : Measurable φ
hφ_le : φ ≤ fun a => f a + g a
hφ_eq : ∫⁻ (a : α), f a + g a ∂μ = ∫⁻ (a : α), φ a ∂μ
⊢ ∫⁻ (a : α), f a + g a ∂μ ≤ ∫⁻ (a : α), f a ∂μ + ∫⁻ (a : α), g a ∂μ
state_after: no goals
tactic: calc
    ∫⁻ a, f a + g a ∂μ = ∫⁻ a, φ a ∂μ := hφ_eq
    _ ≤ ∫⁻ a, f a + (φ a - f a) ∂μ := lintegral_mono fun a => le_add_tsub
    _ = ∫⁻ a, f a ∂μ + ∫⁻ a, φ a - f a ∂μ := lintegral_add_aux hf (hφm.sub hf)
    _ ≤ ∫⁻ a, f a ∂μ + ∫⁻ a, g a ∂μ :=
      add_le_add_left (lintegral_mono fun a => tsub_le_iff_left.2 <| hφ_le a) _
Theorem: Metric.exists_isCompact_closedBall
File: Mathlib/Topology/MetricSpace/Pseudo/Lemmas.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : PseudoMetricSpace α
x✝ y z : α
ε ε₁ ε₂ : ℝ
s : Set α
inst✝ : WeaklyLocallyCompactSpace α
x : α
⊢ ∃ r, 0 < r ∧ IsCompact (closedBall x r)
state_after: ι : Type u_1
α : Type u_2
inst✝¹ : PseudoMetricSpace α
x✝ y z : α
ε ε₁ ε₂ : ℝ
s : Set α
inst✝ : WeaklyLocallyCompactSpace α
x : α
this : ∀ᶠ (r : ℝ) in 𝓝[>] 0, IsCompact (closedBall x r)
⊢ ∃ r, 0 < r ∧ IsCompact (closedBall x r)
tactic: have : ∀ᶠ r in 𝓝[>] 0, IsCompact (closedBall x r) :=
    eventually_nhdsWithin_of_eventually_nhds (eventually_isCompact_closedBall x)
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : PseudoMetricSpace α
x✝ y z : α
ε ε₁ ε₂ : ℝ
s : Set α
inst✝ : WeaklyLocallyCompactSpace α
x : α
this : ∀ᶠ (r : ℝ) in 𝓝[>] 0, IsCompact (closedBall x r)
⊢ ∃ r, 0 < r ∧ IsCompact (closedBall x r)
state_after: no goals
tactic: simpa only [and_comm] using (this.and self_mem_nhdsWithin).exists
Theorem: sub_eq_sub_iff_sub_eq_sub
File: Mathlib/Algebra/Group/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : CommGroup G
a b c d : G
⊢ a / b = c / d ↔ a / c = b / d
state_after: no goals
tactic: rw [div_eq_iff_eq_mul, div_mul_eq_mul_div, div_eq_iff_eq_mul', mul_div_assoc]
Theorem: Sigma.ext_iff
File: Mathlib/Data/Sigma/Basic.lean

Proof steps:
state_before: α : Type u_1
α₁ : Type u_2
α₂ : Type u_3
β : α → Type u_4
β₁ : α₁ → Type u_5
β₂ : α₂ → Type u_6
x₀ x₁ : Sigma β
⊢ x₀ = x₁ ↔ x₀.fst = x₁.fst ∧ HEq x₀.snd x₁.snd
state_after: case mk
α : Type u_1
α₁ : Type u_2
α₂ : Type u_3
β : α → Type u_4
β₁ : α₁ → Type u_5
β₂ : α₂ → Type u_6
x₁ : Sigma β
fst✝ : α
snd✝ : β fst✝
⊢ ⟨fst✝, snd✝⟩ = x₁ ↔ ⟨fst✝, snd✝⟩.fst = x₁.fst ∧ HEq ⟨fst✝, snd✝⟩.snd x₁.snd
tactic: cases x₀
state_before: case mk
α : Type u_1
α₁ : Type u_2
α₂ : Type u_3
β : α → Type u_4
β₁ : α₁ → Type u_5
β₂ : α₂ → Type u_6
x₁ : Sigma β
fst✝ : α
snd✝ : β fst✝
⊢ ⟨fst✝, snd✝⟩ = x₁ ↔ ⟨fst✝, snd✝⟩.fst = x₁.fst ∧ HEq ⟨fst✝, snd✝⟩.snd x₁.snd
state_after: case mk.mk
α : Type u_1
α₁ : Type u_2
α₂ : Type u_3
β : α → Type u_4
β₁ : α₁ → Type u_5
β₂ : α₂ → Type u_6
fst✝¹ : α
snd✝¹ : β fst✝¹
fst✝ : α
snd✝ : β fst✝
⊢ ⟨fst✝¹, snd✝¹⟩ = ⟨fst✝, snd✝⟩ ↔ ⟨fst✝¹, snd✝¹⟩.fst = ⟨fst✝, snd✝⟩.fst ∧ HEq ⟨fst✝¹, snd✝¹⟩.snd ⟨fst✝, snd✝⟩.snd
tactic: cases x₁
state_before: case mk.mk
α : Type u_1
α₁ : Type u_2
α₂ : Type u_3
β : α → Type u_4
β₁ : α₁ → Type u_5
β₂ : α₂ → Type u_6
fst✝¹ : α
snd✝¹ : β fst✝¹
fst✝ : α
snd✝ : β fst✝
⊢ ⟨fst✝¹, snd✝¹⟩ = ⟨fst✝, snd✝⟩ ↔ ⟨fst✝¹, snd✝¹⟩.fst = ⟨fst✝, snd✝⟩.fst ∧ HEq ⟨fst✝¹, snd✝¹⟩.snd ⟨fst✝, snd✝⟩.snd
state_after: no goals
tactic: exact Sigma.mk.inj_iff
Theorem: SheafOfModules.freeHomEquiv_freeMap
File: Mathlib/Algebra/Category/ModuleCat/Sheaf/Free.lean

Proof steps:
state_before: C : Type u'
inst✝³ : Category.{v', u'} C
J✝ : GrothendieckTopology C
R : Sheaf J✝ RingCat
inst✝² : HasWeakSheafify J✝ AddCommGrp
inst✝¹ : J✝.WEqualsLocallyBijective AddCommGrp
inst✝ : J✝.HasSheafCompose (forget₂ RingCat AddCommGrp)
I J : Type u
f : I → J
⊢ (free J).freeHomEquiv.symm ((free J).freeHomEquiv (freeMap f)) = (free J).freeHomEquiv.symm (freeSection ∘ f)
state_after: C : Type u'
inst✝³ : Category.{v', u'} C
J✝ : GrothendieckTopology C
R : Sheaf J✝ RingCat
inst✝² : HasWeakSheafify J✝ AddCommGrp
inst✝¹ : J✝.WEqualsLocallyBijective AddCommGrp
inst✝ : J✝.HasSheafCompose (forget₂ RingCat AddCommGrp)
I J : Type u
f : I → J
⊢ freeMap f = (free J).freeHomEquiv.symm (freeSection ∘ f)
tactic: simp
state_before: C : Type u'
inst✝³ : Category.{v', u'} C
J✝ : GrothendieckTopology C
R : Sheaf J✝ RingCat
inst✝² : HasWeakSheafify J✝ AddCommGrp
inst✝¹ : J✝.WEqualsLocallyBijective AddCommGrp
inst✝ : J✝.HasSheafCompose (forget₂ RingCat AddCommGrp)
I J : Type u
f : I → J
⊢ freeMap f = (free J).freeHomEquiv.symm (freeSection ∘ f)
state_after: no goals
tactic: rfl
Theorem: Submodule.iSup_eq_range_dfinsupp_lsum
File: Mathlib/LinearAlgebra/DFinsupp.lean

Proof steps:
state_before: ι : Type u_1
R : Type u_2
S : Type u_3
M : ι → Type u_4
N : Type u_5
inst✝³ : Semiring R
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
inst✝ : DecidableEq ι
p : ι → Submodule R N
⊢ iSup p = LinearMap.range ((lsum ℕ) fun i => (p i).subtype)
state_after: case a
ι : Type u_1
R : Type u_2
S : Type u_3
M : ι → Type u_4
N : Type u_5
inst✝³ : Semiring R
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
inst✝ : DecidableEq ι
p : ι → Submodule R N
⊢ iSup p ≤ LinearMap.range ((lsum ℕ) fun i => (p i).subtype)

case a
ι : Type u_1
R : Type u_2
S : Type u_3
M : ι → Type u_4
N : Type u_5
inst✝³ : Semiring R
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
inst✝ : DecidableEq ι
p : ι → Submodule R N
⊢ LinearMap.range ((lsum ℕ) fun i => (p i).subtype) ≤ iSup p
tactic: apply le_antisymm
Theorem: isClosed_setOf_lipschitzOnWith
File: Mathlib/Topology/Instances/ENNReal.lean

Proof steps:
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α✝
α : Type u_4
β : Type u_5
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
s : Set α
⊢ IsClosed {f | LipschitzOnWith K f s}
state_after: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α✝
α : Type u_4
β : Type u_5
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
s : Set α
⊢ IsClosed (⋂ i ∈ s, ⋂ i_1 ∈ s, {x | edist (x i) (x i_1) ≤ ↑K * edist i i_1})
tactic: simp only [LipschitzOnWith, setOf_forall]
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α✝
α : Type u_4
β : Type u_5
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
s : Set α
⊢ IsClosed (⋂ i ∈ s, ⋂ i_1 ∈ s, {x | edist (x i) (x i_1) ≤ ↑K * edist i i_1})
state_after: case refine_1
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α✝
α : Type u_4
β : Type u_5
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
s : Set α
x : α
x✝¹ : x ∈ s
y : α
x✝ : y ∈ s
⊢ Continuous fun x_1 => edist (x_1 x) (x_1 y)

case refine_2
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α✝
α : Type u_4
β : Type u_5
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
s : Set α
x : α
x✝¹ : x ∈ s
y : α
x✝ : y ∈ s
⊢ Continuous fun x_1 => ↑K * edist x y
tactic: refine isClosed_biInter fun x _ => isClosed_biInter fun y _ => isClosed_le ?_ ?_
state_before: case refine_1
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α✝
α : Type u_4
β : Type u_5
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
s : Set α
x : α
x✝¹ : x ∈ s
y : α
x✝ : y ∈ s
⊢ Continuous fun x_1 => edist (x_1 x) (x_1 y)

case refine_2
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α✝
α : Type u_4
β : Type u_5
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
s : Set α
x : α
x✝¹ : x ∈ s
y : α
x✝ : y ∈ s
⊢ Continuous fun x_1 => ↑K * edist x y
state_after: no goals
tactic: exacts [.edist (continuous_apply x) (continuous_apply y), continuous_const]
Theorem: Nat.frequently_atTop_modEq_one
File: Mathlib/NumberTheory/PrimesCongruentOne.lean

Proof steps:
state_before: k : ℕ
hk0 : k ≠ 0
⊢ ∃ᶠ (p : ℕ) in atTop, Prime p ∧ p ≡ 1 [MOD k]
state_after: k : ℕ
hk0 : k ≠ 0
n : ℕ
⊢ ∃ b ≥ n, Prime b ∧ b ≡ 1 [MOD k]
tactic: refine frequently_atTop.2 fun n => ?_
state_before: k : ℕ
hk0 : k ≠ 0
n : ℕ
⊢ ∃ b ≥ n, Prime b ∧ b ≡ 1 [MOD k]
state_after: case intro
k : ℕ
hk0 : k ≠ 0
n p : ℕ
hp : Prime p ∧ n < p ∧ p ≡ 1 [MOD k]
⊢ ∃ b ≥ n, Prime b ∧ b ≡ 1 [MOD k]
tactic: obtain ⟨p, hp⟩ := exists_prime_gt_modEq_one n hk0
state_before: case intro
k : ℕ
hk0 : k ≠ 0
n p : ℕ
hp : Prime p ∧ n < p ∧ p ≡ 1 [MOD k]
⊢ ∃ b ≥ n, Prime b ∧ b ≡ 1 [MOD k]
state_after: no goals
tactic: exact ⟨p, ⟨hp.2.1.le, hp.1, hp.2.2⟩⟩
Theorem: Finset.not_mem_empty
File: Mathlib/Data/Finset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s : Finset α
a : α
⊢ a ∉ ∅
state_after: no goals
tactic: simp only [mem_def, empty_val, not_mem_zero, not_false_iff]
Theorem: AddCircle.norm_le_half_period
File: Mathlib/Analysis/Normed/Group/AddCircle.lean

Proof steps:
state_before: p : ℝ
x : AddCircle p
hp : p ≠ 0
⊢ ‖x‖ ≤ |p| / 2
state_after: case mk
p : ℝ
x✝ : AddCircle p
hp : p ≠ 0
x : ℝ
⊢ ‖Quot.mk Setoid.r x‖ ≤ |p| / 2
tactic: obtain ⟨x⟩ := x
state_before: case mk
p : ℝ
x✝ : AddCircle p
hp : p ≠ 0
x : ℝ
⊢ ‖Quot.mk Setoid.r x‖ ≤ |p| / 2
state_after: case mk
p : ℝ
x✝ : AddCircle p
hp : p ≠ 0
x : ℝ
⊢ ‖↑x‖ ≤ |p| / 2
tactic: change ‖(x : AddCircle p)‖ ≤ |p| / 2
state_before: case mk
p : ℝ
x✝ : AddCircle p
hp : p ≠ 0
x : ℝ
⊢ ‖↑x‖ ≤ |p| / 2
state_after: case mk
p : ℝ
x✝ : AddCircle p
hp : p ≠ 0
x : ℝ
⊢ |p⁻¹ * x - ↑(round (p⁻¹ * x))| ≤ 1 / 2
tactic: rw [norm_eq, ← mul_le_mul_left (abs_pos.mpr (inv_ne_zero hp)), ← abs_mul, mul_sub, mul_left_comm,
    ← mul_div_assoc, ← abs_mul, inv_mul_cancel hp, mul_one, abs_one]
state_before: case mk
p : ℝ
x✝ : AddCircle p
hp : p ≠ 0
x : ℝ
⊢ |p⁻¹ * x - ↑(round (p⁻¹ * x))| ≤ 1 / 2
state_after: no goals
tactic: exact abs_sub_round (p⁻¹ * x)
Theorem: AddMonoid.Coprod.fst_sum_snd
File: Mathlib/GroupTheory/Coprod/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
inst✝¹ : Monoid M
inst✝ : Monoid N
⊢ fst.prod snd = toProd
state_after: no goals
tactic: ext1 <;> rfl
Theorem: Fin.nat_find_mem_find
File: Mathlib/Data/Fin/Tuple/Basic.lean

Proof steps:
state_before: m n : ℕ
p : Fin n → Prop
inst✝ : DecidablePred p
h : ∃ i, ∃ (hin : i < n), p ⟨i, hin⟩
⊢ ⟨Nat.find h, ⋯⟩ ∈ find p
state_after: m n : ℕ
p : Fin n → Prop
inst✝ : DecidablePred p
h : ∃ i, ∃ (hin : i < n), p ⟨i, hin⟩
i : ℕ
hin : i < n
hi : p ⟨i, hin⟩
⊢ ⟨Nat.find ⋯, ⋯⟩ ∈ find p
tactic: let ⟨i, hin, hi⟩ := h
state_before: m n : ℕ
p : Fin n → Prop
inst✝ : DecidablePred p
h : ∃ i, ∃ (hin : i < n), p ⟨i, hin⟩
i : ℕ
hin : i < n
hi : p ⟨i, hin⟩
⊢ ⟨Nat.find ⋯, ⋯⟩ ∈ find p
state_after: case none
m n : ℕ
p : Fin n → Prop
inst✝ : DecidablePred p
h : ∃ i, ∃ (hin : i < n), p ⟨i, hin⟩
i : ℕ
hin : i < n
hi : p ⟨i, hin⟩
hf : find p = none
⊢ ⟨Nat.find ⋯, ⋯⟩ ∈ none

case some
m n : ℕ
p : Fin n → Prop
inst✝ : DecidablePred p
h : ∃ i, ∃ (hin : i < n), p ⟨i, hin⟩
i : ℕ
hin : i < n
hi : p ⟨i, hin⟩
f : Fin n
hf : find p = some f
⊢ ⟨Nat.find ⋯, ⋯⟩ ∈ some f
tactic: cases' hf : find p with f
Theorem: CategoryTheory.isSheaf_iff_isSheaf_of_type
File: Mathlib/CategoryTheory/Sites/Sheaf.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : GrothendieckTopology C
A : Type u₂
inst✝ : Category.{v₂, u₂} A
P : Cᵒᵖ ⥤ Type w
⊢ Presheaf.IsSheaf J P ↔ Presieve.IsSheaf J P
state_after: case mp
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : GrothendieckTopology C
A : Type u₂
inst✝ : Category.{v₂, u₂} A
P : Cᵒᵖ ⥤ Type w
⊢ Presheaf.IsSheaf J P → Presieve.IsSheaf J P

case mpr
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : GrothendieckTopology C
A : Type u₂
inst✝ : Category.{v₂, u₂} A
P : Cᵒᵖ ⥤ Type w
⊢ Presieve.IsSheaf J P → Presheaf.IsSheaf J P
tactic: constructor
Theorem: csSup_mem_of_not_isSuccLimit'
File: Mathlib/Order/SuccPred/CompleteLinearOrder.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
inst✝ : ConditionallyCompleteLinearOrderBot α
f : ι → α
s : Set α
x : α
hbdd : BddAbove s
hlim : ¬IsSuccLimit (sSup s)
⊢ sSup s ∈ s
state_after: case inl
ι : Type u_1
α : Type u_2
inst✝ : ConditionallyCompleteLinearOrderBot α
f : ι → α
x : α
hbdd : BddAbove ∅
hlim : ¬IsSuccLimit (sSup ∅)
⊢ sSup ∅ ∈ ∅

case inr
ι : Type u_1
α : Type u_2
inst✝ : ConditionallyCompleteLinearOrderBot α
f : ι → α
s : Set α
x : α
hbdd : BddAbove s
hlim : ¬IsSuccLimit (sSup s)
hs : s.Nonempty
⊢ sSup s ∈ s
tactic: obtain (rfl|hs) := s.eq_empty_or_nonempty
Theorem: sInf_image2
File: Mathlib/Order/CompleteLattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f✝ g s✝ t✝ : ι → α
a b : α
f : β → γ → α
s : Set β
t : Set γ
⊢ sInf (image2 f s t) = ⨅ a ∈ s, ⨅ b ∈ t, f a b
state_after: no goals
tactic: rw [← image_prod, sInf_image, biInf_prod]
Theorem: Multiset.prod_X_add_C_coeff'
File: Mathlib/RingTheory/Polynomial/Vieta.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommSemiring R
σ : Type u_2
s : Multiset σ
r : σ → R
k : ℕ
h : k ≤ card s
⊢ (map (fun i => X + C (r i)) s).prod.coeff k = (map r s).esymm (card s - k)
state_after: case h
R : Type u_1
inst✝ : CommSemiring R
σ : Type u_2
s : Multiset σ
r : σ → R
k : ℕ
h : k ≤ card s
⊢ k ≤ card s
tactic: erw [← map_map (fun r => X + C r) r, prod_X_add_C_coeff] <;> rw [s.card_map r]
state_before: case h
R : Type u_1
inst✝ : CommSemiring R
σ : Type u_2
s : Multiset σ
r : σ → R
k : ℕ
h : k ≤ card s
⊢ k ≤ card s
state_after: no goals
tactic: assumption
Theorem: WittVector.mapFun.zsmul
File: Mathlib/RingTheory/WittVector/Basic.lean

Proof steps:
state_before: p : ℕ
R : Type u_1
S : Type u_2
T : Type u_3
hp : Fact (Nat.Prime p)
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : CommRing T
α : Type u_4
β : Type u_5
f : R →+* S
x✝ y : 𝕎 R
z : ℤ
x : 𝕎 R
⊢ mapFun (⇑f) (z • x) = z • mapFun (⇑f) x
state_after: no goals
tactic: map_fun_tac
Theorem: TrivSqZeroExt.inr_mul_inl
File: Mathlib/Algebra/TrivSqZeroExt.lean

Proof steps:
state_before: R : Type u
M : Type v
inst✝³ : Semiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : Module Rᵐᵒᵖ M
r : R
m : M
⊢ 0 •> 0 + m <• r = m <• r
state_after: no goals
tactic: rw [smul_zero, zero_add]
Theorem: CPolynomialOn.fderiv
File: Mathlib/Analysis/Calculus/FDeriv/Analytic.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0∞
n : ℕ
f : E → F
x : E
s : Set E
h : CPolynomialOn 𝕜 f s
⊢ CPolynomialOn 𝕜 (_root_.fderiv 𝕜 f) s
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0∞
n : ℕ
f : E → F
x : E
s : Set E
h : CPolynomialOn 𝕜 f s
y : E
hy : y ∈ s
⊢ CPolynomialAt 𝕜 (_root_.fderiv 𝕜 f) y
tactic: intro y hy
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0∞
n : ℕ
f : E → F
x : E
s : Set E
h : CPolynomialOn 𝕜 f s
y : E
hy : y ∈ s
⊢ CPolynomialAt 𝕜 (_root_.fderiv 𝕜 f) y
state_after: case intro.intro.intro
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0∞
n✝ : ℕ
f : E → F
x : E
s : Set E
h : CPolynomialOn 𝕜 f s
y : E
hy : y ∈ s
p : FormalMultilinearSeries 𝕜 E F
r : ℕ
n : ℝ≥0∞
hp : HasFiniteFPowerSeriesOnBall f p y r n
⊢ CPolynomialAt 𝕜 (_root_.fderiv 𝕜 f) y
tactic: rcases h y hy with ⟨p, r, n, hp⟩
state_before: case intro.intro.intro
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0∞
n✝ : ℕ
f : E → F
x : E
s : Set E
h : CPolynomialOn 𝕜 f s
y : E
hy : y ∈ s
p : FormalMultilinearSeries 𝕜 E F
r : ℕ
n : ℝ≥0∞
hp : HasFiniteFPowerSeriesOnBall f p y r n
⊢ CPolynomialAt 𝕜 (_root_.fderiv 𝕜 f) y
state_after: no goals
tactic: exact hp.fderiv'.cPolynomialAt
Theorem: IsCoprime.map
File: Mathlib/RingTheory/Coprime/Basic.lean

Proof steps:
state_before: R : Type u
inst✝¹ : CommSemiring R
x y z : R
H : IsCoprime x y
S : Type v
inst✝ : CommSemiring S
f : R →+* S
a b : R
h : a * x + b * y = 1
⊢ f a * f x + f b * f y = 1
state_after: no goals
tactic: rw [← f.map_mul, ← f.map_mul, ← f.map_add, h, f.map_one]