ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: gauge_zero
File: Mathlib/Analysis/Convex/Gauge.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a : ℝ
⊢ gauge s 0 = 0
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a : ℝ
⊢ sInf {r | r ∈ Ioi 0 ∧ r⁻¹ • 0 ∈ s} = 0
tactic: rw [gauge_def']
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a : ℝ
⊢ sInf {r | r ∈ Ioi 0 ∧ r⁻¹ • 0 ∈ s} = 0
state_after: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a : ℝ
h : 0 ∈ s
⊢ sInf {r | r ∈ Ioi 0 ∧ r⁻¹ • 0 ∈ s} = 0

case neg
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a : ℝ
h : 0 ∉ s
⊢ sInf {r | r ∈ Ioi 0 ∧ r⁻¹ • 0 ∈ s} = 0
tactic: by_cases h : (0 : E) ∈ s
Theorem: ModularGroup.im_lt_im_S_smul
File: Mathlib/NumberTheory/Modular.lean

Proof steps:
state_before: g : SL(2, ℤ)
z : ℍ
h : normSq ↑z < 1
⊢ z.im < (S • z).im
state_after: g : SL(2, ℤ)
z : ℍ
h : normSq ↑z < 1
this : z.im < z.im / normSq ↑z
⊢ z.im < (S • z).im
tactic: have : z.im < z.im / normSq (z : ℂ) := by
    have imz : 0 < z.im := im_pos z
    apply (lt_div_iff z.normSq_pos).mpr
    nlinarith
state_before: g : SL(2, ℤ)
z : ℍ
h : normSq ↑z < 1
this : z.im < z.im / normSq ↑z
⊢ z.im < (S • z).im
state_after: case h.e'_4
g : SL(2, ℤ)
z : ℍ
h : normSq ↑z < 1
this : z.im < z.im / normSq ↑z
⊢ (S • z).im = z.im / normSq ↑z
tactic: convert this
state_before: case h.e'_4
g : SL(2, ℤ)
z : ℍ
h : normSq ↑z < 1
this : z.im < z.im / normSq ↑z
⊢ (S • z).im = z.im / normSq ↑z
state_after: case h.e'_4
g : SL(2, ℤ)
z : ℍ
h : normSq ↑z < 1
this : z.im < z.im / normSq ↑z
⊢ z.im / normSq (denom (↑S) z) = z.im / normSq ↑z
tactic: simp only [ModularGroup.im_smul_eq_div_normSq]
state_before: case h.e'_4
g : SL(2, ℤ)
z : ℍ
h : normSq ↑z < 1
this : z.im < z.im / normSq ↑z
⊢ z.im / normSq (denom (↑S) z) = z.im / normSq ↑z
state_after: no goals
tactic: simp [denom, coe_S]
Theorem: Finset.swap_mem_mulAntidiagonal
File: Mathlib/Data/Finset/MulAntidiagonal.lean

Proof steps:
state_before: α : Type u_1
inst✝ : OrderedCancelCommMonoid α
s t : Set α
hs : s.IsPWO
ht : t.IsPWO
a : α
u : Set α
hu : u.IsPWO
x : α × α
⊢ x.swap ∈ mulAntidiagonal hs ht a ↔ x ∈ mulAntidiagonal ht hs a
state_after: no goals
tactic: simp only [mem_mulAntidiagonal, Prod.fst_swap, Prod.snd_swap, Set.swap_mem_mulAntidiagonal_aux,
             Set.mem_mulAntidiagonal]
Theorem: Matrix.row_injective
File: Mathlib/Data/Matrix/RowCol.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
inst✝ : Nonempty ι
⊢ Function.Injective (row ι)
state_after: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
inst✝ : Nonempty ι
inhabited_h : Inhabited ι
⊢ Function.Injective (row ι)
tactic: inhabit ι
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
inst✝ : Nonempty ι
inhabited_h : Inhabited ι
⊢ Function.Injective (row ι)
state_after: no goals
tactic: exact fun _x _y h => funext fun j => congr_fun₂ h default j
Theorem: Complex.differentiableAt_GammaAux
File: Mathlib/Analysis/SpecialFunctions/Gamma/Basic.lean

Proof steps:
state_before: s : ℂ
n : ℕ
h1 : 1 - s.re < ↑n
h2 : ∀ (m : ℕ), s ≠ -↑m
⊢ DifferentiableAt ℂ (GammaAux n) s
state_after: case zero
s : ℂ
h1 : 1 - s.re < ↑0
h2 : ∀ (m : ℕ), s ≠ -↑m
⊢ DifferentiableAt ℂ (GammaAux 0) s

case succ
n : ℕ
hn : ∀ (s : ℂ), 1 - s.re < ↑n → (∀ (m : ℕ), s ≠ -↑m) → DifferentiableAt ℂ (GammaAux n) s
s : ℂ
h1 : 1 - s.re < ↑(n + 1)
h2 : ∀ (m : ℕ), s ≠ -↑m
⊢ DifferentiableAt ℂ (GammaAux (n + 1)) s
tactic: induction' n with n hn generalizing s
Theorem: DFA.toNFA_correct
File: Mathlib/Computability/NFA.lean

Proof steps:
state_before: α : Type u
σ σ' : Type v
M✝ : NFA α σ
M : DFA α σ
⊢ M.toNFA.accepts = M.accepts
state_after: case h
α : Type u
σ σ' : Type v
M✝ : NFA α σ
M : DFA α σ
x : List α
⊢ x ∈ M.toNFA.accepts ↔ x ∈ M.accepts
tactic: ext x
state_before: case h
α : Type u
σ σ' : Type v
M✝ : NFA α σ
M : DFA α σ
x : List α
⊢ x ∈ M.toNFA.accepts ↔ x ∈ M.accepts
state_after: case h
α : Type u
σ σ' : Type v
M✝ : NFA α σ
M : DFA α σ
x : List α
⊢ (∃ S ∈ M.toNFA.accept, S ∈ {M.evalFrom M.start x}) ↔ x ∈ M.accepts
tactic: rw [NFA.mem_accepts, toNFA_start, toNFA_evalFrom_match]
state_before: case h
α : Type u
σ σ' : Type v
M✝ : NFA α σ
M : DFA α σ
x : List α
⊢ (∃ S ∈ M.toNFA.accept, S ∈ {M.evalFrom M.start x}) ↔ x ∈ M.accepts
state_after: case h.mp
α : Type u
σ σ' : Type v
M✝ : NFA α σ
M : DFA α σ
x : List α
⊢ (∃ S ∈ M.toNFA.accept, S ∈ {M.evalFrom M.start x}) → x ∈ M.accepts

case h.mpr
α : Type u
σ σ' : Type v
M✝ : NFA α σ
M : DFA α σ
x : List α
⊢ x ∈ M.accepts → ∃ S ∈ M.toNFA.accept, S ∈ {M.evalFrom M.start x}
tactic: constructor
Theorem: AddOpposite.op_sub
File: Mathlib/Algebra/Group/Opposite.lean

Proof steps:
state_before: α : Type u_1
inst✝ : DivInvMonoid α
x y : α
⊢ op (x / y) = (op y)⁻¹ * op x
state_after: no goals
tactic: simp [div_eq_mul_inv]
Theorem: Nat.bit_mod_two_eq_zero_iff
File: Mathlib/Data/Nat/Bitwise.lean

Proof steps:
state_before: f : Bool → Bool → Bool
a : Bool
x : ℕ
⊢ bit a x % 2 = 0 ↔ (!a) = true
state_after: f : Bool → Bool → Bool
a : Bool
x : ℕ
⊢ (if a = true then 1 else 0) = 0 ↔ (!a) = true
tactic: rw [bit_mod_two]
state_before: f : Bool → Bool → Bool
a : Bool
x : ℕ
⊢ (if a = true then 1 else 0) = 0 ↔ (!a) = true
state_after: no goals
tactic: split_ifs <;> simp_all
Theorem: Batteries.AssocList.isEmpty_eq
File: .lake/packages/batteries/Batteries/Data/AssocList.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
l : AssocList α β
⊢ l.isEmpty = l.toList.isEmpty
state_after: no goals
tactic: cases l <;> simp [*, isEmpty, List.isEmpty]
Theorem: interval_average_eq
File: Mathlib/MeasureTheory/Integral/IntervalAverage.lean

Proof steps:
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
a b : ℝ
⊢ ⨍ (x : ℝ) in a..b, f x = (b - a)⁻¹ • ∫ (x : ℝ) in a..b, f x
state_after: case inl
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
a b : ℝ
h : a ≤ b
⊢ ⨍ (x : ℝ) in a..b, f x = (b - a)⁻¹ • ∫ (x : ℝ) in a..b, f x

case inr
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
a b : ℝ
h : b < a
⊢ ⨍ (x : ℝ) in a..b, f x = (b - a)⁻¹ • ∫ (x : ℝ) in a..b, f x
tactic: rcases le_or_lt a b with h | h
Theorem: SimpleGraph.dart_card_eq_twice_card_edges
File: Mathlib/Combinatorics/SimpleGraph/DegreeSum.lean

Proof steps:
state_before: V : Type u
G : SimpleGraph V
inst✝² : Fintype V
inst✝¹ : DecidableRel G.Adj
inst✝ : Fintype (Sym2 V)
⊢ Fintype.card G.Dart = 2 * G.edgeFinset.card
state_after: no goals
tactic: classical
  rw [← card_univ]
  rw [@card_eq_sum_card_fiberwise _ _ _ Dart.edge _ G.edgeFinset fun d _h =>
      by rw [mem_edgeFinset]; apply Dart.edge_mem]
  rw [← mul_comm, sum_const_nat]
  intro e h
  apply G.dart_edge_fiber_card e
  rwa [← mem_edgeFinset]
Theorem: Orientation.two_zsmul_oangle_smul_right_of_ne_zero
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

Proof steps:
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
r : ℝ
hr : r ≠ 0
⊢ 2 • o.oangle x (r • y) = 2 • o.oangle x y
state_after: no goals
tactic: rcases hr.lt_or_lt with (h | h) <;> simp [h]
Theorem: finsum_mem_support
File: Mathlib/Algebra/BigOperators/Finprod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
a : α
⊢ ∏ᶠ (_ : f a ≠ 1), f a = f a
state_after: no goals
tactic: rw [← mem_mulSupport, finprod_eq_mulIndicator_apply, mulIndicator_mulSupport]
Theorem: WithBot.unbot'_eq_self_iff
File: Mathlib/Order/WithBot.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
a b d : α
x : WithBot α
⊢ unbot' d x = d ↔ x = ↑d ∨ x = ⊥
state_after: no goals
tactic: simp [unbot'_eq_iff]
Theorem: IsLocalization.isPrime_iff_isPrime_disjoint
File: Mathlib/RingTheory/Localization/Ideal.lean

Proof steps:
state_before: R : Type u_1
inst✝³ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
inst✝ : IsLocalization M S
J : Ideal S
⊢ J.IsPrime ↔ (Ideal.comap (algebraMap R S) J).IsPrime ∧ Disjoint ↑M ↑(Ideal.comap (algebraMap R S) J)
state_after: case mp
R : Type u_1
inst✝³ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
inst✝ : IsLocalization M S
J : Ideal S
⊢ J.IsPrime → (Ideal.comap (algebraMap R S) J).IsPrime ∧ Disjoint ↑M ↑(Ideal.comap (algebraMap R S) J)

case mpr
R : Type u_1
inst✝³ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
inst✝ : IsLocalization M S
J : Ideal S
⊢ (Ideal.comap (algebraMap R S) J).IsPrime ∧ Disjoint ↑M ↑(Ideal.comap (algebraMap R S) J) → J.IsPrime
tactic: constructor
Theorem: deriv.lhopital_zero_right_on_Ico
File: Mathlib/Analysis/Calculus/LHopital.lean

Proof steps:
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : DifferentiableOn ℝ f (Ioo a b)
hcf : ContinuousOn f (Ico a b)
hcg : ContinuousOn g (Ico a b)
hg' : ∀ x ∈ Ioo a b, deriv g x ≠ 0
hfa : f a = 0
hga : g a = 0
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[>] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[>] a) l
state_after: case refine_1
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : DifferentiableOn ℝ f (Ioo a b)
hcf : ContinuousOn f (Ico a b)
hcg : ContinuousOn g (Ico a b)
hg' : ∀ x ∈ Ioo a b, deriv g x ≠ 0
hfa : f a = 0
hga : g a = 0
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[>] a) l
⊢ Tendsto f (𝓝[>] a) (𝓝 0)

