ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: hasSum_zeta_nat
File: Mathlib/NumberTheory/ZetaValues.lean

Proof steps:
state_before: k : ℕ
hk : k ≠ 0
⊢ HasSum (fun n => 1 / ↑n ^ (2 * k)) ((-1) ^ (k + 1) * 2 ^ (2 * k - 1) * π ^ (2 * k) * ↑(bernoulli (2 * k)) / ↑(2 * k)!)
state_after: case h.e'_5
k : ℕ
hk : k ≠ 0
⊢ (fun n => 1 / ↑n ^ (2 * k)) = fun n => 1 / ↑n ^ (2 * k) * Real.cos (2 * π * ↑n * 0)

case h.e'_6
k : ℕ
hk : k ≠ 0
⊢ (-1) ^ (k + 1) * 2 ^ (2 * k - 1) * π ^ (2 * k) * ↑(bernoulli (2 * k)) / ↑(2 * k)! =
    (-1) ^ (k + 1) * (2 * π) ^ (2 * k) / 2 / ↑(2 * k)! *
      Polynomial.eval 0 (Polynomial.map (algebraMap ℚ ℝ) (Polynomial.bernoulli (2 * k)))
tactic: convert hasSum_one_div_nat_pow_mul_cos hk (left_mem_Icc.mpr zero_le_one) using 1
state_before: case h.e'_6
k : ℕ
hk : k ≠ 0
⊢ (-1) ^ (k + 1) * 2 ^ (2 * k - 1) * π ^ (2 * k) * ↑(bernoulli (2 * k)) / ↑(2 * k)! =
    (-1) ^ (k + 1) * (2 * π) ^ (2 * k) / 2 / ↑(2 * k)! *
      Polynomial.eval 0 (Polynomial.map (algebraMap ℚ ℝ) (Polynomial.bernoulli (2 * k)))
state_after: case h.e'_6
k : ℕ
hk : k ≠ 0
⊢ (-1) ^ (k + 1) * 2 ^ (2 * k - 1) * π ^ (2 * k) * ↑(bernoulli (2 * k)) / ↑(2 * k)! =
    (-1) ^ (k + 1) * (2 * π) ^ (2 * k) / 2 / ↑(2 * k)! * ↑(bernoulli (2 * k))
tactic: rw [Polynomial.eval_zero_map, Polynomial.bernoulli_eval_zero, eq_ratCast]
state_before: case h.e'_6
k : ℕ
hk : k ≠ 0
this : 2 ^ (2 * k - 1) = 2 ^ (2 * k) / 2
⊢ (-1) ^ (k + 1) * 2 ^ (2 * k - 1) * π ^ (2 * k) * ↑(bernoulli (2 * k)) / ↑(2 * k)! =
    (-1) ^ (k + 1) * (2 * π) ^ (2 * k) / 2 / ↑(2 * k)! * ↑(bernoulli (2 * k))
state_after: case h.e'_6
k : ℕ
hk : k ≠ 0
this : 2 ^ (2 * k - 1) = 2 ^ (2 * k) / 2
⊢ (-1) ^ (k + 1) * (2 ^ (2 * k) / 2) * π ^ (2 * k) * ↑(bernoulli (2 * k)) / ↑(2 * k)! =
    (-1) ^ (k + 1) * (2 ^ (2 * k) * π ^ (2 * k)) / 2 / ↑(2 * k)! * ↑(bernoulli (2 * k))
tactic: rw [this, mul_pow]
state_before: case h.e'_6
k : ℕ
hk : k ≠ 0
this : 2 ^ (2 * k - 1) = 2 ^ (2 * k) / 2
⊢ (-1) ^ (k + 1) * (2 ^ (2 * k) / 2) * π ^ (2 * k) * ↑(bernoulli (2 * k)) / ↑(2 * k)! =
    (-1) ^ (k + 1) * (2 ^ (2 * k) * π ^ (2 * k)) / 2 / ↑(2 * k)! * ↑(bernoulli (2 * k))
