1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: AddSubgroup.norm_normedMk
File: Mathlib/Analysis/Normed/Group/Quotient.lean

tactic: refine le_antisymm (norm_normedMk_le S) ?_
state_before: M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
h : ↑S.topologicalClosure ≠ univ
⊢ ‖S.normedMk‖ = 1
state_after: M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
h : ↑S.topologicalClosure ≠ univ
⊢ 1 ≤ ‖S.normedMk‖

tactic: obtain ⟨x, hx⟩ : ∃ x : M, 0 < ‖(x : M ⧸ S)‖ := by
  refine (Set.nonempty_compl.2 h).imp fun x hx ↦ ?_
  exact (norm_nonneg _).lt_of_ne' <| mt (quotient_norm_eq_zero_iff S x).1 hx
state_before: M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
h : ↑S.topologicalClosure ≠ univ
⊢ 1 ≤ ‖S.normedMk‖
state_after: case intro
M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
h : ↑S.topologicalClosure ≠ univ
x : M
hx : 0 < ‖↑x‖
⊢ 1 ≤ ‖S.normedMk‖

tactic: refine (le_mul_iff_one_le_left hx).1 ?_
state_before: case intro
M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
h : ↑S.topologicalClosure ≠ univ
x : M
hx : 0 < ‖↑x‖
⊢ 1 ≤ ‖S.normedMk‖
state_after: case intro
M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
h : ↑S.topologicalClosure ≠ univ
x : M
hx : 0 < ‖↑x‖
⊢ ‖↑x‖ ≤ ‖S.normedMk‖ * ‖↑x‖

tactic: exact norm_lift_apply_le S.normedMk (fun x ↦ (eq_zero_iff x).2) x
state_before: case intro
M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
h : ↑S.topologicalClosure ≠ univ
x : M
hx : 0 < ‖↑x‖
⊢ ‖↑x‖ ≤ ‖S.normedMk‖ * ‖↑x‖
state_after: no goals

tactic: refine (Set.nonempty_compl.2 h).imp fun x hx ↦ ?_
state_before: M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
h : ↑S.topologicalClosure ≠ univ
⊢ ∃ x, 0 < ‖↑x‖
state_after: M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
h : ↑S.topologicalClosure ≠ univ
x : M
hx : x ∈ (↑S.topologicalClosure)ᶜ
⊢ 0 < ‖↑x‖

tactic: exact (norm_nonneg _).lt_of_ne' <| mt (quotient_norm_eq_zero_iff S x).1 hx
state_before: M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
h : ↑S.topologicalClosure ≠ univ
x : M
hx : x ∈ (↑S.topologicalClosure)ᶜ
⊢ 0 < ‖↑x‖
state_after: no goals
Theorem: List.self_mem_range_succ
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp
state_before: n : Nat
⊢ n ∈ range (n + 1)
state_after: no goals
Theorem: PartENat.lt_coe_iff
File: Mathlib/Data/Nat/PartENat.lean

