ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: CategoryTheory.Abelian.epiWithInjectiveKernel_of_iso
File: Mathlib/CategoryTheory/Abelian/EpiWithInjectiveKernel.lean

Proof steps:
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Abelian C
X Y : C
f : X ⟶ Y
inst✝ : IsIso f
⊢ epiWithInjectiveKernel f
state_after: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Abelian C
X Y : C
f : X ⟶ Y
inst✝ : IsIso f
⊢ ∃ I, ∃ (_ : Injective I), ∃ f_1, ∃ (w : f_1 ≫ f = 0), Nonempty (ShortComplex.mk f_1 f w).Splitting
tactic: rw [epiWithInjectiveKernel_iff]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Abelian C
X Y : C
f : X ⟶ Y
inst✝ : IsIso f
⊢ ∃ I, ∃ (_ : Injective I), ∃ f_1, ∃ (w : f_1 ≫ f = 0), Nonempty (ShortComplex.mk f_1 f w).Splitting
state_after: no goals
tactic: exact ⟨0, inferInstance, 0, by simp,
    ⟨ShortComplex.Splitting.ofIsZeroOfIsIso _ (isZero_zero C) (by dsimp; infer_instance)⟩⟩
Theorem: IsLocalization.map_smul
File: Mathlib/RingTheory/Localization/Basic.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
P : Type u_3
inst✝⁴ : CommSemiring P
inst✝³ : IsLocalization M S
g : R →+* P
hg : ∀ (y : ↥M), IsUnit (g ↑y)
T : Submonoid P
Q : Type u_4
inst✝² : CommSemiring Q
hy : M ≤ Submonoid.comap g T
inst✝¹ : Algebra P Q
inst✝ : IsLocalization T Q
x : S
z : R
⊢ (map Q g hy) (z • x) = g z • (map Q g hy) x
state_after: no goals
tactic: rw [Algebra.smul_def, Algebra.smul_def, RingHom.map_mul, map_eq]
Theorem: Matrix.add_dotProduct
File: Mathlib/Data/Matrix/Basic.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : Fintype m
inst✝¹ : Fintype n
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
x y : n → α
⊢ (u + v) ⬝ᵥ w = u ⬝ᵥ w + v ⬝ᵥ w
state_after: no goals
tactic: simp [dotProduct, add_mul, Finset.sum_add_distrib]
Theorem: Finset.univ_map_embedding
File: Mathlib/Data/Fintype/Card.lean

Proof steps:
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
inst✝ : Fintype α
e : α ↪ α
⊢ map e univ = univ
state_after: no goals
tactic: rw [← e.equiv_of_fintype_self_embedding_to_embedding, univ_map_equiv_to_embedding]
Theorem: Matrix.fromRows_fromColumn_eq_fromBlocks
File: Mathlib/Data/Matrix/ColumnRowPartitioned.lean

Proof steps:
state_before: R : Type u_1
m : Type u_2
m₁ : Type u_3
m₂ : Type u_4
n : Type u_5
n₁ : Type u_6
n₂ : Type u_7
inst✝¹² : Fintype m
inst✝¹¹ : Fintype m₁
inst✝¹⁰ : Fintype m₂
inst✝⁹ : Fintype n
inst✝⁸ : Fintype n₁
inst✝⁷ : Fintype n₂
inst✝⁶ : DecidableEq m
inst✝⁵ : DecidableEq m₁
inst✝⁴ : DecidableEq m₂
inst✝³ : DecidableEq n
inst✝² : DecidableEq n₁
inst✝¹ : DecidableEq n₂
inst✝ : Semiring R
B₁₁ : Matrix m₁ n₁ R
B₁₂ : Matrix m₁ n₂ R
B₂₁ : Matrix m₂ n₁ R
B₂₂ : Matrix m₂ n₂ R
⊢ (B₁₁.fromColumns B₁₂).fromRows (B₂₁.fromColumns B₂₂) = fromBlocks B₁₁ B₁₂ B₂₁ B₂₂
state_after: no goals
tactic: ext (_ | _) (_ | _) <;> simp
Theorem: SetTheory.PGame.toPGame_birthday
File: Mathlib/SetTheory/Game/Birthday.lean

