ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Path.symm_range
File: Mathlib/Topology/Connected/PathConnected.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
γ✝ : Path x y
a b : X
γ : Path a b
⊢ range ⇑γ.symm = range ⇑γ
state_after: case h
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type u_3
γ✝ : Path x✝ y
a b : X
γ : Path a b
x : X
⊢ x ∈ range ⇑γ.symm ↔ x ∈ range ⇑γ
tactic: ext x
state_before: case h
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type u_3
γ✝ : Path x✝ y
a b : X
γ : Path a b
x : X
⊢ x ∈ range ⇑γ.symm ↔ x ∈ range ⇑γ
state_after: case h
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type u_3
γ✝ : Path x✝ y
a b : X
γ : Path a b
x : X
⊢ (∃ x_1, ∃ (h : x_1 ∈ I), γ.toFun ⟨1 - x_1, ⋯⟩ = x) ↔ ∃ x_1, ∃ (h : x_1 ∈ I), γ.toFun ⟨x_1, h⟩ = x
tactic: simp only [mem_range, Path.symm, DFunLike.coe, unitInterval.symm, SetCoe.exists, comp_apply,
    Subtype.coe_mk]
state_before: case h
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type u_3
γ✝ : Path x✝ y
a b : X
γ : Path a b
x : X
⊢ (∃ x_1, ∃ (h : x_1 ∈ I), γ.toFun ⟨1 - x_1, ⋯⟩ = x) ↔ ∃ x_1, ∃ (h : x_1 ∈ I), γ.toFun ⟨x_1, h⟩ = x
state_after: case h.e'_2.h.e'_6.h.e'_3
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y✝ z : X
ι : Type u_3
γ✝ : Path x✝ y✝
a b : X
γ : Path a b
x : X
y : ℝ
hy : y ∈ I
hxy : γ.toFun ⟨y, hy⟩ = x
⊢ 1 - (1 - y) = y
tactic: constructor <;> rintro ⟨y, hy, hxy⟩ <;> refine ⟨1 - y, mem_iff_one_sub_mem.mp hy, ?_⟩ <;>
    convert hxy
state_before: case h.e'_2.h.e'_6.h.e'_3
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y✝ z : X
ι : Type u_3
γ✝ : Path x✝ y✝
a b : X
γ : Path a b
x : X
y : ℝ
hy : y ∈ I
hxy : γ.toFun ⟨y, hy⟩ = x
⊢ 1 - (1 - y) = y
state_after: no goals
tactic: simp
Theorem: MeasureTheory.memℒp_indicator_iff_restrict
File: Mathlib/MeasureTheory/Function/LpSpace.lean

Proof steps:
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
c : E
f : α → E
hf : AEStronglyMeasurable f μ
s : Set α
hs : MeasurableSet s
⊢ Memℒp (s.indicator f) p μ ↔ Memℒp f p (μ.restrict s)
state_after: no goals
tactic: simp [Memℒp, aestronglyMeasurable_indicator_iff hs, eLpNorm_indicator_eq_eLpNorm_restrict hs]
Theorem: Nat.two_mul_div_two_add_one_of_odd
File: Mathlib/Algebra/Ring/Parity.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
m n : ℕ
h : Odd n
⊢ 2 * (n / 2) + 1 = n
state_after: no goals
tactic: rw [← odd_iff.mp h, div_add_mod]
Theorem: IsLocalization.integerNormalization_aeval_eq_zero
File: Mathlib/RingTheory/Localization/Integral.lean