state_after: no goals
tactic: ring
Theorem: WithBot.map₂_coe_right
File: Mathlib/Order/WithBot.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
a✝ b✝ : α
f : α → β → γ
a : WithBot α
b : β
⊢ map₂ f a ↑b = map (fun x => f x b) a
state_after: no goals
tactic: cases a <;> rfl
Theorem: Equiv.sigmaCongrRight_sigmaEquivProd
File: Mathlib/Logic/Equiv/Basic.lean

Proof steps:
state_before: α₁ : Type u_1
β₁ : Type u_3
β₂ : Type u_2
e : α₁ → β₁ ≃ β₂
⊢ (sigmaCongrRight e).trans (sigmaEquivProd α₁ β₂) = (sigmaEquivProd α₁ β₁).trans (prodCongrRight e)
state_after: case H.mk
α₁ : Type u_1
β₁ : Type u_3
β₂ : Type u_2
e : α₁ → β₁ ≃ β₂
a : α₁
b : β₁
⊢ ((sigmaCongrRight e).trans (sigmaEquivProd α₁ β₂)) ⟨a, b⟩ = ((sigmaEquivProd α₁ β₁).trans (prodCongrRight e)) ⟨a, b⟩
tactic: ext ⟨a, b⟩ : 1
state_before: case H.mk
α₁ : Type u_1
β₁ : Type u_3
β₂ : Type u_2
e : α₁ → β₁ ≃ β₂
a : α₁
b : β₁
⊢ ((sigmaCongrRight e).trans (sigmaEquivProd α₁ β₂)) ⟨a, b⟩ = ((sigmaEquivProd α₁ β₁).trans (prodCongrRight e)) ⟨a, b⟩
state_after: no goals
tactic: simp
Theorem: sq_nonneg
File: Mathlib/Algebra/Order/Ring/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u
β : Type u_1
inst✝⁶ : Semiring α
inst✝⁵ : LinearOrder α
a✝ b c d : α
inst✝⁴ : IsRightCancelAdd α
inst✝³ : ZeroLEOneClass α
inst✝² : ExistsAddOfLE α
inst✝¹ : PosMulMono α
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x < x_1
a : α
⊢ 0 ≤ a ^ 2
state_after: case inl
α : Type u
β : Type u_1
inst✝⁶ : Semiring α
inst✝⁵ : LinearOrder α
a✝ b c d : α
inst✝⁴ : IsRightCancelAdd α
inst✝³ : ZeroLEOneClass α
inst✝² : ExistsAddOfLE α
inst✝¹ : PosMulMono α
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x < x_1
a : α
ha : 0 ≤ a
⊢ 0 ≤ a ^ 2

case inr
α : Type u
β : Type u_1
inst✝⁶ : Semiring α
inst✝⁵ : LinearOrder α
a✝ b c d : α
inst✝⁴ : IsRightCancelAdd α
inst✝³ : ZeroLEOneClass α
inst✝² : ExistsAddOfLE α
inst✝¹ : PosMulMono α
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x < x_1
a : α
ha : a ≤ 0
⊢ 0 ≤ a ^ 2
tactic: obtain ha | ha := le_total 0 a
state_before: case inr
α : Type u
β : Type u_1
inst✝⁶ : Semiring α
inst✝⁵ : LinearOrder α
a✝ b c d : α
inst✝⁴ : IsRightCancelAdd α
inst✝³ : ZeroLEOneClass α
inst✝² : ExistsAddOfLE α
inst✝¹ : PosMulMono α
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x < x_1
a : α
ha : a ≤ 0
⊢ 0 ≤ a ^ 2
state_after: case inr.intro
α : Type u
β : Type u_1
inst✝⁶ : Semiring α
inst✝⁵ : LinearOrder α
a✝ b✝ c d : α
inst✝⁴ : IsRightCancelAdd α
inst✝³ : ZeroLEOneClass α
inst✝² : ExistsAddOfLE α
inst✝¹ : PosMulMono α
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x < x_1
a : α
ha : a ≤ 0
b : α
hab : 0 = a + b
⊢ 0 ≤ a ^ 2
tactic: obtain ⟨b, hab⟩ := exists_add_of_le ha
state_before: case inr.intro
α : Type u
β : Type u_1
inst✝⁶ : Semiring α
inst✝⁵ : LinearOrder α
a✝ b✝ c d : α
inst✝⁴ : IsRightCancelAdd α
inst✝³ : ZeroLEOneClass α
inst✝² : ExistsAddOfLE α
inst✝¹ : PosMulMono α
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x < x_1
a : α
ha : a ≤ 0
b : α
hab : 0 = a + b
⊢ 0 ≤ a ^ 2
state_after: case inr.intro
α : Type u
β : Type u_1
inst✝⁶ : Semiring α
inst✝⁵ : LinearOrder α
a✝ b✝ c d : α
inst✝⁴ : IsRightCancelAdd α
inst✝³ : ZeroLEOneClass α
inst✝² : ExistsAddOfLE α
inst✝¹ : PosMulMono α
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x < x_1
a : α
ha : a ≤ 0
b : α
hab : 0 = a + b
⊢ (fun x => x + a * b) (b ^ 2) = (fun x => x + a * b) (a ^ 2)
tactic: calc
    0 ≤ b ^ 2 := pow_nonneg (not_lt.1 fun hb ↦ hab.not_gt <| add_neg_of_nonpos_of_neg ha hb) _
    _ = a ^ 2 := add_left_injective (a * b) ?_