tactic: simp only [lt_def, forall_prop_of_true, get_natCast', dom_natCast]
state_before: x : PartENat
n : ℕ
⊢ x < ↑n ↔ ∃ (h : x.Dom), x.get h < n
state_after: no goals
Theorem: HurwitzZeta.differentiable_hurwitzZeta_sub_hurwitzZeta
File: Mathlib/NumberTheory/LSeries/HurwitzZeta.lean

tactic: simp only [hurwitzZeta, add_sub_add_comm]
state_before: a b : UnitAddCircle
⊢ Differentiable ℂ fun s => hurwitzZeta a s - hurwitzZeta b s
state_after: a b : UnitAddCircle
⊢ Differentiable ℂ fun s => hurwitzZetaEven a s - hurwitzZetaEven b s + (hurwitzZetaOdd a s - hurwitzZetaOdd b s)

tactic: refine (differentiable_hurwitzZetaEven_sub_hurwitzZetaEven a b).add (Differentiable.sub ?_ ?_)
state_before: a b : UnitAddCircle
⊢ Differentiable ℂ fun s => hurwitzZetaEven a s - hurwitzZetaEven b s + (hurwitzZetaOdd a s - hurwitzZetaOdd b s)
state_after: case refine_1
a b : UnitAddCircle
⊢ Differentiable ℂ (hurwitzZetaOdd a)

case refine_2
a b : UnitAddCircle
⊢ Differentiable ℂ (hurwitzZetaOdd b)

tactic: all_goals apply differentiable_hurwitzZetaOdd
state_before: case refine_1
a b : UnitAddCircle
⊢ Differentiable ℂ (hurwitzZetaOdd a)

case refine_2
a b : UnitAddCircle
⊢ Differentiable ℂ (hurwitzZetaOdd b)
state_after: no goals

tactic: apply differentiable_hurwitzZetaOdd
state_before: case refine_2
a b : UnitAddCircle
⊢ Differentiable ℂ (hurwitzZetaOdd b)
state_after: no goals
Theorem: MvPolynomial.optionEquivRight_C
File: Mathlib/Algebra/MvPolynomial/Equiv.lean

tactic: simp only [optionEquivRight_apply, aeval_C, algebraMap_apply, Polynomial.algebraMap_eq]
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
r : R
⊢ (optionEquivRight R S₁) (C r) = C (Polynomial.C r)
state_after: no goals
Theorem: CategoryTheory.cancel_mono_id
File: Mathlib/CategoryTheory/Category/Basic.lean

tactic: convert cancel_mono f
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : C
f : X ⟶ Y
inst✝ : Mono f
g : X ⟶ X
⊢ g ≫ f = f ↔ g = 𝟙 X
state_after: case h.e'_1.h.e'_3.h
C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : C
f : X ⟶ Y
inst✝ : Mono f
g : X ⟶ X
⊢ f = 𝟙 X ≫ f

tactic: simp
state_before: case h.e'_1.h.e'_3.h
C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : C
f : X ⟶ Y
inst✝ : Mono f
g : X ⟶ X
⊢ f = 𝟙 X ≫ f
state_after: no goals
Theorem: List.Nodup.getElem_inj_iff
File: Mathlib/Data/List/Nodup.lean

tactic: have := @Nodup.get_inj_iff _ _ h ⟨i, hi⟩ ⟨j, hj⟩
state_before: α : Type u
β : Type v
l✝ l₁ l₂ : List α
r : α → α → Prop
a b : α
l : List α
h : l.Nodup
i : ℕ
hi : i < l.length
j : ℕ
hj : j < l.length
⊢ l[i] = l[j] ↔ i = j
state_after: α : Type u
β : Type v
l✝ l₁ l₂ : List α
r : α → α → Prop
a b : α
l : List α
h : l.Nodup
i : ℕ
hi : i < l.length
j : ℕ
hj : j < l.length
this : l.get ⟨i, hi⟩ = l.get ⟨j, hj⟩ ↔ ⟨i, hi⟩ = ⟨j, hj⟩
⊢ l[i] = l[j] ↔ i = j

tactic: simpa
state_before: α : Type u
β : Type v
l✝ l₁ l₂ : List α
r : α → α → Prop
a b : α
l : List α
h : l.Nodup
i : ℕ
hi : i < l.length
j : ℕ
hj : j < l.length
this : l.get ⟨i, hi⟩ = l.get ⟨j, hj⟩ ↔ ⟨i, hi⟩ = ⟨j, hj⟩
⊢ l[i] = l[j] ↔ i = j
state_after: no goals
Theorem: AffineSubspace.direction_inf_of_mem
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: ext v
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s₁ s₂ : AffineSubspace k P
p : P
h₁ : p ∈ s₁
h₂ : p ∈ s₂
⊢ (s₁ ⊓ s₂).direction = s₁.direction ⊓ s₂.direction
state_after: case h
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s₁ s₂ : AffineSubspace k P
p : P
h₁ : p ∈ s₁
h₂ : p ∈ s₂
v : V
⊢ v ∈ (s₁ ⊓ s₂).direction ↔ v ∈ s₁.direction ⊓ s₂.direction

tactic: rw [Submodule.mem_inf, ← vadd_mem_iff_mem_direction v h₁, ← vadd_mem_iff_mem_direction v h₂, ←
  vadd_mem_iff_mem_direction v ((mem_inf_iff p s₁ s₂).2 ⟨h₁, h₂⟩), mem_inf_iff]
state_before: case h
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s₁ s₂ : AffineSubspace k P
p : P
h₁ : p ∈ s₁
h₂ : p ∈ s₂
v : V
⊢ v ∈ (s₁ ⊓ s₂).direction ↔ v ∈ s₁.direction ⊓ s₂.direction
state_after: no goals
Theorem: Metric.cthickening_union
File: Mathlib/Topology/MetricSpace/Thickening.lean

tactic: simp_rw [cthickening, infEdist_union, inf_eq_min, min_le_iff, setOf_or]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε : ℝ
s✝ t✝ : Set α
x : α
δ : ℝ
s t : Set α
⊢ cthickening δ (s ∪ t) = cthickening δ s ∪ cthickening δ t
state_after: no goals
Theorem: MeasureTheory.Memℒp.snorm_mk_lt_top
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: simp [hfp.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
α : Type u_5
E : Type u_6
inst✝¹ : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
f : α → E
hfp : Memℒp f p μ
⊢ snorm (↑(AEEqFun.mk f ⋯)) p μ < ⊤
state_after: no goals
Theorem: CategoryTheory.Limits.WalkingParallelPairHom.id.sizeOf_spec'
File: Mathlib/CategoryTheory/Limits/Shapes/Equalizers.lean

tactic: cases X <;> rfl
state_before: X : WalkingParallelPair
⊢ sizeOf (𝟙 X) = 1 + sizeOf X
state_after: no goals
Theorem: BooleanRing.le_sup_inf_aux
File: Mathlib/Algebra/Ring/BooleanRing.lean

tactic: ring
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : BooleanRing α
inst✝¹ : BooleanRing β
inst✝ : BooleanRing γ
a b c : α
⊢ (a + b + a * b) * (a + c + a * c) =
    a * a + b * c + a * (b * c) + (a * b + a * a * b) + (a * c + a * a * c) + (a * b * c + a * a * b * c)
state_after: no goals

tactic: simp only [mul_self, add_self, add_zero]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : BooleanRing α
inst✝¹ : BooleanRing β
inst✝ : BooleanRing γ
a b c : α
⊢ a * a + b * c + a * (b * c) + (a * b + a * a * b) + (a * c + a * a * c) + (a * b * c + a * a * b * c) =
    a + b * c + a * (b * c)
state_after: no goals
Theorem: UpperHalfPlane.tanh_half_dist
File: Mathlib/Analysis/Complex/UpperHalfPlane/Metric.lean

tactic: rw [tanh_eq_sinh_div_cosh, sinh_half_dist, cosh_half_dist, div_div_div_comm, div_self, div_one]
state_before: z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ tanh (dist z w / 2) = dist ↑z ↑w / dist (↑z) ((starRingEnd ℂ) ↑w)
state_after: z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ 2 * √(z.im * w.im) ≠ 0

tactic: positivity
state_before: z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ 2 * √(z.im * w.im) ≠ 0
state_after: no goals
Theorem: CompleteLattice.isCompactlyGenerated_of_wellFounded
File: Mathlib/Order/CompactlyGenerated/Basic.lean

tactic: rw [wellFounded_iff_isSupFiniteCompact, isSupFiniteCompact_iff_all_elements_compact] at h
state_before: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
⊢ IsCompactlyGenerated α
state_after: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
⊢ IsCompactlyGenerated α

tactic: exact ⟨fun x => ⟨{x}, ⟨fun x _ => h x, sSup_singleton⟩⟩⟩
state_before: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
⊢ IsCompactlyGenerated α
state_after: no goals
Theorem: norm_image_sub_le_of_norm_deriv_le_segment'
File: Mathlib/Analysis/Calculus/MeanValue.lean

tactic: refine
  norm_image_sub_le_of_norm_deriv_right_le_segment (fun x hx => (hf x hx).continuousWithinAt)
    (fun x hx => ?_) bound
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → E
a b : ℝ
f' : ℝ → E
C : ℝ
hf : ∀ x ∈ Icc a b, HasDerivWithinAt f (f' x) (Icc a b) x
bound : ∀ x ∈ Ico a b, ‖f' x‖ ≤ C
⊢ ∀ x ∈ Icc a b, ‖f x - f a‖ ≤ C * (x - a)
state_after: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → E
a b : ℝ
f' : ℝ → E
C : ℝ
hf : ∀ x ∈ Icc a b, HasDerivWithinAt f (f' x) (Icc a b) x
bound : ∀ x ∈ Ico a b, ‖f' x‖ ≤ C
x : ℝ
hx : x ∈ Ico a b
⊢ HasDerivWithinAt f (f' x) (Ici x) x

tactic: exact (hf x <| Ico_subset_Icc_self hx).mono_of_mem (Icc_mem_nhdsWithin_Ici hx)
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → E
a b : ℝ
f' : ℝ → E
C : ℝ
hf : ∀ x ∈ Icc a b, HasDerivWithinAt f (f' x) (Icc a b) x
bound : ∀ x ∈ Ico a b, ‖f' x‖ ≤ C
x : ℝ
hx : x ∈ Ico a b
⊢ HasDerivWithinAt f (f' x) (Ici x) x
state_after: no goals
Theorem: Finset.affineCombinationSingleWeights_apply_of_ne
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: simp [affineCombinationSingleWeights, h]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
S : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
inst✝ : DecidableEq ι
i j : ι
h : j ≠ i
⊢ affineCombinationSingleWeights k i j = 0
state_after: no goals
Theorem: Complex.normSq_I
File: Mathlib/Data/Complex/Basic.lean

tactic: simp [normSq]
state_before: ⊢ normSq I = 1
state_after: no goals
Theorem: isLUB_supClosure
File: Mathlib/Order/SupClosed.lean

tactic: simp [IsLUB]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : SemilatticeSup α
inst✝ : SemilatticeSup β
s t : Set α
a b : α
⊢ IsLUB (supClosure s) a ↔ IsLUB s a
state_after: no goals
Theorem: Ergodic.ae_empty_or_univ_of_ae_le_preimage'
File: Mathlib/Dynamics/Ergodic/Ergodic.lean

tactic: replace h_fin : μ (f ⁻¹' s) ≠ ∞ := by rwa [hf.measure_preimage hs]
state_before: α : Type u_1
m : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
hf : Ergodic f μ
hs : MeasurableSet s
hs' : s ≤ᶠ[ae μ] f ⁻¹' s
h_fin : μ s ≠ ⊤
⊢ s =ᶠ[ae μ] ∅ ∨ s =ᶠ[ae μ] univ
state_after: α : Type u_1
m : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
hf : Ergodic f μ
hs : MeasurableSet s
hs' : s ≤ᶠ[ae μ] f ⁻¹' s
h_fin : μ (f ⁻¹' s) ≠ ⊤
⊢ s =ᶠ[ae μ] ∅ ∨ s =ᶠ[ae μ] univ

tactic: refine hf.quasiErgodic.ae_empty_or_univ' hs ?_
state_before: α : Type u_1
m : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
hf : Ergodic f μ
hs : MeasurableSet s
hs' : s ≤ᶠ[ae μ] f ⁻¹' s
h_fin : μ (f ⁻¹' s) ≠ ⊤
⊢ s =ᶠ[ae μ] ∅ ∨ s =ᶠ[ae μ] univ
state_after: α : Type u_1
m : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
hf : Ergodic f μ
hs : MeasurableSet s
hs' : s ≤ᶠ[ae μ] f ⁻¹' s
h_fin : μ (f ⁻¹' s) ≠ ⊤
⊢ f ⁻¹' s =ᶠ[ae μ] s

tactic: exact (ae_eq_of_ae_subset_of_measure_ge hs' (hf.measure_preimage hs).le hs h_fin).symm
state_before: α : Type u_1
m : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
hf : Ergodic f μ
hs : MeasurableSet s
hs' : s ≤ᶠ[ae μ] f ⁻¹' s
h_fin : μ (f ⁻¹' s) ≠ ⊤
⊢ f ⁻¹' s =ᶠ[ae μ] s
state_after: no goals

tactic: rwa [hf.measure_preimage hs]
state_before: α : Type u_1
m : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
hf : Ergodic f μ
hs : MeasurableSet s
hs' : s ≤ᶠ[ae μ] f ⁻¹' s
h_fin : μ s ≠ ⊤
⊢ μ (f ⁻¹' s) ≠ ⊤
state_after: no goals
Theorem: Ordinal.derivBFamily_fp
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

tactic: rw [← familyOfBFamily_enum o f]
state_before: o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max u v}
⊢ f i hi (o.derivBFamily f a) = o.derivBFamily f a
state_after: o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max u v}
⊢ o.familyOfBFamily f (enum (fun x x_1 => x < x_1) i ⋯) (o.derivBFamily f a) = o.derivBFamily f a

tactic: apply derivFamily_fp
state_before: o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max u v}
⊢ o.familyOfBFamily f (enum (fun x x_1 => x < x_1) i ⋯) (o.derivBFamily f a) = o.derivBFamily f a
state_after: case H
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max u v}
⊢ IsNormal (o.familyOfBFamily f (enum (fun x x_1 => x < x_1) i ⋯))

tactic: rw [familyOfBFamily_enum]
state_before: case H
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max u v}
⊢ IsNormal (o.familyOfBFamily f (enum (fun x x_1 => x < x_1) i ⋯))
state_after: case H
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max u v}
⊢ IsNormal (f i ?H.hi)

case H.hi
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max u v}
⊢ i < o

tactic: exact H
state_before: case H
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max u v}
⊢ IsNormal (f i ?H.hi)

case H.hi
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max u v}
⊢ i < o
state_after: no goals
Theorem: Polynomial.natSepDegree_expand
File: Mathlib/FieldTheory/SeparableDegree.lean

tactic: cases' hF with _ _ hprime _
state_before: F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
f : F[X]
q : ℕ
hF : ExpChar F q
n : ℕ
⊢ ((expand F (q ^ n)) f).natSepDegree = f.natSepDegree
state_after: case zero
F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
f : F[X]
n : ℕ
inst✝ : CharZero F
⊢ ((expand F (1 ^ n)) f).natSepDegree = f.natSepDegree

case prime
F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
f : F[X]
q n : ℕ
hprime : Nat.Prime q
hchar✝ : CharP F q
⊢ ((expand F (q ^ n)) f).natSepDegree = f.natSepDegree

tactic: haveI := Fact.mk hprime
state_before: case prime
F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
f : F[X]
q n : ℕ
hprime : Nat.Prime q
hchar✝ : CharP F q
⊢ ((expand F (q ^ n)) f).natSepDegree = f.natSepDegree
state_after: case prime
F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
f : F[X]
q n : ℕ
hprime : Nat.Prime q
hchar✝ : CharP F q
this : Fact (Nat.Prime q)
⊢ ((expand F (q ^ n)) f).natSepDegree = f.natSepDegree

tactic: simpa only [natSepDegree_eq_of_isAlgClosed (AlgebraicClosure F), aroots_def, map_expand,
  Fintype.card_coe] using Fintype.card_eq.2
    ⟨(f.map (algebraMap F (AlgebraicClosure F))).rootsExpandPowEquivRoots q n⟩
state_before: case prime
F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
f : F[X]
q n : ℕ
hprime : Nat.Prime q
hchar✝ : CharP F q
this : Fact (Nat.Prime q)
⊢ ((expand F (q ^ n)) f).natSepDegree = f.natSepDegree
state_after: no goals

tactic: simp only [one_pow, expand_one]
state_before: case zero
F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
f : F[X]
n : ℕ
inst✝ : CharZero F
⊢ ((expand F (1 ^ n)) f).natSepDegree = f.natSepDegree
state_after: no goals
Theorem: egauge_zero_left_eq_top
File: Mathlib/Analysis/Convex/EGauge.lean

tactic: simp [egauge_eq_top]
state_before: 𝕜 : Type u_1
inst✝³ : NNNorm 𝕜
inst✝² : Nonempty 𝕜
E : Type u_2
inst✝¹ : Zero E
inst✝ : SMulZeroClass 𝕜 E
c : 𝕜
s t : Set E
x : E
r : ℝ≥0∞
⊢ egauge 𝕜 0 x = ⊤ ↔ x ≠ 0
state_after: no goals
Theorem: Real.lipschitzWith_toNNReal
File: Mathlib/Topology/MetricSpace/Lipschitz.lean

tactic: refine lipschitzWith_iff_dist_le_mul.mpr (fun x y ↦ ?_)
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
inst✝ : PseudoMetricSpace γ
K : ℝ≥0
f : α → β
x y : α
r : ℝ
⊢ LipschitzWith 1 Real.toNNReal
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
inst✝ : PseudoMetricSpace γ
K : ℝ≥0
f : α → β
x✝ y✝ : α
r x y : ℝ
⊢ dist x.toNNReal y.toNNReal ≤ ↑1 * dist x y

tactic: simpa only [ge_iff_le, NNReal.coe_one, dist_prod_same_right, one_mul, Real.dist_eq] using
  lipschitzWith_iff_dist_le_mul.mp lipschitzWith_max (x, 0) (y, 0)
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
inst✝ : PseudoMetricSpace γ
K : ℝ≥0
f : α → β
x✝ y✝ : α
r x y : ℝ
⊢ dist x.toNNReal y.toNNReal ≤ ↑1 * dist x y
state_after: no goals
Theorem: Ideal.comap_lt_comap_of_integral_mem_sdiff
File: Mathlib/RingTheory/Ideal/Over.lean

tactic: obtain ⟨p, p_monic, hpx⟩ := integral
state_before: R : Type u_1
inst✝² : CommRing R
S : Type u_2
inst✝¹ : CommRing S
f : R →+* S
I J : Ideal S
inst✝ : Algebra R S
hI : I.IsPrime
hIJ : I ≤ J
x : S
mem : x ∈ ↑J \ ↑I
integral : IsIntegral R x
⊢ comap (algebraMap R S) I < comap (algebraMap R S) J
state_after: case intro.intro
R : Type u_1
inst✝² : CommRing R
S : Type u_2
inst✝¹ : CommRing S
f : R →+* S
I J : Ideal S
inst✝ : Algebra R S
hI : I.IsPrime
hIJ : I ≤ J
x : S
mem : x ∈ ↑J \ ↑I
p : R[X]
p_monic : p.Monic
hpx : eval₂ (algebraMap R S) x p = 0
⊢ comap (algebraMap R S) I < comap (algebraMap R S) J

tactic: refine comap_lt_comap_of_root_mem_sdiff hIJ mem (map_monic_ne_zero p_monic) ?_
state_before: case intro.intro
R : Type u_1
inst✝² : CommRing R
S : Type u_2
inst✝¹ : CommRing S
f : R →+* S
I J : Ideal S
inst✝ : Algebra R S
hI : I.IsPrime
hIJ : I ≤ J
x : S
mem : x ∈ ↑J \ ↑I
p : R[X]
p_monic : p.Monic
hpx : eval₂ (algebraMap R S) x p = 0
⊢ comap (algebraMap R S) I < comap (algebraMap R S) J
state_after: case intro.intro
R : Type u_1
inst✝² : CommRing R
S : Type u_2
inst✝¹ : CommRing S
f : R →+* S
I J : Ideal S
inst✝ : Algebra R S
hI : I.IsPrime
hIJ : I ≤ J
x : S
mem : x ∈ ↑J \ ↑I
p : R[X]
p_monic : p.Monic
hpx : eval₂ (algebraMap R S) x p = 0
⊢ eval₂ (algebraMap R S) x p ∈ I

tactic: convert I.zero_mem
state_before: case intro.intro
R : Type u_1
inst✝² : CommRing R
S : Type u_2
inst✝¹ : CommRing S
f : R →+* S
I J : Ideal S
inst✝ : Algebra R S
hI : I.IsPrime
hIJ : I ≤ J
x : S
mem : x ∈ ↑J \ ↑I
p : R[X]
p_monic : p.Monic
hpx : eval₂ (algebraMap R S) x p = 0
⊢ eval₂ (algebraMap R S) x p ∈ I
state_after: no goals
Theorem: BoxIntegral.Prepartition.measure_iUnion_toReal
File: Mathlib/Analysis/BoxIntegral/Partition/Measure.lean

tactic: erw [← ENNReal.toReal_sum, π.iUnion_def, measure_biUnion_finset π.pairwiseDisjoint]
state_before: ι : Type u_1
inst✝¹ : Finite ι
I : Box ι
π : Prepartition I
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
⊢ (μ π.iUnion).toReal = ∑ J ∈ π.boxes, (μ ↑J).toReal
state_after: ι : Type u_1
inst✝¹ : Finite ι
I : Box ι
π : Prepartition I
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
⊢ ∀ b ∈ π.boxes, MeasurableSet ↑b

ι : Type u_1
inst✝¹ : Finite ι
I : Box ι
π : Prepartition I
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
⊢ ∀ a ∈ π.boxes, μ ↑a ≠ ⊤

tactic: exacts [fun J _ => J.measurableSet_coe, fun J _ => (J.measure_coe_lt_top μ).ne]
state_before: ι : Type u_1
inst✝¹ : Finite ι
I : Box ι
π : Prepartition I
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
⊢ ∀ b ∈ π.boxes, MeasurableSet ↑b

ι : Type u_1
inst✝¹ : Finite ι
I : Box ι
π : Prepartition I
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
⊢ ∀ a ∈ π.boxes, μ ↑a ≠ ⊤
state_after: no goals
Theorem: List.mem_merge
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp
state_before: α : Type u_1
x : α
l✝ r : List α
s : α → α → Bool
l : List α
⊢ x ∈ merge s l [] ↔ x ∈ l ∨ x ∈ []
state_after: no goals

tactic: simp
state_before: α : Type u_1
x : α
l✝ r : List α
s : α → α → Bool
l : List α
⊢ x ∈ merge s [] l ↔ x ∈ [] ∨ x ∈ l
state_after: no goals

tactic: rw [cons_merge_cons]
state_before: α : Type u_1
x : α
l✝ r✝ : List α
s : α → α → Bool
a : α
l : List α
b : α
r : List α
⊢ x ∈ merge s (a :: l) (b :: r) ↔ x ∈ a :: l ∨ x ∈ b :: r
state_after: α : Type u_1
x : α
l✝ r✝ : List α
s : α → α → Bool
a : α
l : List α
b : α
r : List α
⊢ (x ∈ if s a b = true then a :: merge s l (b :: r) else b :: merge s (a :: l) r) ↔ x ∈ a :: l ∨ x ∈ b :: r

tactic: split
state_before: α : Type u_1
x : α
l✝ r✝ : List α
s : α → α → Bool
a : α
l : List α
b : α
r : List α
⊢ (x ∈ if s a b = true then a :: merge s l (b :: r) else b :: merge s (a :: l) r) ↔ x ∈ a :: l ∨ x ∈ b :: r
state_after: case isTrue
α : Type u_1
x : α
l✝ r✝ : List α
s : α → α → Bool
a : α
l : List α
b : α
r : List α
h✝ : s a b = true
⊢ x ∈ a :: merge s l (b :: r) ↔ x ∈ a :: l ∨ x ∈ b :: r

case isFalse
α : Type u_1
x : α
l✝ r✝ : List α
s : α → α → Bool
a : α
l : List α
b : α
r : List α
h✝ : ¬s a b = true
⊢ x ∈ b :: merge s (a :: l) r ↔ x ∈ a :: l ∨ x ∈ b :: r

tactic: simp [mem_merge (l := l) (r := b::r), or_assoc]
state_before: case isTrue
α : Type u_1
x : α
l✝ r✝ : List α
s : α → α → Bool
a : α
l : List α
b : α
r : List α
h✝ : s a b = true
⊢ x ∈ a :: merge s l (b :: r) ↔ x ∈ a :: l ∨ x ∈ b :: r
state_after: no goals

tactic: simp [mem_merge (l := a::l) (r := r), or_assoc, or_left_comm]
state_before: case isFalse
α : Type u_1
x : α
l✝ r✝ : List α
s : α → α → Bool
a : α
l : List α
b : α
r : List α
h✝ : ¬s a b = true
⊢ x ∈ b :: merge s (a :: l) r ↔ x ∈ a :: l ∨ x ∈ b :: r
state_after: no goals