Proof steps:
state_before: o : Ordinal.{u_1}
⊢ o.toPGame.birthday = o
state_after: case h
o : Ordinal.{u_1}
IH : ∀ k < o, k.toPGame.birthday = k
⊢ o.toPGame.birthday = o
tactic: induction' o using Ordinal.induction with o IH
state_before: case h
o : Ordinal.{u_1}
IH : ∀ k < o, k.toPGame.birthday = k
⊢ o.toPGame.birthday = o
state_after: case h
o : Ordinal.{u_1}
IH : ∀ k < o, k.toPGame.birthday = k
⊢ max (lsub fun i => (typein (fun x x_1 => x < x_1) i).toPGame.birthday) (lsub fun i => i.elim.birthday) = o
tactic: rw [toPGame_def, PGame.birthday]
state_before: case h
o : Ordinal.{u_1}
IH : ∀ k < o, k.toPGame.birthday = k
⊢ max (lsub fun i => (typein (fun x x_1 => x < x_1) i).toPGame.birthday) (lsub fun i => i.elim.birthday) = o
state_after: case h
o : Ordinal.{u_1}
IH : ∀ k < o, k.toPGame.birthday = k
⊢ (lsub fun i => (typein (fun x x_1 => x < x_1) i).toPGame.birthday) = o
tactic: simp only [lsub_empty, max_zero_right]
state_before: case h
o : Ordinal.{u_1}
IH : ∀ k < o, k.toPGame.birthday = k
⊢ (lsub fun i => (typein (fun x x_1 => x < x_1) i).toPGame.birthday) = o
state_after: case h
o : Ordinal.{u_1}
IH : ∀ k < o, k.toPGame.birthday = k
⊢ (lsub fun i => (typein (fun x x_1 => x < x_1) i).toPGame.birthday) = lsub (typein fun x x_1 => x < x_1)
tactic: conv_rhs => rw [← lsub_typein o]
state_before: case h
o : Ordinal.{u_1}
IH : ∀ k < o, k.toPGame.birthday = k
⊢ (lsub fun i => (typein (fun x x_1 => x < x_1) i).toPGame.birthday) = lsub (typein fun x x_1 => x < x_1)
state_after: case h.e_f.h
o : Ordinal.{u_1}
IH : ∀ k < o, k.toPGame.birthday = k
x : (Quotient.out o).α
⊢ (typein (fun x x_1 => x < x_1) x).toPGame.birthday = typein (fun x x_1 => x < x_1) x
tactic: congr with x
state_before: case h.e_f.h
o : Ordinal.{u_1}
IH : ∀ k < o, k.toPGame.birthday = k
x : (Quotient.out o).α
⊢ (typein (fun x x_1 => x < x_1) x).toPGame.birthday = typein (fun x x_1 => x < x_1) x
state_after: no goals
tactic: exact IH _ (typein_lt_self x)
Theorem: Set.image_mul_left_Icc
File: Mathlib/Data/Set/Pointwise/Interval.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a✝ a b c : α
ha : 0 ≤ a
hbc : b ≤ c
⊢ (fun x => a * x) '' Icc b c = Icc (a * b) (a * c)
state_after: no goals
tactic: convert image_mul_right_Icc hbc ha using 1 <;> simp only [mul_comm _ a]
Theorem: RCLike.inv_im
File: Mathlib/Analysis/RCLike/Basic.lean