state_before: case inr.intro
α : Type u
β : Type u_1
inst✝⁶ : Semiring α
inst✝⁵ : LinearOrder α
a✝ b✝ c d : α
inst✝⁴ : IsRightCancelAdd α
inst✝³ : ZeroLEOneClass α
inst✝² : ExistsAddOfLE α
inst✝¹ : PosMulMono α
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x < x_1
a : α
ha : a ≤ 0
b : α
hab : 0 = a + b
⊢ (fun x => x + a * b) (b ^ 2) = (fun x => x + a * b) (a ^ 2)
state_after: no goals
tactic: calc
    b ^ 2 + a * b = (a + b) * b := by rw [add_comm, sq, add_mul]
    _ = a * (a + b) := by simp [← hab]
    _ = a ^ 2 + a * b := by rw [sq, mul_add]
Theorem: IsClosedMap.id
File: Mathlib/Topology/Maps/Basic.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
ι : Type u_4
f : X → Y
g : Y → Z
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
s : Set X
hs : IsClosed s
⊢ IsClosed (id '' s)
state_after: no goals
tactic: rwa [image_id]
Theorem: Asymptotics.isBigO_iff
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
E''' : Type u_12
R : Type u_13
R' : Type u_14
𝕜 : Type u_15
𝕜' : Type u_16
inst✝¹³ : Norm E
inst✝¹² : Norm F
inst✝¹¹ : Norm G
inst✝¹⁰ : SeminormedAddCommGroup E'
inst✝⁹ : SeminormedAddCommGroup F'
inst✝⁸ : SeminormedAddCommGroup G'
inst✝⁷ : NormedAddCommGroup E''
inst✝⁶ : NormedAddCommGroup F''
inst✝⁵ : NormedAddCommGroup G''
inst✝⁴ : SeminormedRing R
inst✝³ : SeminormedAddGroup E'''
inst✝² : SeminormedRing R'
inst✝¹ : NormedDivisionRing 𝕜
inst✝ : NormedDivisionRing 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
⊢ f =O[l] g ↔ ∃ c, ∀ᶠ (x : α) in l, ‖f x‖ ≤ c * ‖g x‖
state_after: no goals
tactic: simp only [IsBigO_def, IsBigOWith_def]
Theorem: Filter.HasBasis.uniformity_of_nhds_one_inv_mul_swapped
File: Mathlib/Topology/Algebra/UniformGroup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
ι : Sort u_3
p : ι → Prop
U : ι → Set α
h : (𝓝 1).HasBasis p U
⊢ (𝓤 α).HasBasis p fun i => {x | x.2⁻¹ * x.1 ∈ U i}
state_after: α : Type u_1
β : Type u_2
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
ι : Sort u_3
p : ι → Prop
U : ι → Set α
h : (𝓝 1).HasBasis p U
⊢ (Filter.comap (fun x => x.2⁻¹ * x.1) (𝓝 1)).HasBasis p fun i => {x | x.2⁻¹ * x.1 ∈ U i}
tactic: rw [uniformity_eq_comap_inv_mul_nhds_one_swapped]
state_before: α : Type u_1
β : Type u_2
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
ι : Sort u_3
p : ι → Prop
U : ι → Set α
h : (𝓝 1).HasBasis p U
⊢ (Filter.comap (fun x => x.2⁻¹ * x.1) (𝓝 1)).HasBasis p fun i => {x | x.2⁻¹ * x.1 ∈ U i}
state_after: no goals
tactic: exact h.comap _
Theorem: MatrixEquivTensor.invFun_zero
File: Mathlib/RingTheory/MatrixAlgebra.lean