Proof steps:
state_before: R : Type u_1
inst✝⁸ : CommRing R
M : Submonoid R
S : Type u_2
inst✝⁷ : CommRing S
inst✝⁶ : Algebra R S
P : Type u_3
inst✝⁵ : CommRing P
inst✝⁴ : IsLocalization M S
R' : Type u_4
inst✝³ : CommRing R'
inst✝² : Algebra R R'
inst✝¹ : Algebra S R'
inst✝ : IsScalarTower R S R'
p : S[X]
x : R'
hx : (aeval x) p = 0
⊢ (aeval x) (integerNormalization M p) = 0
state_after: no goals
tactic: rw [aeval_def, IsScalarTower.algebraMap_eq R S R',
    integerNormalization_eval₂_eq_zero _ (algebraMap _ _) _ hx]
Theorem: Turing.Tape.move_right_nth
File: Mathlib/Computability/TuringMachine.lean

Proof steps:
state_before: Γ : Type u_1
inst✝ : Inhabited Γ
T : Tape Γ
i : ℤ
⊢ (move Dir.right T).nth i = T.nth (i + 1)
state_after: Γ : Type u_1
inst✝ : Inhabited Γ
T : Tape Γ
i : ℤ
⊢ (move Dir.right T).nth i = (move Dir.left (move Dir.right T)).nth (i + 1)
tactic: conv => rhs; rw [← T.move_right_left]
state_before: Γ : Type u_1
inst✝ : Inhabited Γ
T : Tape Γ
i : ℤ
⊢ (move Dir.right T).nth i = (move Dir.left (move Dir.right T)).nth (i + 1)
state_after: no goals
tactic: rw [Tape.move_left_nth, add_sub_cancel_right]
Theorem: not_supIrred
File: Mathlib/Order/Irreducible.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
inst✝ : SemilatticeSup α
a b c : α
⊢ ¬SupIrred a ↔ IsMin a ∨ ∃ b c, b ⊔ c = a ∧ b < a ∧ c < a
state_after: ι : Type u_1
α : Type u_2
inst✝ : SemilatticeSup α
a b c : α
⊢ (¬¬IsMin a ∨ ¬∀ ⦃b c : α⦄, b ⊔ c = a → b = a ∨ c = a) ↔ IsMin a ∨ ∃ b c, b ⊔ c = a ∧ b < a ∧ c < a
tactic: rw [SupIrred, not_and_or]
state_before: ι : Type u_1
α : Type u_2
inst✝ : SemilatticeSup α
a b c : α
⊢ (¬¬IsMin a ∨ ¬∀ ⦃b c : α⦄, b ⊔ c = a → b = a ∨ c = a) ↔ IsMin a ∨ ∃ b c, b ⊔ c = a ∧ b < a ∧ c < a
state_after: ι : Type u_1
α : Type u_2
inst✝ : SemilatticeSup α
a b c : α
⊢ (IsMin a ∨ ∃ b c, b ⊔ c = a ∧ b ≠ a ∧ c ≠ a) ↔ IsMin a ∨ ∃ b c, b ⊔ c = a ∧ b < a ∧ c < a
tactic: push_neg
state_before: ι : Type u_1
α : Type u_2
inst✝ : SemilatticeSup α
a b c : α
⊢ (IsMin a ∨ ∃ b c, b ⊔ c = a ∧ b ≠ a ∧ c ≠ a) ↔ IsMin a ∨ ∃ b c, b ⊔ c = a ∧ b < a ∧ c < a
state_after: ι : Type u_1
α : Type u_2
inst✝ : SemilatticeSup α
a b c : α
⊢ ∀ (a_1 b : α), a_1 ⊔ b = a ∧ a_1 ≠ a ∧ b ≠ a ↔ a_1 ⊔ b = a ∧ a_1 < a ∧ b < a
tactic: rw [exists₂_congr]
state_before: ι : Type u_1
α : Type u_2
inst✝ : SemilatticeSup α
a b c : α
⊢ ∀ (a_1 b : α), a_1 ⊔ b = a ∧ a_1 ≠ a ∧ b ≠ a ↔ a_1 ⊔ b = a ∧ a_1 < a ∧ b < a
state_after: no goals
tactic: simp (config := { contextual := true }) [@eq_comm _ _ a]
Theorem: Finset.filter_lt_le_eq_Ioc
File: Mathlib/Order/Interval/Finset/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
inst✝³ : Preorder α
inst✝² : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
inst✝¹ : Fintype α
inst✝ : DecidablePred fun j => a < j ∧ j ≤ b
⊢ filter (fun j => a < j ∧ j ≤ b) univ = Ioc a b
state_after: case a
ι : Type u_1
α : Type u_2
inst✝³ : Preorder α
inst✝² : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
inst✝¹ : Fintype α
inst✝ : DecidablePred fun j => a < j ∧ j ≤ b
a✝ : α
⊢ a✝ ∈ filter (fun j => a < j ∧ j ≤ b) univ ↔ a✝ ∈ Ioc a b
tactic: ext
state_before: case a
ι : Type u_1
α : Type u_2
inst✝³ : Preorder α
inst✝² : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
inst✝¹ : Fintype α
inst✝ : DecidablePred fun j => a < j ∧ j ≤ b
a✝ : α
⊢ a✝ ∈ filter (fun j => a < j ∧ j ≤ b) univ ↔ a✝ ∈ Ioc a b
state_after: no goals
tactic: simp
Theorem: Finpartition.avoid_parts_val
File: Mathlib/Order/Partition/Finpartition.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : GeneralizedBooleanAlgebra α
inst✝ : DecidableEq α
a b✝ c : α
P : Finpartition a
b : α
⊢ (image (fun x => x \ b) P.parts).sup id = a \ b
state_after: no goals
tactic: rw [sup_image, id_comp, Finset.sup_sdiff_right, ← Function.id_def, P.sup_parts]
Theorem: div_div_div_cancel_left
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 a b c : G
⊢ c / a / (c / b) = b / a
state_after: no goals
tactic: rw [← inv_div b c, div_inv_eq_mul, mul_comm, div_mul_div_cancel']
Theorem: ValuationSubring.ofPrime_idealOfLE
File: Mathlib/RingTheory/Valuation/ValuationSubring.lean

Proof steps:
state_before: K : Type u
inst✝ : Field K
A R S : ValuationSubring K
h : R ≤ S
⊢ R.ofPrime (R.idealOfLE S h) = S
state_after: case h
K : Type u
inst✝ : Field K
A R S : ValuationSubring K
h : R ≤ S
x : K
⊢ x ∈ R.ofPrime (R.idealOfLE S h) ↔ x ∈ S
tactic: ext x
state_before: case h
K : Type u
inst✝ : Field K
A R S : ValuationSubring K
h : R ≤ S
x : K
⊢ x ∈ R.ofPrime (R.idealOfLE S h) ↔ x ∈ S
state_after: case h.mp
K : Type u
inst✝ : Field K
A R S : ValuationSubring K
h : R ≤ S
x : K
⊢ x ∈ R.ofPrime (R.idealOfLE S h) → x ∈ S

case h.mpr
K : Type u
inst✝ : Field K
A R S : ValuationSubring K
h : R ≤ S
x : K
⊢ x ∈ S → x ∈ R.ofPrime (R.idealOfLE S h)
tactic: constructor
Theorem: SimpleGraph.IsTuranMaximal.card_parts_le
File: Mathlib/Combinatorics/SimpleGraph/Turan.lean

Proof steps:
state_before: V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
⊢ h.finpartition.parts.card ≤ r
state_after: V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
⊢ False
tactic: by_contra! l
state_before: V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
⊢ False
state_after: case intro.intro
V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
⊢ False
tactic: obtain ⟨z, -, hz⟩ := h.finpartition.exists_subset_part_bijOn
state_before: case intro.intro
V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
⊢ False
state_after: case intro.intro
V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
ncf : ¬G.CliqueFree z.card
⊢ False
tactic: have ncf : ¬G.CliqueFree z.card := by
    refine IsNClique.not_cliqueFree ⟨fun v hv w hw hn ↦ ?_, rfl⟩
    contrapose! hn
    exact hz.injOn hv hw (by rwa [← h.not_adj_iff_part_eq])
state_before: case intro.intro
V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
ncf : ¬G.CliqueFree z.card
⊢ False
state_after: case intro.intro
V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
ncf : ¬G.CliqueFree h.finpartition.parts.card
⊢ False
tactic: rw [Finset.card_eq_of_equiv hz.equiv] at ncf
state_before: case intro.intro
V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
ncf : ¬G.CliqueFree h.finpartition.parts.card
⊢ False
state_after: no goals
tactic: exact absurd (h.1.mono (Nat.succ_le_of_lt l)) ncf
Theorem: ProbabilityTheory.Kernel.condKernel_def
File: Mathlib/Probability/Kernel/Disintegration/StandardBorel.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
Ω : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝⁴ : CountablyGenerated γ
inst✝³ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
h✝ : CountableOrCountablyGenerated α β
κ : Kernel α (β × Ω)
inst✝ : IsFiniteKernel κ
hα : Countable α
x y : α
h : x ∈ measurableAtom y
⊢ (fun a => (κ a).condKernel) x = (fun a => (κ a).condKernel) y
state_after: no goals
tactic: simp [apply_congr_of_mem_measurableAtom _ h]
Theorem: Polynomial.isCoprime_map
File: Mathlib/Algebra/Polynomial/FieldDivision.lean

Proof steps:
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝¹ : Field R
p q : R[X]
inst✝ : Field k
f : R →+* k
⊢ IsCoprime (map f p) (map f q) ↔ IsCoprime p q
state_after: no goals
tactic: classical
  rw [← EuclideanDomain.gcd_isUnit_iff, ← EuclideanDomain.gcd_isUnit_iff, gcd_map, isUnit_map]
Theorem: ContinuousMonoidHom.closedEmbedding_toContinuousMap
File: Mathlib/Topology/Algebra/ContinuousMonoidHom.lean

Proof steps:
state_before: F : Type u_1
A : Type u_2
B : Type u_3
C : Type u_4
D : Type u_5
E : Type u_6
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
⊢ IsClosed (Set.range toContinuousMap)
state_after: F : Type u_1
A : Type u_2
B : Type u_3
C : Type u_4
D : Type u_5
E : Type u_6
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
⊢ IsClosed ({a | a 1 = 1} ∩ ⋂ i, ⋂ i_1, {x | x (i * i_1) = x i * x i_1})
tactic: simp only [range_toContinuousMap, Set.setOf_and, Set.setOf_forall]
state_before: F : Type u_1
A : Type u_2
B : Type u_3
C : Type u_4
D : Type u_5
E : Type u_6
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
⊢ IsClosed ({a | a 1 = 1} ∩ ⋂ i, ⋂ i_1, {x | x (i * i_1) = x i * x i_1})
state_after: F : Type u_1
A : Type u_2
B : Type u_3
C : Type u_4
D : Type u_5
E : Type u_6
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
x y : A
⊢ IsClosed {x_1 | x_1 (x * y) = x_1 x * x_1 y}
tactic: refine .inter (isClosed_singleton.preimage (ContinuousMap.continuous_eval_const 1)) <|
      isClosed_iInter fun x ↦ isClosed_iInter fun y ↦ ?_
state_before: F : Type u_1
A : Type u_2
B : Type u_3
C : Type u_4
D : Type u_5
E : Type u_6
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
x y : A
⊢ IsClosed {x_1 | x_1 (x * y) = x_1 x * x_1 y}
state_after: no goals
tactic: exact isClosed_eq (ContinuousMap.continuous_eval_const (x * y)) <|
      .mul (ContinuousMap.continuous_eval_const x) (ContinuousMap.continuous_eval_const y)
Theorem: intervalIntegral.abs_integral_le_integral_abs
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

Proof steps:
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f g : ℝ → ℝ
a b : ℝ
μ : Measure ℝ
hab : a ≤ b
⊢ |∫ (x : ℝ) in a..b, f x ∂μ| ≤ ∫ (x : ℝ) in a..b, |f x| ∂μ
state_after: no goals
tactic: simpa only [← Real.norm_eq_abs] using norm_integral_le_integral_norm hab
Theorem: Int.add_modEq_right
File: Mathlib/Data/Int/ModEq.lean

Proof steps:
state_before: m n a b c d : ℤ
⊢ n ∣ a + n - a
state_after: no goals
tactic: simp
Theorem: Ordinal.opow_isLimit_left
File: Mathlib/SetTheory/Ordinal/Exponential.lean

Proof steps:
state_before: a b : Ordinal.{u_1}
l : a.IsLimit
hb : b ≠ 0
⊢ (a ^ b).IsLimit
state_after: case inl
a b : Ordinal.{u_1}
l : a.IsLimit
hb : b ≠ 0
e : b = 0
⊢ (a ^ b).IsLimit

case inr.inl.intro
a : Ordinal.{u_1}
l : a.IsLimit
b : Ordinal.{u_1}
hb : succ b ≠ 0
⊢ (a ^ succ b).IsLimit

case inr.inr
a b : Ordinal.{u_1}
l : a.IsLimit
hb : b ≠ 0
l' : b.IsLimit
⊢ (a ^ b).IsLimit
tactic: rcases zero_or_succ_or_limit b with (e | ⟨b, rfl⟩ | l')
Theorem: Finset.centroid_pair_fin
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

Proof steps:
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
inst✝ : Invertible 2
p : Fin 2 → P
⊢ centroid k univ p = 2⁻¹ • (p 1 -ᵥ p 0) +ᵥ p 0
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
inst✝ : Invertible 2
p : Fin 2 → P
⊢ centroid k {0, 1} p = 2⁻¹ • (p 1 -ᵥ p 0) +ᵥ p 0
tactic: rw [univ_fin2]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
inst✝ : Invertible 2
p : Fin 2 → P
⊢ centroid k {0, 1} p = 2⁻¹ • (p 1 -ᵥ p 0) +ᵥ p 0
state_after: no goals
tactic: convert centroid_pair k p 0 1
Theorem: Subsingleton.pi_single_eq
File: Mathlib/Algebra/Group/Pi/Basic.lean

Proof steps:
state_before: I : Type u
α✝ : Type u_1
β : Type u_2
γ : Type u_3
f : I → Type v₁
g : I → Type v₂
h : I → Type v₃
x✝ y : (i : I) → f i
i✝ : I
α : Type u_4
inst✝² : DecidableEq I
inst✝¹ : Subsingleton I
inst✝ : One α
i : I
x : α
j : I
⊢ Pi.mulSingle i x j = x
state_after: no goals
tactic: rw [Subsingleton.elim j i, Pi.mulSingle_eq_same]
Theorem: Nat.sum_four_squares
File: Mathlib/NumberTheory/SumFourSquares.lean

Proof steps:
state_before: n : ℕ
⊢ ∃ a b c d, a ^ 2 + b ^ 2 + c ^ 2 + d ^ 2 = n
state_after: no goals
tactic: induction n using Nat.recOnMul with
  | h0 => exact ⟨0, 0, 0, 0, rfl⟩
  | h1 => exact ⟨1, 0, 0, 0, rfl⟩
  | hp p hp => exact hp.sum_four_squares
  | h m n hm hn =>
    rcases hm with ⟨a, b, c, d, rfl⟩
    rcases hn with ⟨w, x, y, z, rfl⟩
    exact ⟨_, _, _, _, euler_four_squares _ _ _ _ _ _ _ _⟩
Theorem: TopCat.Presheaf.SheafConditionEqualizerProducts.res_π
File: Mathlib/Topology/Sheaves/SheafCondition/EqualizerProducts.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasProducts C
X : TopCat
F : Presheaf C X
ι : Type v'
U : ι → Opens ↑X
i : ι
⊢ res F U ≫ limit.π (Discrete.functor fun i => F.obj (op (U i))) { as := i } = F.map (leSupr U i).op
state_after: no goals
tactic: rw [res, limit.lift_π, Fan.mk_π_app]
Theorem: Dvd.intro_left
File: Mathlib/Algebra/Divisibility/Basic.lean

Proof steps:
state_before: α : Type u_1
inst✝ : CommSemigroup α
a b c✝ c : α
h : c * a = b
⊢ a * c = b
state_after: α : Type u_1
inst✝ : CommSemigroup α
a b c✝ c : α
h : a * c = b
⊢ a * c = b
tactic: rw [mul_comm] at h
state_before: α : Type u_1
inst✝ : CommSemigroup α
a b c✝ c : α
h : a * c = b
⊢ a * c = b
state_after: no goals
tactic: apply h
Theorem: CategoryTheory.Limits.IsLimit.uniq_cone_morphism
File: Mathlib/CategoryTheory/Limits/IsLimit.lean

Proof steps:
state_before: J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
s t : Cone F
h : IsLimit t
f f' : s ⟶ t
⊢ ∀ {g : s ⟶ t}, g = h.liftConeMorphism s
state_after: J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
s t : Cone F
h : IsLimit t
f f' g : s ⟶ t
⊢ g = h.liftConeMorphism s
tactic: intro g
state_before: J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
s t : Cone F
h : IsLimit t
f f' g : s ⟶ t
⊢ g = h.liftConeMorphism s
state_after: case w
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
s t : Cone F
h : IsLimit t
f f' g : s ⟶ t
⊢ g.hom = (h.liftConeMorphism s).hom
tactic: apply ConeMorphism.ext
state_before: case w
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
s t : Cone F
h : IsLimit t
f f' g : s ⟶ t
⊢ g.hom = (h.liftConeMorphism s).hom
state_after: no goals
tactic: exact h.uniq _ _ g.w
Theorem: Nat.Icc_factorization_eq_pow_dvd
File: Mathlib/Data/Nat/Factorization/Basic.lean

Proof steps:
state_before: a b m n✝ p✝ n p : ℕ
pp : Prime p
⊢ Icc 1 (n.factorization p) = Finset.filter (fun i => p ^ i ∣ n) (Ico 1 n)
state_after: case inl
a b m n p✝ p : ℕ
pp : Prime p
⊢ Icc 1 ((factorization 0) p) = Finset.filter (fun i => p ^ i ∣ 0) (Ico 1 0)

case inr
a b m n✝ p✝ n p : ℕ
pp : Prime p
hn : n ≠ 0
⊢ Icc 1 (n.factorization p) = Finset.filter (fun i => p ^ i ∣ n) (Ico 1 n)
tactic: rcases eq_or_ne n 0 with (rfl | hn)
state_before: case inr
a b m n✝ p✝ n p : ℕ
pp : Prime p
hn : n ≠ 0
⊢ Icc 1 (n.factorization p) = Finset.filter (fun i => p ^ i ∣ n) (Ico 1 n)
state_after: case inr.a
a b m n✝ p✝ n p : ℕ
pp : Prime p
hn : n ≠ 0
x : ℕ
⊢ x ∈ Icc 1 (n.factorization p) ↔ x ∈ Finset.filter (fun i => p ^ i ∣ n) (Ico 1 n)
tactic: ext x
state_before: case inr.a
a b m n✝ p✝ n p : ℕ
pp : Prime p
hn : n ≠ 0
x : ℕ
⊢ x ∈ Icc 1 (n.factorization p) ↔ x ∈ Finset.filter (fun i => p ^ i ∣ n) (Ico 1 n)
state_after: case inr.a
a b m n✝ p✝ n p : ℕ
pp : Prime p
hn : n ≠ 0
x : ℕ
⊢ 1 ≤ x → x ≤ n.factorization p → x < n
tactic: simp only [mem_Icc, Finset.mem_filter, mem_Ico, and_assoc, and_congr_right_iff,
    pp.pow_dvd_iff_le_factorization hn, iff_and_self]
state_before: case inr.a
a b m n✝ p✝ n p : ℕ
pp : Prime p
hn : n ≠ 0
x : ℕ
⊢ 1 ≤ x → x ≤ n.factorization p → x < n
state_after: no goals
tactic: exact fun _ H => lt_of_le_of_lt H (factorization_lt p hn)
Theorem: Mathlib.Tactic.Ring.mul_zero
File: Mathlib/Tactic/Ring/Basic.lean

Proof steps:
state_before: u✝ : Lean.Level
arg : Q(Type u✝)
sα✝ : Q(CommSemiring «$arg»)
u : Lean.Level
α : Q(Type u)
sα : Q(CommSemiring «$α»)
R : Type u_1
inst✝ : CommSemiring R
a✝ a' a₁ a₂ a₃ b b' b₁ b₂ b₃ c c₁ c₂ a : R
⊢ a * 0 = 0
state_after: no goals
tactic: simp
Theorem: TopologicalSpace.NoetherianSpace.exists_finset_irreducible
File: Mathlib/Topology/NoetherianSpace.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : NoetherianSpace α
s : Closeds α
⊢ ∃ S, (∀ (k : { x // x ∈ S }), IsIrreducible ↑↑k) ∧ s = S.sup id
state_after: no goals
tactic: simpa [Set.exists_finite_iff_finset, Finset.sup_id_eq_sSup]
    using NoetherianSpace.exists_finite_set_closeds_irreducible s
Theorem: left_neg_eq_right_neg
File: Mathlib/Algebra/Group/Defs.lean

Proof steps:
state_before: G : Type u_1
M : Type u_2
inst✝ : Monoid M
a b c : M
m n : ℕ
hba : b * a = 1
hac : a * c = 1
⊢ b = c
state_after: no goals
tactic: rw [← one_mul c, ← hba, mul_assoc, hac, mul_one b]
Theorem: sub_lt_sub
File: Mathlib/Algebra/Order/Group/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u
inst✝² : CommGroup α
inst✝¹ : Preorder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c d : α
hab : a < b
hcd : c < d
⊢ a / d < b / c
state_after: α : Type u
inst✝² : CommGroup α
inst✝¹ : Preorder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c d : α
hab : a < b
hcd : c < d
⊢ a * c < b * d
tactic: rw [div_eq_mul_inv, div_eq_mul_inv, mul_comm b, mul_inv_lt_inv_mul_iff, mul_comm]
state_before: α : Type u
inst✝² : CommGroup α
inst✝¹ : Preorder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c d : α
hab : a < b
hcd : c < d
⊢ a * c < b * d
state_after: no goals
tactic: exact mul_lt_mul_of_lt_of_lt hab hcd
Theorem: Cardinal.zero_eq_lift_iff
File: Mathlib/SetTheory/Cardinal/Basic.lean

Proof steps:
state_before: α β : Type u
a : Cardinal.{u}
⊢ 0 = lift.{v, u} a ↔ 0 = a
state_after: no goals
tactic: simpa using nat_eq_lift_iff (n := 0)
Theorem: Substring.Valid.contains
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

Proof steps:
state_before: c : Char
x✝ : Substring
h✝ : x✝.Valid
w✝² w✝¹ w✝ : List Char
h : ValidFor w✝² w✝¹ w✝ x✝
⊢ x✝.contains c = true ↔ c ∈ x✝.toString.data
state_after: no goals
tactic: simp [h.contains, h.toString]