Proof steps:
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z✝ z : K
⊢ im z⁻¹ = -im z / normSq z
state_after: no goals
tactic: rw [inv_def, normSq_eq_def', mul_comm, im_ofReal_mul, conj_im, div_eq_inv_mul]
Theorem: Nat.self_add_sub_one
File: Mathlib/Data/Nat/Defs.lean

Proof steps:
state_before: a b c d m n✝ k : ℕ
p q : ℕ → Prop
n : ℕ
⊢ n + 1 + (n + 1 - 1) = 2 * (n + 1) - 1
state_after: a b c d m n✝ k : ℕ
p q : ℕ → Prop
n : ℕ
⊢ n + 1 + (n + 1 - 1) = n + 1 + (n + 1) - 1
tactic: rw [Nat.two_mul]
state_before: a b c d m n✝ k : ℕ
p q : ℕ → Prop
n : ℕ
⊢ n + 1 + (n + 1 - 1) = n + 1 + (n + 1) - 1
state_after: no goals
tactic: exact (add_succ_sub_one (Nat.succ _) _).symm
Theorem: MultilinearMap.mkPiAlgebraFin_apply_const
File: Mathlib/LinearAlgebra/Multilinear/Basic.lean

Proof steps:
state_before: R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝⁸ : CommSemiring R
inst✝⁷ : (i : ι) → AddCommMonoid (M₁ i)
inst✝⁶ : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : (i : Fin n.succ) → Module R (M i)
inst✝³ : (i : ι) → Module R (M₁ i)
inst✝² : Module R M₂
f f' : MultilinearMap R M₁ M₂
A : Type u_1
inst✝¹ : Semiring A
inst✝ : Algebra R A
a : A
⊢ ((MultilinearMap.mkPiAlgebraFin R n A) fun x => a) = a ^ n
state_after: no goals
tactic: simp
Theorem: AdicCompletion.map_id
File: Mathlib/RingTheory/AdicCompletion/Functoriality.lean

Proof steps:
state_before: R : Type u_1
inst✝⁸ : CommRing R
I : Ideal R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
N : Type u_3
inst✝⁵ : AddCommGroup N
inst✝⁴ : Module R N
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
⊢ map I LinearMap.id = LinearMap.id
state_after: case h.h
R : Type u_1
inst✝⁸ : CommRing R
I : Ideal R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
N : Type u_3
inst✝⁵ : AddCommGroup N
inst✝⁴ : Module R N
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
a : AdicCauchySequence I M
n : ℕ
⊢ ↑((map I LinearMap.id) ((mk I M) a)) n = ↑(LinearMap.id ((mk I M) a)) n
tactic: ext a n
state_before: case h.h
R : Type u_1
inst✝⁸ : CommRing R
I : Ideal R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
N : Type u_3
inst✝⁵ : AddCommGroup N
inst✝⁴ : Module R N
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
a : AdicCauchySequence I M
n : ℕ
⊢ ↑((map I LinearMap.id) ((mk I M) a)) n = ↑(LinearMap.id ((mk I M) a)) n
state_after: no goals
tactic: simp
Theorem: Finset.image_add_left'
File: Mathlib/Data/Finset/Pointwise.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝⁵ : DecidableEq α
inst✝⁴ : DecidableEq β
inst✝³ : Group α
inst✝² : DivisionMonoid β
inst✝¹ : FunLike F α β
inst✝ : MonoidHomClass F α β
f : F
s t : Finset α
a b : α
⊢ image (fun b => a⁻¹ * b) t = t.preimage (fun b => a * b) ⋯
state_after: no goals
tactic: simp
Theorem: OrderIso.image_Ico
File: Mathlib/Order/Interval/Set/OrderIso.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : Preorder β
e : α ≃o β
a b : α
⊢ ⇑e '' Ico a b = Ico (e a) (e b)
state_after: no goals
tactic: rw [e.image_eq_preimage, e.symm.preimage_Ico, e.symm_symm]
Theorem: Substring.Valid.any
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

Proof steps:
state_before: f : Char → Bool
x✝ : Substring
h✝ : x✝.Valid
w✝² w✝¹ w✝ : List Char
h : ValidFor w✝² w✝¹ w✝ x✝
⊢ x✝.any f = x✝.toString.data.any f
state_after: no goals
tactic: simp [h.any, h.toString]
Theorem: List.take_sum_join'
File: Mathlib/Data/List/Join.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
L : List (List α)
i : ℕ
⊢ take (Nat.sum (take i (map length L))) L.join = (take i L).join
state_after: case nil
α : Type u_1
β : Type u_2
i : ℕ
⊢ take (Nat.sum (take i (map length []))) [].join = (take i []).join

case cons
α : Type u_1
β : Type u_2
head✝ : List α
tail✝ : List (List α)
tail_ih✝ : ∀ (i : ℕ), take (Nat.sum (take i (map length tail✝))) tail✝.join = (take i tail✝).join
i : ℕ
⊢ take (Nat.sum (take i (map length (head✝ :: tail✝)))) (head✝ :: tail✝).join = (take i (head✝ :: tail✝)).join
tactic: induction L generalizing i
Theorem: DirectSum.lie_of
File: Mathlib/Algebra/Lie/DirectSum.lean

Proof steps:
state_before: R : Type u
ι : Type v
inst✝³ : CommRing R
L : ι → Type w
inst✝² : (i : ι) → LieRing (L i)
inst✝¹ : (i : ι) → LieAlgebra R (L i)
inst✝ : DecidableEq ι
i j : ι
x : L i
y : L j
⊢ ⁅(of L i) x, (of L j) y⁆ = if hij : i = j then (of L i) ⁅x, Eq.recOn ⋯ y⁆ else 0
state_after: case inl
R : Type u
ι : Type v
inst✝³ : CommRing R
L : ι → Type w
inst✝² : (i : ι) → LieRing (L i)
inst✝¹ : (i : ι) → LieAlgebra R (L i)
inst✝ : DecidableEq ι
i : ι
x y : L i
⊢ ⁅(of L i) x, (of L i) y⁆ = if hij : i = i then (of L i) ⁅x, Eq.recOn ⋯ y⁆ else 0

case inr
R : Type u
ι : Type v
inst✝³ : CommRing R
L : ι → Type w
inst✝² : (i : ι) → LieRing (L i)
inst✝¹ : (i : ι) → LieAlgebra R (L i)
inst✝ : DecidableEq ι
i j : ι
x : L i
y : L j
hij : i ≠ j
⊢ ⁅(of L i) x, (of L j) y⁆ = if hij : i = j then (of L i) ⁅x, Eq.recOn ⋯ y⁆ else 0
tactic: obtain rfl | hij := Decidable.eq_or_ne i j
Theorem: CategoryTheory.Functor.mapShortComplex_map_τ₁
File: Mathlib/Algebra/Homology/ShortComplex/Basic.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.40895, u_1} C
inst✝³ : Category.{?u.40899, u_2} D
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : F.PreservesZeroMorphisms
X✝ Y✝ : ShortComplex C
φ : X✝ ⟶ Y✝
⊢ F.map φ.τ₁ ≫ ((fun S => S.map F) Y✝).f = ((fun S => S.map F) X✝).f ≫ F.map φ.τ₂
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.40895, u_1} C
inst✝³ : Category.{?u.40899, u_2} D
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : F.PreservesZeroMorphisms
X✝ Y✝ : ShortComplex C
φ : X✝ ⟶ Y✝
⊢ F.map φ.τ₁ ≫ F.map Y✝.f = F.map X✝.f ≫ F.map φ.τ₂
tactic: dsimp
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.40895, u_1} C
inst✝³ : Category.{?u.40899, u_2} D
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : F.PreservesZeroMorphisms
X✝ Y✝ : ShortComplex C
φ : X✝ ⟶ Y✝
⊢ F.map φ.τ₁ ≫ F.map Y✝.f = F.map X✝.f ≫ F.map φ.τ₂
state_after: no goals
tactic: simp only [← F.map_comp, φ.comm₁₂]
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.40895, u_1} C
inst✝³ : Category.{?u.40899, u_2} D
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : F.PreservesZeroMorphisms
X✝ Y✝ : ShortComplex C
φ : X✝ ⟶ Y✝
⊢ F.map φ.τ₂ ≫ ((fun S => S.map F) Y✝).g = ((fun S => S.map F) X✝).g ≫ F.map φ.τ₃
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.40895, u_1} C
inst✝³ : Category.{?u.40899, u_2} D
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : F.PreservesZeroMorphisms
X✝ Y✝ : ShortComplex C
φ : X✝ ⟶ Y✝
⊢ F.map φ.τ₂ ≫ F.map Y✝.g = F.map X✝.g ≫ F.map φ.τ₃
tactic: dsimp
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.40895, u_1} C
inst✝³ : Category.{?u.40899, u_2} D
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : F.PreservesZeroMorphisms
X✝ Y✝ : ShortComplex C
φ : X✝ ⟶ Y✝
⊢ F.map φ.τ₂ ≫ F.map Y✝.g = F.map X✝.g ≫ F.map φ.τ₃
state_after: no goals
tactic: simp only [← F.map_comp, φ.comm₂₃]
Theorem: inter_minimals_preimage_inter_eq_of_rel_iff_rel_on
File: Mathlib/Order/Minimal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a b x✝ : α
f : α → β
r : α → α → Prop
s : β → β → Prop
x : Set α
hf : ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
y : Set β
⊢ x ∩ f ⁻¹' minimals s (f '' x ∩ y) = minimals r (x ∩ f ⁻¹' y)
state_after: case h
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a✝ b x✝ : α
f : α → β
r : α → α → Prop
s : β → β → Prop
x : Set α
hf : ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
y : Set β
a : α
⊢ a ∈ x ∩ f ⁻¹' minimals s (f '' x ∩ y) ↔ a ∈ minimals r (x ∩ f ⁻¹' y)
tactic: ext a
state_before: case h
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a✝ b x✝ : α
f : α → β
r : α → α → Prop
s : β → β → Prop
x : Set α
hf : ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
y : Set β
a : α
⊢ a ∈ x ∩ f ⁻¹' minimals s (f '' x ∩ y) ↔ a ∈ minimals r (x ∩ f ⁻¹' y)
state_after: case h
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a✝ b x✝ : α
f : α → β
r : α → α → Prop
s : β → β → Prop
x : Set α
hf : ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
y : Set β
a : α
⊢ (a ∈ x ∧ ((∃ x_1 ∈ x, f x_1 = f a) ∧ f a ∈ y) ∧ ∀ a_1 ∈ x, f a_1 ∈ y → s (f a_1) (f a) → s (f a) (f a_1)) ↔
    (a ∈ x ∧ f a ∈ y) ∧ ∀ ⦃b : α⦄, b ∈ x → f b ∈ y → r b a → r a b