Proof steps:
state_before: R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
⊢ invFun R A n 0 = 0
state_after: no goals
tactic: simp [invFun]
Theorem: Subalgebra.finite_sup
File: Mathlib/RingTheory/TensorProduct/Basic.lean

Proof steps:
state_before: K : Type u_1
L : Type u_2
inst✝⁴ : CommSemiring K
inst✝³ : CommSemiring L
inst✝² : Algebra K L
E1 E2 : Subalgebra K L
inst✝¹ : Module.Finite K ↥E1
inst✝ : Module.Finite K ↥E2
⊢ Module.Finite K ↥(E1 ⊔ E2)
state_after: K : Type u_1
L : Type u_2
inst✝⁴ : CommSemiring K
inst✝³ : CommSemiring L
inst✝² : Algebra K L
E1 E2 : Subalgebra K L
inst✝¹ : Module.Finite K ↥E1
inst✝ : Module.Finite K ↥E2
⊢ Module.Finite K ↥(Algebra.TensorProduct.productMap E1.val E2.val).range
tactic: rw [← E1.range_val, ← E2.range_val, ← Algebra.TensorProduct.productMap_range]
state_before: K : Type u_1
L : Type u_2
inst✝⁴ : CommSemiring K
inst✝³ : CommSemiring L
inst✝² : Algebra K L
E1 E2 : Subalgebra K L
inst✝¹ : Module.Finite K ↥E1
inst✝ : Module.Finite K ↥E2
⊢ Module.Finite K ↥(Algebra.TensorProduct.productMap E1.val E2.val).range
state_after: no goals
tactic: exact Module.Finite.range (Algebra.TensorProduct.productMap E1.val E2.val).toLinearMap
Theorem: integral_one_div_of_pos
File: Mathlib/Analysis/SpecialFunctions/Integrals.lean

Proof steps:
state_before: a b : ℝ
n : ℕ
ha : 0 < a
hb : 0 < b
⊢ ∫ (x : ℝ) in a..b, 1 / x = Real.log (b / a)
state_after: no goals
tactic: simp only [one_div, integral_inv_of_pos ha hb]
Theorem: CategoryTheory.Functor.distTriang_iff
File: Mathlib/CategoryTheory/Localization/Triangulated.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝¹⁴ : Category.{u_4, u_1} C
inst✝¹³ : Category.{u_3, u_2} D
L : C ⥤ D
inst✝¹² : HasShift C ℤ
inst✝¹¹ : Preadditive C
inst✝¹⁰ : HasZeroObject C
inst✝⁹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝⁸ : Pretriangulated C
inst✝⁷ : HasShift D ℤ
inst✝⁶ : L.CommShift ℤ
inst✝⁵ : HasZeroObject D
inst✝⁴ : Preadditive D
inst✝³ : ∀ (n : ℤ), (shiftFunctor D n).Additive
inst✝² : Pretriangulated D
inst✝¹ : L.mapArrow.EssSurj
inst✝ : L.IsTriangulated
T : Triangle D
⊢ T ∈ distinguishedTriangles ↔ T ∈ L.essImageDistTriang
state_after: case mp
C : Type u_1
D : Type u_2
inst✝¹⁴ : Category.{u_4, u_1} C
inst✝¹³ : Category.{u_3, u_2} D
L : C ⥤ D
inst✝¹² : HasShift C ℤ
inst✝¹¹ : Preadditive C
inst✝¹⁰ : HasZeroObject C
inst✝⁹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝⁸ : Pretriangulated C
inst✝⁷ : HasShift D ℤ
inst✝⁶ : L.CommShift ℤ
inst✝⁵ : HasZeroObject D
inst✝⁴ : Preadditive D
inst✝³ : ∀ (n : ℤ), (shiftFunctor D n).Additive
inst✝² : Pretriangulated D
inst✝¹ : L.mapArrow.EssSurj
inst✝ : L.IsTriangulated
T : Triangle D
⊢ T ∈ distinguishedTriangles → T ∈ L.essImageDistTriang