case refine_2
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : DifferentiableOn ℝ f (Ioo a b)
hcf : ContinuousOn f (Ico a b)
hcg : ContinuousOn g (Ico a b)
hg' : ∀ x ∈ Ioo a b, deriv g x ≠ 0
hfa : f a = 0
hga : g a = 0
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[>] a) l
⊢ Tendsto g (𝓝[>] a) (𝓝 0)
tactic: refine lhopital_zero_right_on_Ioo hab hdf hg' ?_ ?_ hdiv
Theorem: Submodule.LinearDisjoint.of_basis_mul
File: Mathlib/LinearAlgebra/LinearDisjoint.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : Ring S
inst✝ : Algebra R S
M N : Submodule R S
κ : Type u_1
ι : Type u_2
m : Basis κ R ↥M
n : Basis ι R ↥N
H : LinearIndependent R fun i => ↑(m i.1) * ↑(n i.2)
⊢ M.LinearDisjoint N
state_after: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : Ring S
inst✝ : Algebra R S
M N : Submodule R S
κ : Type u_1
ι : Type u_2
m : Basis κ R ↥M
n : Basis ι R ↥N
H : Function.Injective ⇑(Finsupp.total (κ × ι) S R fun i => ↑(m i.1) * ↑(n i.2))
⊢ M.LinearDisjoint N
tactic: rw [LinearIndependent, LinearMap.ker_eq_bot] at H
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : Ring S
inst✝ : Algebra R S
M N : Submodule R S
κ : Type u_1
ι : Type u_2
m : Basis κ R ↥M
n : Basis ι R ↥N
H : Function.Injective ⇑(Finsupp.total (κ × ι) S R fun i => ↑(m i.1) * ↑(n i.2))
⊢ M.LinearDisjoint N
state_after: no goals
tactic: exact of_basis_mul' M N m n H
Theorem: MeasurableSet.exists_isClosed_diff_lt
File: Mathlib/MeasureTheory/Measure/Regular.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝³ : MeasurableSpace α
inst✝² : TopologicalSpace α
μ : Measure α
inst✝¹ : OpensMeasurableSpace α
inst✝ : μ.WeaklyRegular
A : Set α
hA : MeasurableSet A
h'A : μ A ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
⊢ ∃ F ⊆ A, IsClosed F ∧ μ (A \ F) < ε
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
inst✝³ : MeasurableSpace α
inst✝² : TopologicalSpace α
μ : Measure α
inst✝¹ : OpensMeasurableSpace α
inst✝ : μ.WeaklyRegular
A : Set α
hA : MeasurableSet A
h'A : μ A ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
F : Set α
hFA : F ⊆ A
hFc : IsClosed F
hF : μ A < μ F + ε
⊢ ∃ F ⊆ A, IsClosed F ∧ μ (A \ F) < ε
tactic: rcases hA.exists_isClosed_lt_add h'A hε with ⟨F, hFA, hFc, hF⟩
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
inst✝³ : MeasurableSpace α
inst✝² : TopologicalSpace α
μ : Measure α
inst✝¹ : OpensMeasurableSpace α
inst✝ : μ.WeaklyRegular
A : Set α
hA : MeasurableSet A
h'A : μ A ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
F : Set α
hFA : F ⊆ A
hFc : IsClosed F
hF : μ A < μ F + ε
⊢ ∃ F ⊆ A, IsClosed F ∧ μ (A \ F) < ε
state_after: no goals
tactic: exact ⟨F, hFA, hFc, measure_diff_lt_of_lt_add hFc.measurableSet hFA
    (ne_top_of_le_ne_top h'A <| measure_mono hFA) hF⟩
Theorem: ContinuousLinearMap.adjointAux_norm
File: Mathlib/Analysis/InnerProductSpace/Adjoint.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : E →L[𝕜] F
⊢ ‖adjointAux A‖ = ‖A‖
state_after: case refine_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : E →L[𝕜] F
⊢ ‖adjointAux A‖ ≤ ‖A‖

case refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : E →L[𝕜] F
⊢ ‖A‖ ≤ ‖adjointAux A‖
tactic: refine le_antisymm ?_ ?_
Theorem: HasLineDerivWithinAt.congr_mono
File: Mathlib/Analysis/Calculus/LineDeriv/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f f₁ : E → F
f' f₀' f₁' : F
s t : Set E
x v : E
h : HasLineDerivWithinAt 𝕜 f f' s x v
ht : EqOn f₁ f t
hx : f₁ x = f x
h₁ : t ⊆ s
⊢ f₁ (x + 0 • v) = f (x + 0 • v)
state_after: no goals
tactic: simpa using hx
Theorem: Ideal.span_pair_add_mul_right
File: Mathlib/RingTheory/Ideal/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
inst✝¹ : Semiring α
I : Ideal α
a b : α
R : Type u
inst✝ : CommRing R
x y z : R
⊢ span {x, y + x * z} = span {x, y}
state_after: no goals
tactic: rw [span_pair_comm, span_pair_add_mul_left, span_pair_comm]
Theorem: PartENat.one_lt_card_iff_nontrivial
File: Mathlib/SetTheory/Cardinal/Finite.lean

Proof steps:
state_before: α✝ : Type u_1
β : Type u_2
α : Type u_3
⊢ 1 < card α ↔ Nontrivial α
state_after: α✝ : Type u_1
β : Type u_2
α : Type u_3
⊢ 1 < card α ↔ 1 < #α
tactic: rw [← Cardinal.one_lt_iff_nontrivial]
state_before: α✝ : Type u_1
β : Type u_2
α : Type u_3
⊢ 1 < card α ↔ 1 < #α
state_after: α✝ : Type u_1
β : Type u_2
α : Type u_3
⊢ 1 < card α ↔ ↑1 < #α
tactic: conv_rhs => rw [← Nat.cast_one]
state_before: α✝ : Type u_1
β : Type u_2
α : Type u_3
⊢ 1 < card α ↔ ↑1 < #α
state_after: α✝ : Type u_1
β : Type u_2
α : Type u_3
⊢ 1 < card α ↔ ↑1 < toPartENat #α
tactic: rw [← natCast_lt_toPartENat_iff]
state_before: α✝ : Type u_1
β : Type u_2
α : Type u_3
⊢ 1 < card α ↔ ↑1 < toPartENat #α
state_after: no goals
tactic: simp only [PartENat.card, Nat.cast_one]
Theorem: add_tsub_le_assoc
File: Mathlib/Algebra/Order/Sub/Defs.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝⁴ : Preorder α
inst✝³ : AddCommSemigroup α
inst✝² : Sub α
inst✝¹ : OrderedSub α
a b c d : α
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
⊢ a + b - c ≤ a + (b - c)
state_after: α : Type u_1
β : Type u_2
inst✝⁴ : Preorder α
inst✝³ : AddCommSemigroup α
inst✝² : Sub α
inst✝¹ : OrderedSub α
a b c d : α
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
⊢ a + b ≤ a + (c + (b - c))
tactic: rw [tsub_le_iff_left, add_left_comm]
state_before: α : Type u_1
β : Type u_2
inst✝⁴ : Preorder α
inst✝³ : AddCommSemigroup α
inst✝² : Sub α
inst✝¹ : OrderedSub α
a b c d : α
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
⊢ a + b ≤ a + (c + (b - c))
state_after: no goals
tactic: exact add_le_add_left le_add_tsub a
Theorem: convexIndependent_iff_not_mem_convexHull_diff
File: Mathlib/Analysis/Convex/Independent.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝² : OrderedSemiring 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s t : Set E
p : ι → E
⊢ ConvexIndependent 𝕜 p ↔ ∀ (i : ι) (s : Set ι), p i ∉ (convexHull 𝕜) (p '' (s \ {i}))
state_after: case refine_1
𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝² : OrderedSemiring 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s✝ t : Set E
p : ι → E
hc : ConvexIndependent 𝕜 p
i : ι
s : Set ι
h : p i ∈ (convexHull 𝕜) (p '' (s \ {i}))
⊢ False

case refine_2
𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝² : OrderedSemiring 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s✝ t : Set E
p : ι → E
h : ∀ (i : ι) (s : Set ι), p i ∉ (convexHull 𝕜) (p '' (s \ {i}))
s : Set ι
i : ι
hi : p i ∈ (convexHull 𝕜) (p '' s)
⊢ i ∈ s
tactic: refine ⟨fun hc i s h => ?_, fun h s i hi => ?_⟩
Theorem: Finset.card_union_eq_card_add_card
File: Mathlib/Data/Finset/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t u : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
⊢ (s ∪ t).card = s.card + t.card ↔ _root_.Disjoint s t
state_after: α : Type u_1
β : Type u_2
R : Type u_3
s t u : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
⊢ (s ∪ t).card = (s ∪ t).card + (s ∩ t).card ↔ _root_.Disjoint s t
tactic: rw [← card_union_add_card_inter]
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t u : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
⊢ (s ∪ t).card = (s ∪ t).card + (s ∩ t).card ↔ _root_.Disjoint s t
state_after: no goals
tactic: simp [disjoint_iff_inter_eq_empty]
Theorem: MeasureTheory.isStoppingTime_of_measurableSet_eq
File: Mathlib/Probability/Process/Stopping.lean

Proof steps:
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
inst✝ : Countable ι
f : Filtration ι m
τ : Ω → ι
hτ : ∀ (i : ι), MeasurableSet {ω | τ ω = i}
⊢ IsStoppingTime f τ
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
inst✝ : Countable ι
f : Filtration ι m
τ : Ω → ι
hτ : ∀ (i : ι), MeasurableSet {ω | τ ω = i}
i : ι
⊢ MeasurableSet {ω | τ ω ≤ i}
tactic: intro i
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
inst✝ : Countable ι
f : Filtration ι m
τ : Ω → ι
hτ : ∀ (i : ι), MeasurableSet {ω | τ ω = i}
i : ι
⊢ MeasurableSet {ω | τ ω ≤ i}
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
inst✝ : Countable ι
f : Filtration ι m
τ : Ω → ι
hτ : ∀ (i : ι), MeasurableSet {ω | τ ω = i}
i : ι
⊢ MeasurableSet (⋃ k, ⋃ (_ : k ≤ i), {ω | τ ω = k})
tactic: rw [show {ω | τ ω ≤ i} = ⋃ k ≤ i, {ω | τ ω = k} by ext; simp]
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
inst✝ : Countable ι
f : Filtration ι m
τ : Ω → ι
hτ : ∀ (i : ι), MeasurableSet {ω | τ ω = i}
i : ι
⊢ MeasurableSet (⋃ k, ⋃ (_ : k ≤ i), {ω | τ ω = k})
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
inst✝ : Countable ι
f : Filtration ι m
τ : Ω → ι
hτ : ∀ (i : ι), MeasurableSet {ω | τ ω = i}
i k : ι
hk : k ∈ fun k => Preorder.toLE.1 k i
⊢ MeasurableSet {ω | τ ω = k}
tactic: refine MeasurableSet.biUnion (Set.to_countable _) fun k hk => ?_
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
inst✝ : Countable ι
f : Filtration ι m
τ : Ω → ι
hτ : ∀ (i : ι), MeasurableSet {ω | τ ω = i}
i k : ι
hk : k ∈ fun k => Preorder.toLE.1 k i
⊢ MeasurableSet {ω | τ ω = k}
state_after: no goals
tactic: exact f.mono hk _ (hτ k)
Theorem: pow_eq_one_iff
File: Mathlib/Algebra/Order/Monoid/Unbundled/Pow.lean

Proof steps:
state_before: β : Type u_1
G : Type u_2
M : Type u_3
inst✝² : Monoid M
inst✝¹ : LinearOrder M
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
x : M
n : ℕ
hn : n ≠ 0
⊢ x ^ n = 1 ↔ x = 1
state_after: β : Type u_1
G : Type u_2
M : Type u_3
inst✝² : Monoid M
inst✝¹ : LinearOrder M
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
x : M
n : ℕ
hn : n ≠ 0
⊢ x ^ n ≤ 1 ∧ 1 ≤ x ^ n ↔ x ≤ 1 ∧ 1 ≤ x
tactic: simp only [le_antisymm_iff]
state_before: β : Type u_1
G : Type u_2
M : Type u_3
inst✝² : Monoid M
inst✝¹ : LinearOrder M
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
x : M
n : ℕ
hn : n ≠ 0
⊢ x ^ n ≤ 1 ∧ 1 ≤ x ^ n ↔ x ≤ 1 ∧ 1 ≤ x
state_after: no goals
tactic: rw [pow_le_one_iff hn, one_le_pow_iff hn]
Theorem: Polynomial.irreducible_iff_roots_eq_zero_of_degree_le_three
File: Mathlib/Algebra/Polynomial/SpecificDegree.lean

Proof steps:
state_before: K : Type u_1
inst✝ : Field K
p : K[X]
hp2 : 2 ≤ p.natDegree
hp3 : p.natDegree ≤ 3
⊢ Irreducible p ↔ p.roots = 0
state_after: K : Type u_1
inst✝ : Field K
p : K[X]
hp2 : 2 ≤ p.natDegree
hp3 : p.natDegree ≤ 3
hp0 : p ≠ 0
⊢ Irreducible p ↔ p.roots = 0
tactic: have hp0 : p ≠ 0 := by rintro rfl; rw [natDegree_zero] at hp2; cases hp2
state_before: K : Type u_1
inst✝ : Field K
p : K[X]
hp2 : 2 ≤ p.natDegree
hp3 : p.natDegree ≤ 3
hp0 : p ≠ 0
⊢ Irreducible p ↔ p.roots = 0
state_after: case ha
K : Type u_1
inst✝ : Field K
p : K[X]
hp2 : 2 ≤ p.natDegree
hp3 : p.natDegree ≤ 3
hp0 : p ≠ 0
⊢ p.leadingCoeff⁻¹ ≠ 0

case hp2
K : Type u_1
inst✝ : Field K
p : K[X]
hp2 : 2 ≤ p.natDegree
hp3 : p.natDegree ≤ 3
hp0 : p ≠ 0
⊢ 2 ≤ (p * C p.leadingCoeff⁻¹).natDegree

case hp3
K : Type u_1
inst✝ : Field K
p : K[X]
hp2 : 2 ≤ p.natDegree
hp3 : p.natDegree ≤ 3
hp0 : p ≠ 0
⊢ (p * C p.leadingCoeff⁻¹).natDegree ≤ 3
tactic: rw [← irreducible_mul_leadingCoeff_inv,
      (monic_mul_leadingCoeff_inv hp0).irreducible_iff_roots_eq_zero_of_degree_le_three,
      mul_comm, roots_C_mul]
Theorem: continuousWithinAt_union
File: Mathlib/Topology/ContinuousOn.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝³ : (i : ι) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
s t : Set α
x : α
⊢ ContinuousWithinAt f (s ∪ t) x ↔ ContinuousWithinAt f s x ∧ ContinuousWithinAt f t x
state_after: no goals
tactic: simp only [ContinuousWithinAt, nhdsWithin_union, tendsto_sup]
Theorem: IntermediateField.coe_isIntegral_iff
File: Mathlib/FieldTheory/IntermediateField.lean

Proof steps:
state_before: K : Type u_1
L : Type u_2
L' : Type u_3
inst✝⁸ : Field K
inst✝⁷ : Field L
inst✝⁶ : Field L'
inst✝⁵ : Algebra K L
inst✝⁴ : Algebra K L'
S : IntermediateField K L
R : Type u_4
inst✝³ : CommRing R
inst✝² : Algebra R K
inst✝¹ : Algebra R L
inst✝ : IsScalarTower R K L
x : ↥S
⊢ IsIntegral R ↑x ↔ IsIntegral R x
state_after: case refine_1
K : Type u_1
L : Type u_2
L' : Type u_3
inst✝⁸ : Field K
inst✝⁷ : Field L
inst✝⁶ : Field L'
inst✝⁵ : Algebra K L
inst✝⁴ : Algebra K L'
S : IntermediateField K L
R : Type u_4
inst✝³ : CommRing R
inst✝² : Algebra R K
inst✝¹ : Algebra R L
inst✝ : IsScalarTower R K L
x : ↥S
h : IsIntegral R ↑x
⊢ IsIntegral R x

case refine_2
K : Type u_1
L : Type u_2
L' : Type u_3
inst✝⁸ : Field K
inst✝⁷ : Field L
inst✝⁶ : Field L'
inst✝⁵ : Algebra K L
inst✝⁴ : Algebra K L'
S : IntermediateField K L
R : Type u_4
inst✝³ : CommRing R
inst✝² : Algebra R K
inst✝¹ : Algebra R L
inst✝ : IsScalarTower R K L
x : ↥S
h : IsIntegral R x
⊢ IsIntegral R ↑x
tactic: refine ⟨fun h => ?_, fun h => ?_⟩