tactic: simp only [minimals, mem_inter_iff, mem_image, and_imp, forall_exists_index,
    forall_apply_eq_imp_iff₂, preimage_setOf_eq, mem_setOf_eq, mem_preimage]
state_before: case h
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a✝ b x✝ : α
f : α → β
r : α → α → Prop
s : β → β → Prop
x : Set α
hf : ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
y : Set β
a : α
⊢ (a ∈ x ∧ ((∃ x_1 ∈ x, f x_1 = f a) ∧ f a ∈ y) ∧ ∀ a_1 ∈ x, f a_1 ∈ y → s (f a_1) (f a) → s (f a) (f a_1)) ↔
    (a ∈ x ∧ f a ∈ y) ∧ ∀ ⦃b : α⦄, b ∈ x → f b ∈ y → r b a → r a b
state_after: no goals
tactic: exact ⟨fun ⟨hax,⟨_,hay⟩,h2⟩ ↦ ⟨⟨hax, hay⟩, fun a₁ ha₁ ha₁y ha₁a ↦
          (hf hax ha₁).mpr (h2 _ ha₁ ha₁y ((hf ha₁ hax).mp ha₁a))⟩ ,
        fun ⟨⟨hax,hay⟩,h⟩ ↦ ⟨hax, ⟨⟨_, hax, rfl⟩, hay⟩, fun a' ha' ha'y hsa' ↦
          (hf hax ha').mp (h ha' ha'y ((hf ha' hax).mpr hsa'))⟩⟩