case mpr
C : Type u_1
D : Type u_2
inst✝¹⁴ : Category.{u_4, u_1} C
inst✝¹³ : Category.{u_3, u_2} D
L : C ⥤ D
inst✝¹² : HasShift C ℤ
inst✝¹¹ : Preadditive C
inst✝¹⁰ : HasZeroObject C
inst✝⁹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝⁸ : Pretriangulated C
inst✝⁷ : HasShift D ℤ
inst✝⁶ : L.CommShift ℤ
inst✝⁵ : HasZeroObject D
inst✝⁴ : Preadditive D
inst✝³ : ∀ (n : ℤ), (shiftFunctor D n).Additive
inst✝² : Pretriangulated D
inst✝¹ : L.mapArrow.EssSurj
inst✝ : L.IsTriangulated
T : Triangle D
⊢ T ∈ L.essImageDistTriang → T ∈ distinguishedTriangles
tactic: constructor
Theorem: Nat.ModEq.pow
File: Mathlib/Data/Nat/ModEq.lean

Proof steps:
state_before: m✝ n a b c d m : ℕ
h : a ≡ b [MOD n]
⊢ a ^ m ≡ b ^ m [MOD n]
state_after: no goals
tactic: induction m with
  | zero => rfl
  | succ d hd =>
    rw [Nat.pow_succ, Nat.pow_succ]
    exact hd.mul h
Theorem: WeierstrassCurve.Jacobian.dblXYZ_smul
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

Proof steps:
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → R
u : R
⊢ W'.dblXYZ (u • P) = u ^ 4 • W'.dblXYZ P
state_after: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → R
u : R
⊢ ![(u ^ 4) ^ 2 * W'.dblX P, (u ^ 4) ^ 3 * W'.dblY P, u ^ 4 * W'.dblZ P] = u ^ 4 • W'.dblXYZ P
tactic: rw [dblXYZ, dblX_smul, dblY_smul, dblZ_smul]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → R
u : R
⊢ ![(u ^ 4) ^ 2 * W'.dblX P, (u ^ 4) ^ 3 * W'.dblY P, u ^ 4 * W'.dblZ P] = u ^ 4 • W'.dblXYZ P
state_after: no goals
tactic: rfl
Theorem: ContinuousMap.specializes_coe
File: Mathlib/Topology/CompactOpen.lean

Proof steps:
state_before: α : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
T : Type u_5
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace T
K : Set X
U : Set Y
f g : C(X, Y)
⊢ ⇑f ⤳ ⇑g ↔ f ⤳ g
state_after: α : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
T : Type u_5
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace T
K : Set X
U : Set Y
f g : C(X, Y)
h : ⇑f ⤳ ⇑g
⊢ f ⤳ g
tactic: refine ⟨fun h ↦ ?_, fun h ↦ h.map continuous_coe⟩
state_before: α : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
T : Type u_5
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace T
K : Set X
U : Set Y
f g : C(X, Y)
h : ⇑f ⤳ ⇑g
⊢ f ⤳ g
state_after: α : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
T : Type u_5
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace T
K : Set X
U : Set Y
f g : C(X, Y)
h : ⇑f ⤳ ⇑g
⊢ ∀ (K : Set X), IsCompact K → ∀ (U : Set Y), IsOpen U → MapsTo (⇑g) K U → MapsTo (⇑f) K U
tactic: suffices ∀ K, IsCompact K → ∀ U, IsOpen U → MapsTo g K U → MapsTo f K U by
    simpa [specializes_iff_pure, nhds_compactOpen]
state_before: α : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
T : Type u_5
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace T
K : Set X
U : Set Y
f g : C(X, Y)
h : ⇑f ⤳ ⇑g
⊢ ∀ (K : Set X), IsCompact K → ∀ (U : Set Y), IsOpen U → MapsTo (⇑g) K U → MapsTo (⇑f) K U
state_after: no goals
tactic: exact fun K _ U hU hg x hx ↦ (h.map (continuous_apply x)).mem_open hU (hg hx)
Theorem: AddMonoid.exponent_eq_prime_iff
File: Mathlib/GroupTheory/Exponent.lean

Proof steps:
state_before: G✝ : Type u
inst✝² : Monoid G✝
G : Type u_1
inst✝¹ : Monoid G
inst✝ : Nontrivial G
p : ℕ
hp : Nat.Prime p
⊢ exponent G = p ↔ ∀ (g : G), g ≠ 1 → orderOf g = p
state_after: case refine_1
G✝ : Type u
inst✝² : Monoid G✝
G : Type u_1
inst✝¹ : Monoid G
inst✝ : Nontrivial G
p : ℕ
hp : Nat.Prime p
hG : exponent G = p
g : G
hg : g ≠ 1
⊢ orderOf g = p

case refine_2
G✝ : Type u
inst✝² : Monoid G✝
G : Type u_1
inst✝¹ : Monoid G
inst✝ : Nontrivial G
p : ℕ
hp : Nat.Prime p
h : ∀ (g : G), g ≠ 1 → orderOf g = p
⊢ exponent G ∣ p

case refine_3
G✝ : Type u
inst✝² : Monoid G✝
G : Type u_1
inst✝¹ : Monoid G
inst✝ : Nontrivial G
p : ℕ
hp : Nat.Prime p
h : ∀ (g : G), g ≠ 1 → orderOf g = p
⊢ p ∣ exponent G
tactic: refine ⟨fun hG g hg ↦ ?_, fun h ↦ dvd_antisymm ?_ ?_⟩
Theorem: Metric.frontier_cthickening_disjoint
File: Mathlib/Topology/MetricSpace/Thickening.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ ε : ℝ
s t : Set α
x : α
A : Set α
r₁ r₂ : ℝ≥0
hr : r₁ ≠ r₂
⊢ ENNReal.ofReal ↑r₁ ≠ ENNReal.ofReal ↑r₂
state_after: no goals
tactic: simpa
Theorem: Rat.neg_normalize
File: .lake/packages/batteries/Batteries/Data/Rat/Lemmas.lean

Proof steps:
state_before: n : Int
d : Nat
z : d ≠ 0
⊢ -normalize n d z = normalize (-n) d z
state_after: n : Int
d : Nat
z : d ≠ 0
⊢ -{ num := n.div ↑(n.natAbs.gcd d), den := d / n.natAbs.gcd d, den_nz := ⋯, reduced := ⋯ } =
    { num := -n.div ↑(n.natAbs.gcd d), den := d / n.natAbs.gcd d, den_nz := ⋯, reduced := ⋯ }
tactic: simp [normalize]
state_before: n : Int
d : Nat
z : d ≠ 0
⊢ -{ num := n.div ↑(n.natAbs.gcd d), den := d / n.natAbs.gcd d, den_nz := ⋯, reduced := ⋯ } =
    { num := -n.div ↑(n.natAbs.gcd d), den := d / n.natAbs.gcd d, den_nz := ⋯, reduced := ⋯ }
state_after: no goals
tactic: rfl
Theorem: Equiv.Perm.apply_mem_support
File: Mathlib/GroupTheory/Perm/Support.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
x : α
⊢ f x ∈ f.support ↔ x ∈ f.support
state_after: no goals
tactic: rw [mem_support, mem_support, Ne, Ne, apply_eq_iff_eq]
Theorem: Partrec.nat_iff
File: Mathlib/Computability/Partrec.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : ℕ →. ℕ
⊢ Partrec f ↔ Nat.Partrec f
state_after: no goals
tactic: simp [Partrec, map_id']
Theorem: IsOpen.div_left
File: Mathlib/Topology/Algebra/Group/Basic.lean

Proof steps:
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t : Set G
ht : IsOpen t
⊢ IsOpen (s / t)
state_after: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t : Set G
ht : IsOpen t
⊢ IsOpen (⋃ a ∈ s, (fun x => a / x) '' t)
tactic: rw [← iUnion_div_left_image]
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t : Set G
ht : IsOpen t
⊢ IsOpen (⋃ a ∈ s, (fun x => a / x) '' t)
state_after: no goals
tactic: exact isOpen_biUnion fun a _ => isOpenMap_div_left a t ht
Theorem: Linarith.mul_eq
File: Mathlib/Tactic/Linarith/Lemmas.lean

Proof steps:
state_before: α : Type u_1
inst✝ : OrderedSemiring α
a b : α
ha : a = 0
x✝ : 0 < b
⊢ b * a = 0
state_after: no goals
tactic: simp [*]
Theorem: Int.zpow_log_le_self
File: Mathlib/Data/Int/Log.lean

Proof steps:
state_before: R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
r : R
hb : 1 < b
hr : 0 < r
⊢ ↑b ^ log b r ≤ r
state_after: case inl
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
r : R
hb : 1 < b
hr : 0 < r
hr1 : 1 ≤ r
⊢ ↑b ^ log b r ≤ r

case inr
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
r : R
hb : 1 < b
hr : 0 < r
hr1 : r ≤ 1
⊢ ↑b ^ log b r ≤ r
tactic: rcases le_total 1 r with hr1 | hr1
Theorem: OmegaCompletePartialOrder.ContinuousHom.ωSup_apply_ωSup
File: Mathlib/Order/OmegaCompletePartialOrder.lean

Proof steps:
state_before: α : Type u
α' : Type u_1
β : Type v
β' : Type u_2
γ : Type u_3
φ : Type u_4
inst✝⁵ : OmegaCompletePartialOrder α
inst✝⁴ : OmegaCompletePartialOrder β
inst✝³ : OmegaCompletePartialOrder γ
inst✝² : OmegaCompletePartialOrder φ
inst✝¹ : OmegaCompletePartialOrder α'
inst✝ : OmegaCompletePartialOrder β'
c₀ : Chain (α →𝒄 β)
c₁ : Chain α
⊢ (ωSup c₀) (ωSup c₁) = Prod.apply (ωSup (c₀.zip c₁))
state_after: no goals
tactic: simp [Prod.apply_apply, Prod.ωSup_zip]
Theorem: Function.Embedding.invOfMemRange_surjective
File: Mathlib/Data/Fintype/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq β
f : α ↪ β
b : ↑(Set.range ⇑f)
a : α
⊢ f.invOfMemRange ⟨f a, ⋯⟩ = a
state_after: no goals
tactic: simp
Theorem: Set.left_mem_Ioc
File: Mathlib/Order/Interval/Set/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : Preorder α
a a₁ a₂ b b₁ b₂ c x : α
⊢ a ∈ Ioc a b ↔ False
state_after: no goals
tactic: simp [lt_irrefl]
Theorem: LieModule.lie_mem_weightSpaceChain_of_weightSpace_eq_bot_left
File: Mathlib/Algebra/Lie/Weights/Chain.lean

Proof steps:
state_before: R : Type u_1
L : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝ : LieAlgebra.IsNilpotent R ↥H
hp : weightSpace M (p • α + χ) = ⊥
x : L
hx : x ∈ rootSpace H (-α)
y : M
hy : y ∈ weightSpaceChain M α χ p q
⊢ ⁅x, y⁆ ∈ weightSpaceChain M α χ p q
state_after: R : Type u_1
L : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝ : LieAlgebra.IsNilpotent R ↥H
x : L
hx : x ∈ rootSpace H (-α)
y : M
hy : y ∈ weightSpaceChain M α χ p q
hp : weightSpace M (-p • -α + χ) = ⊥
⊢ ⁅x, y⁆ ∈ weightSpaceChain M α χ p q
tactic: replace hp : weightSpace M ((-p) • (-α) + χ) = ⊥ := by rwa [smul_neg, neg_smul, neg_neg]
state_before: R : Type u_1
L : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝ : LieAlgebra.IsNilpotent R ↥H
x : L
hx : x ∈ rootSpace H (-α)
y : M
hy : y ∈ weightSpaceChain M α χ p q
hp : weightSpace M (-p • -α + χ) = ⊥
⊢ ⁅x, y⁆ ∈ weightSpaceChain M α χ p q
state_after: R : Type u_1
L : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝ : LieAlgebra.IsNilpotent R ↥H
x : L
hx : x ∈ rootSpace H (-α)
y : M
hy : y ∈ weightSpaceChain M (-α) χ (-q) (-p)
hp : weightSpace M (-p • -α + χ) = ⊥
⊢ ⁅x, y⁆ ∈ weightSpaceChain M (-α) χ (-q) (-p)
tactic: rw [← weightSpaceChain_neg] at hy ⊢
state_before: R : Type u_1
L : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝ : LieAlgebra.IsNilpotent R ↥H
x : L
hx : x ∈ rootSpace H (-α)
y : M
hy : y ∈ weightSpaceChain M (-α) χ (-q) (-p)
hp : weightSpace M (-p • -α + χ) = ⊥
⊢ ⁅x, y⁆ ∈ weightSpaceChain M (-α) χ (-q) (-p)
state_after: no goals
tactic: exact lie_mem_weightSpaceChain_of_weightSpace_eq_bot_right M (-α) χ (-q) (-p) hp hx hy
Theorem: AlgebraicGeometry.Scheme.OpenCover.ι_glueMorphisms
File: Mathlib/AlgebraicGeometry/Gluing.lean

Proof steps:
state_before: X : Scheme
𝒰 : X.OpenCover
Y : Scheme
f : (x : 𝒰.J) → 𝒰.obj x ⟶ Y
hf : ∀ (x y : 𝒰.J), pullback.fst (𝒰.map x) (𝒰.map y) ≫ f x = pullback.snd (𝒰.map x) (𝒰.map y) ≫ f y
x : 𝒰.J
⊢ 𝒰.map x ≫ 𝒰.glueMorphisms f hf = f x
state_after: X : Scheme
𝒰 : X.OpenCover
Y : Scheme
f : (x : 𝒰.J) → 𝒰.obj x ⟶ Y
hf : ∀ (x y : 𝒰.J), pullback.fst (𝒰.map x) (𝒰.map y) ≫ f x = pullback.snd (𝒰.map x) (𝒰.map y) ≫ f y
x : 𝒰.J
⊢ 𝒰.gluedCover.ι x ≫ 𝒰.fromGlued ≫ 𝒰.glueMorphisms f hf = f x
tactic: rw [← ι_fromGlued, Category.assoc]
state_before: X : Scheme
𝒰 : X.OpenCover
Y : Scheme
f : (x : 𝒰.J) → 𝒰.obj x ⟶ Y
hf : ∀ (x y : 𝒰.J), pullback.fst (𝒰.map x) (𝒰.map y) ≫ f x = pullback.snd (𝒰.map x) (𝒰.map y) ≫ f y
x : 𝒰.J
⊢ 𝒰.gluedCover.ι x ≫ 𝒰.fromGlued ≫ 𝒰.glueMorphisms f hf = f x
state_after: no goals
tactic: erw [IsIso.hom_inv_id_assoc, Multicoequalizer.π_desc]