Theorem: HurwitzZeta.hurwitzZetaOdd_neg
File: Mathlib/NumberTheory/LSeries/HurwitzZetaOdd.lean

Proof steps:
state_before: a : UnitAddCircle
s : ℂ
⊢ hurwitzZetaOdd (-a) s = -hurwitzZetaOdd a s
state_after: no goals
tactic: simp_rw [hurwitzZetaOdd, completedHurwitzZetaOdd_neg, neg_div]
Theorem: Path.truncate_const_continuous_family
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
t : ℝ
⊢ Continuous ↿(γ.truncate t)
state_after: 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
t : ℝ
key : Continuous fun x => (t, x)
⊢ Continuous ↿(γ.truncate t)
tactic: have key : Continuous (fun x => (t, x) : ℝ × I → ℝ × ℝ × I) := by fun_prop
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
t : ℝ
key : Continuous fun x => (t, x)
⊢ Continuous ↿(γ.truncate t)
state_after: no goals
tactic: exact γ.truncate_continuous_family.comp key
Theorem: EMetric.exists_real_pos_lt_infEdist_of_not_mem_closure
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t : Set α
Φ : α → β
x : α
E : Set α
h : x ∉ closure E
⊢ ∃ ε, 0 < ε ∧ ENNReal.ofReal ε < infEdist x E
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t : Set α
Φ : α → β
x : α
E : Set α
h : ∃ r, 0 ≤ r ∧ 0 < ENNReal.ofReal r ∧ ENNReal.ofReal r < infEdist x E
⊢ ∃ ε, 0 < ε ∧ ENNReal.ofReal ε < infEdist x E
tactic: rw [← infEdist_pos_iff_not_mem_closure, ENNReal.lt_iff_exists_real_btwn] at h
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t : Set α
Φ : α → β
x : α
E : Set α
h : ∃ r, 0 ≤ r ∧ 0 < ENNReal.ofReal r ∧ ENNReal.ofReal r < infEdist x E
⊢ ∃ ε, 0 < ε ∧ ENNReal.ofReal ε < infEdist x E
state_after: case intro.intro.intro
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t : Set α
Φ : α → β
x : α
E : Set α
ε : ℝ
left✝ : 0 ≤ ε
ε_pos : 0 < ENNReal.ofReal ε
ε_lt : ENNReal.ofReal ε < infEdist x E
⊢ ∃ ε, 0 < ε ∧ ENNReal.ofReal ε < infEdist x E
tactic: rcases h with ⟨ε, ⟨_, ⟨ε_pos, ε_lt⟩⟩⟩
state_before: case intro.intro.intro
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t : Set α
Φ : α → β
x : α
E : Set α
ε : ℝ
left✝ : 0 ≤ ε
ε_pos : 0 < ENNReal.ofReal ε
ε_lt : ENNReal.ofReal ε < infEdist x E
⊢ ∃ ε, 0 < ε ∧ ENNReal.ofReal ε < infEdist x E
state_after: no goals
tactic: exact ⟨ε, ⟨ENNReal.ofReal_pos.mp ε_pos, ε_lt⟩⟩
Theorem: ArithmeticFunction.pow_zero_eq_zeta
File: Mathlib/NumberTheory/ArithmeticFunction.lean

Proof steps:
state_before: R : Type u_1
⊢ pow 0 = ζ
state_after: case h
R : Type u_1
n : ℕ
⊢ (pow 0) n = ζ n
tactic: ext n
state_before: case h
R : Type u_1
n : ℕ
⊢ (pow 0) n = ζ n
state_after: no goals
tactic: simp
Theorem: HNNExtension.NormalWord.empty_toList
File: Mathlib/GroupTheory/HNNExtension.lean

Proof steps:
state_before: G : Type u_1
inst✝² : Group G
A B : Subgroup G
φ : ↥A ≃* ↥B
H : Type u_2
inst✝¹ : Group H
M : Type u_3
inst✝ : Monoid M
d : TransversalPair G A B
⊢ ∀ (u : ℤˣ) (g : G), (u, g) ∈ { head := 1, toList := [], chain := ⋯ }.toList → g ∈ d.set u
state_after: no goals
tactic: simp
Theorem: LocalRing.of_surjective
File: Mathlib/RingTheory/LocalRing/RingHom/Basic.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : LocalRing R
inst✝² : CommSemiring S
inst✝¹ : Nontrivial S
f : R →+* S
inst✝ : IsLocalRingHom f
hf : Function.Surjective ⇑f
⊢ ∀ (a b : S), IsUnit (a + b) → IsUnit a ∨ IsUnit b
state_after: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : LocalRing R
inst✝² : CommSemiring S
inst✝¹ : Nontrivial S
f : R →+* S
inst✝ : IsLocalRingHom f
hf : Function.Surjective ⇑f
a b : S
hab : IsUnit (a + b)
⊢ IsUnit a ∨ IsUnit b
tactic: intro a b hab
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : LocalRing R
inst✝² : CommSemiring S
inst✝¹ : Nontrivial S
f : R →+* S
inst✝ : IsLocalRingHom f
hf : Function.Surjective ⇑f
a b : S
hab : IsUnit (a + b)
⊢ IsUnit a ∨ IsUnit b
state_after: case intro
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : LocalRing R
inst✝² : CommSemiring S
inst✝¹ : Nontrivial S
f : R →+* S
inst✝ : IsLocalRingHom f
hf : Function.Surjective ⇑f
b : S
a : R
hab : IsUnit (f a + b)
⊢ IsUnit (f a) ∨ IsUnit b
tactic: obtain ⟨a, rfl⟩ := hf a
state_before: case intro
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : LocalRing R
inst✝² : CommSemiring S
inst✝¹ : Nontrivial S
f : R →+* S
inst✝ : IsLocalRingHom f
hf : Function.Surjective ⇑f
b : S
a : R
hab : IsUnit (f a + b)
⊢ IsUnit (f a) ∨ IsUnit b
state_after: case intro.intro
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : LocalRing R
inst✝² : CommSemiring S
inst✝¹ : Nontrivial S
f : R →+* S
inst✝ : IsLocalRingHom f
hf : Function.Surjective ⇑f
a b : R
hab : IsUnit (f a + f b)
⊢ IsUnit (f a) ∨ IsUnit (f b)
tactic: obtain ⟨b, rfl⟩ := hf b
state_before: case intro.intro
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : LocalRing R
inst✝² : CommSemiring S
inst✝¹ : Nontrivial S
f : R →+* S
inst✝ : IsLocalRingHom f
hf : Function.Surjective ⇑f
a b : R
hab : IsUnit (f a + f b)
⊢ IsUnit (f a) ∨ IsUnit (f b)
state_after: case intro.intro
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : LocalRing R
inst✝² : CommSemiring S
inst✝¹ : Nontrivial S
f : R →+* S
inst✝ : IsLocalRingHom f
hf : Function.Surjective ⇑f
a b : R
hab : IsUnit (f (a + b))
⊢ IsUnit (f a) ∨ IsUnit (f b)
tactic: rw [← map_add] at hab
state_before: case intro.intro
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : LocalRing R
inst✝² : CommSemiring S
inst✝¹ : Nontrivial S
f : R →+* S
inst✝ : IsLocalRingHom f
hf : Function.Surjective ⇑f
a b : R
hab : IsUnit (f (a + b))
⊢ IsUnit (f a) ∨ IsUnit (f b)
state_after: no goals
tactic: exact
      (isUnit_or_isUnit_of_isUnit_add <| IsLocalRingHom.map_nonunit _ hab).imp f.isUnit_map
        f.isUnit_map
Theorem: CategoryTheory.Limits.IsLimit.conePointsIsoOfNatIso_inv_comp
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
t✝ : Cone F✝
F G : J ⥤ C
s : Cone F
t : Cone G
P : IsLimit s
Q : IsLimit t
w : F ≅ G
j : J
⊢ (P.conePointsIsoOfNatIso Q w).inv ≫ s.π.app j = t.π.app j ≫ w.inv.app j
state_after: no goals
tactic: simp
Theorem: WeierstrassCurve.Jacobian.addXYZ_of_Z_eq_zero_left
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 Q : Fin 3 → R
hP : W'.Equation P
hPz : P z = 0
⊢ W'.addXYZ P Q = (P x * Q z) • Q
state_after: no goals
tactic: rw [addXYZ, addX_of_Z_eq_zero_left hPz, addY_of_Z_eq_zero_left hP hPz, addZ_of_Z_eq_zero_left hPz,
    smul_fin3]
Theorem: CategoryTheory.Limits.kernelSubobject_arrow
File: Mathlib/CategoryTheory/Subobject/Limits.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
X Y Z : C
inst✝¹ : HasZeroMorphisms C
f : X ⟶ Y
inst✝ : HasKernel f
⊢ (kernelSubobjectIso f).hom ≫ kernel.ι f = (kernelSubobject f).arrow
state_after: no goals
tactic: simp [kernelSubobjectIso]
Theorem: lt_one_div_of_neg
File: Mathlib/Algebra/Order/Field/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
ha : a < 0
hb : b < 0
⊢ a < 1 / b ↔ b < 1 / a
state_after: no goals
tactic: simpa using lt_inv_of_neg ha hb
Theorem: Submodule.ker_inclusion
File: Mathlib/Algebra/Module/Submodule/Ker.lean

Proof steps:
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
K : Type u_5
M : Type u_6
M₁ : Type u_7
M₂ : Type u_8
M₃ : Type u_9
V : Type u_10
V₂ : Type u_11
inst✝⁷ : Semiring R
inst✝⁶ : Semiring R₂
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R M
inst✝² : Module R₂ M₂
p✝ p'✝ : Submodule R M
q : Submodule R₂ M₂
τ₁₂ : R →+* R₂
F : Type u_12
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F τ₁₂ M M₂
p p' : Submodule R M
h : p ≤ p'
⊢ ker (inclusion h) = ⊥
state_after: no goals
tactic: rw [inclusion, ker_codRestrict, ker_subtype]