ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: map_one_ne_zero
File: Mathlib/Analysis/Normed/Ring/SeminormFromBounded.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommRing R
f : R → ℝ
c : ℝ
f_ne_zero : f ≠ 0
f_nonneg : 0 ≤ f
f_mul : ∀ (x y : R), f (x * y) ≤ c * f x * f y
⊢ f 1 ≠ 0
state_after: R : Type u_1
inst✝ : CommRing R
f : R → ℝ
c : ℝ
f_ne_zero : f ≠ 0
f_nonneg : 0 ≤ f
f_mul : ∀ (x y : R), f (x * y) ≤ c * f x * f y
h1 : f 1 = 0
⊢ False
tactic: intro h1
state_before: R : Type u_1
inst✝ : CommRing R
f : R → ℝ
c : ℝ
f_ne_zero : f ≠ 0
f_nonneg : 0 ≤ f
f_mul : ∀ (x y : R), f (x * y) ≤ c * f x * f y
h1 : f 1 = 0
⊢ False
state_after: R : Type u_1
inst✝ : CommRing R
f : R → ℝ
c : ℝ
f_ne_zero : f ≠ 0
f_nonneg : 0 ≤ f
h1 : f 1 = 0
f_mul : ∀ (y : R), f (1 * y) ≤ c * f 1 * f y
⊢ False
tactic: specialize f_mul 1
state_before: R : Type u_1
inst✝ : CommRing R
f : R → ℝ
c : ℝ
f_ne_zero : f ≠ 0
f_nonneg : 0 ≤ f
h1 : f 1 = 0
f_mul : ∀ (y : R), f (1 * y) ≤ c * f 1 * f y
⊢ False
state_after: R : Type u_1
inst✝ : CommRing R
f : R → ℝ
c : ℝ
f_ne_zero : f ≠ 0
f_nonneg : 0 ≤ f
h1 : f 1 = 0
f_mul : ∀ (y : R), f y ≤ 0
⊢ False
tactic: simp_rw [h1, one_mul, mul_zero, zero_mul] at f_mul
state_before: R : Type u_1
inst✝ : CommRing R
f : R → ℝ
c : ℝ
f_ne_zero : f ≠ 0
f_nonneg : 0 ≤ f
h1 : f 1 = 0
f_mul : ∀ (y : R), f y ≤ 0
⊢ False
state_after: case intro
R : Type u_1
inst✝ : CommRing R
f : R → ℝ
c : ℝ
f_ne_zero : f ≠ 0
f_nonneg : 0 ≤ f
h1 : f 1 = 0
f_mul : ∀ (y : R), f y ≤ 0
z : R
hz : f z ≠ 0 z
⊢ False
tactic: obtain ⟨z, hz⟩ := Function.ne_iff.mp f_ne_zero
state_before: case intro
R : Type u_1
inst✝ : CommRing R
f : R → ℝ
c : ℝ
f_ne_zero : f ≠ 0
f_nonneg : 0 ≤ f
h1 : f 1 = 0
f_mul : ∀ (y : R), f y ≤ 0
z : R
hz : f z ≠ 0 z
⊢ False
state_after: no goals
tactic: exact hz <| (f_mul z).antisymm (f_nonneg z)
Theorem: mem_extChartAt_source
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁵ : NormedAddCommGroup E'
inst✝⁴ : NormedSpace 𝕜 E'
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
inst✝¹ : ChartedSpace H M
inst✝ : ChartedSpace H' M'
x : M
⊢ x ∈ (extChartAt I x).source
state_after: no goals
tactic: simp only [extChartAt_source, mem_chart_source]
Theorem: Polynomial.add_modByMonic
File: Mathlib/Algebra/Polynomial/RingDivision.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
p q : R[X]
inst✝ : Semiring S
p₁ p₂ : R[X]
⊢ (p₁ + p₂) %ₘ q = p₁ %ₘ q + p₂ %ₘ q
state_after: case pos
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
p q : R[X]
inst✝ : Semiring S
p₁ p₂ : R[X]
hq : q.Monic
⊢ (p₁ + p₂) %ₘ q = p₁ %ₘ q + p₂ %ₘ q

case neg
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
p q : R[X]
inst✝ : Semiring S
p₁ p₂ : R[X]
hq : ¬q.Monic
⊢ (p₁ + p₂) %ₘ q = p₁ %ₘ q + p₂ %ₘ q
tactic: by_cases hq : q.Monic
Theorem: Complex.Gamma_ne_zero_of_re_pos
File: Mathlib/Analysis/SpecialFunctions/Gamma/Beta.lean

Proof steps:
state_before: s : ℂ
hs : 0 < s.re
⊢ Gamma s ≠ 0
state_after: s : ℂ
hs : 0 < s.re
m : ℕ
⊢ s ≠ -↑m
tactic: refine Gamma_ne_zero fun m => ?_
state_before: s : ℂ
hs : 0 < s.re
m : ℕ
⊢ s ≠ -↑m
state_after: s : ℂ
m : ℕ
hs : s = -↑m
⊢ s.re ≤ 0
tactic: contrapose! hs
state_before: s : ℂ
m : ℕ
hs : s = -↑m
⊢ s.re ≤ 0
state_after: no goals
tactic: simpa only [hs, neg_re, ← ofReal_natCast, ofReal_re, neg_nonpos] using Nat.cast_nonneg _
Theorem: Set.PartiallyWellOrderedOn.iff_forall_not_isBadSeq
File: Mathlib/Order/WellFoundedSet.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r✝ r : α → α → Prop
s : Set α
f : ℕ → α
⊢ ((∀ (n : ℕ), f n ∈ s) → ∃ m n, m < n ∧ r (f m) (f n)) ↔ ¬IsBadSeq r s f
state_after: no goals
tactic: simp [IsBadSeq]
Theorem: Int.fract_neg_eq_zero
File: Mathlib/Algebra/Order/Floor.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a x : α
⊢ fract (-x) = 0 ↔ fract x = 0
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a x : α
⊢ (∃ z, -x = ↑z) ↔ ∃ z, x = ↑z
tactic: simp only [fract_eq_iff, le_refl, zero_lt_one, tsub_zero, true_and_iff]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a x : α
⊢ (∃ z, -x = ↑z) ↔ ∃ z, x = ↑z
state_after: no goals
tactic: constructor <;> rintro ⟨z, hz⟩ <;> use -z <;> simp [← hz]
Theorem: SetTheory.Game.not_lf
File: Mathlib/SetTheory/Game/Basic.lean

Proof steps:
state_before: ⊢ ∀ {x y : Game}, ¬x ⧏ y ↔ y ≤ x
state_after: case mk.mk
x✝ : Game
x : PGame
y✝ : Game
y : PGame
⊢ ¬Quot.mk Setoid.r x ⧏ Quot.mk Setoid.r y ↔ Quot.mk Setoid.r y ≤ Quot.mk Setoid.r x
tactic: rintro ⟨x⟩ ⟨y⟩
state_before: case mk.mk
x✝ : Game
x : PGame
y✝ : Game
y : PGame
⊢ ¬Quot.mk Setoid.r x ⧏ Quot.mk Setoid.r y ↔ Quot.mk Setoid.r y ≤ Quot.mk Setoid.r x
state_after: no goals
tactic: exact PGame.not_lf
Theorem: EuclideanGeometry.dist_sq_eq_dist_sq_add_dist_sq_iff_angle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/RightAngle.lean

Proof steps:
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
⊢ dist p1 p3 * dist p1 p3 = dist p1 p2 * dist p1 p2 + dist p3 p2 * dist p3 p2 ↔ ∠ p1 p2 p3 = π / 2
state_after: no goals
tactic: erw [dist_comm p3 p2, dist_eq_norm_vsub V p1 p3, dist_eq_norm_vsub V p1 p2,
    dist_eq_norm_vsub V p2 p3, ← norm_sub_sq_eq_norm_sq_add_norm_sq_iff_angle_eq_pi_div_two,
    vsub_sub_vsub_cancel_right p1, ← neg_vsub_eq_vsub_rev p2 p3, norm_neg]
Theorem: Left.min_le_max_of_add_le_add
File: Mathlib/Algebra/Order/Monoid/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝³ : Mul α
inst✝² : LinearOrder α
a b c d : α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
h : a * b ≤ c * d
⊢ min a b ≤ max c d
state_after: α : Type u_1
β : Type u_2
inst✝³ : Mul α
inst✝² : LinearOrder α
a b c d : α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
h : a * b ≤ c * d
⊢ (a ≤ c ∨ a ≤ d) ∨ b ≤ c ∨ b ≤ d
tactic: simp_rw [min_le_iff, le_max_iff]
state_before: α : Type u_1
β : Type u_2
inst✝³ : Mul α
inst✝² : LinearOrder α
a b c d : α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
h : a * b ≤ c * d
⊢ (a ≤ c ∨ a ≤ d) ∨ b ≤ c ∨ b ≤ d
state_after: α : Type u_1
β : Type u_2
inst✝³ : Mul α
inst✝² : LinearOrder α
a b c d : α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
h : (c < a ∧ d < a) ∧ c < b ∧ d < b
⊢ c * d < a * b
tactic: contrapose! h
state_before: α : Type u_1
β : Type u_2
inst✝³ : Mul α
inst✝² : LinearOrder α
a b c d : α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
h : (c < a ∧ d < a) ∧ c < b ∧ d < b
⊢ c * d < a * b
state_after: no goals
tactic: exact mul_lt_mul_of_le_of_lt h.1.1.le h.2.2
Theorem: List.length_erase_add_one
File: Mathlib/Data/List/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : DecidableEq α
a : α
l : List α
h : a ∈ l
⊢ (l.erase a).length + 1 = l.length
state_after: no goals
tactic: rw [erase_eq_eraseP, length_eraseP_add_one h (decide_eq_true rfl)]
Theorem: Representation.smul_one_tprod_asModule
File: Mathlib/RepresentationTheory/Basic.lean

Proof steps:
state_before: k : Type u_1
G : Type u_2
V : Type u_3
W : Type u_4
inst✝⁵ : CommSemiring k
inst✝⁴ : Monoid G
inst✝³ : AddCommMonoid V
inst✝² : Module k V
inst✝¹ : AddCommMonoid W
inst✝ : Module k W
ρV : Representation k G V
ρW : Representation k G W
r : MonoidAlgebra k G
x : V
y : W
⊢ let y' := y;
  let z := x ⊗ₜ[k] y;
  r • z = x ⊗ₜ[k] (r • y')
state_after: k : Type u_1
G : Type u_2
V : Type u_3
W : Type u_4
inst✝⁵ : CommSemiring k
inst✝⁴ : Monoid G
inst✝³ : AddCommMonoid V
inst✝² : Module k V
inst✝¹ : AddCommMonoid W
inst✝ : Module k W
ρV : Representation k G V
ρW : Representation k G W
r : MonoidAlgebra k G
x : V
y : W
⊢ ((1 ⊗ ρW).asAlgebraHom r) (x ⊗ₜ[k] y) = x ⊗ₜ[k] (ρW.asAlgebraHom r) y
tactic: show asAlgebraHom (1 ⊗ ρW) _ _ = _ ⊗ₜ asAlgebraHom ρW _ _
state_before: k : Type u_1
G : Type u_2
V : Type u_3
W : Type u_4
inst✝⁵ : CommSemiring k
inst✝⁴ : Monoid G
inst✝³ : AddCommMonoid V
inst✝² : Module k V
inst✝¹ : AddCommMonoid W
inst✝ : Module k W
ρV : Representation k G V
ρW : Representation k G W
r : MonoidAlgebra k G
x : V
y : W
⊢ ((1 ⊗ ρW).asAlgebraHom r) (x ⊗ₜ[k] y) = x ⊗ₜ[k] (ρW.asAlgebraHom r) y
state_after: k : Type u_1
G : Type u_2
V : Type u_3
W : Type u_4
inst✝⁵ : CommSemiring k
inst✝⁴ : Monoid G
inst✝³ : AddCommMonoid V
inst✝² : Module k V
inst✝¹ : AddCommMonoid W
inst✝ : Module k W
ρV : Representation k G V
ρW : Representation k G W
r : MonoidAlgebra k G
x : V
y : W
⊢ (Finsupp.sum r fun i d => d • x ⊗ₜ[k] (ρW i) y) = x ⊗ₜ[k] Finsupp.sum r fun i d => d • (ρW i) y
tactic: simp only [asAlgebraHom_def, MonoidAlgebra.lift_apply, tprod_apply, MonoidHom.one_apply,
    LinearMap.finsupp_sum_apply, LinearMap.smul_apply, TensorProduct.map_tmul, LinearMap.one_apply]
state_before: k : Type u_1
G : Type u_2
V : Type u_3
W : Type u_4
inst✝⁵ : CommSemiring k
inst✝⁴ : Monoid G
inst✝³ : AddCommMonoid V
inst✝² : Module k V
inst✝¹ : AddCommMonoid W
inst✝ : Module k W
ρV : Representation k G V
ρW : Representation k G W
r : MonoidAlgebra k G
x : V
y : W
⊢ (Finsupp.sum r fun i d => d • x ⊗ₜ[k] (ρW i) y) = x ⊗ₜ[k] Finsupp.sum r fun i d => d • (ρW i) y
state_after: no goals
tactic: simp only [Finsupp.sum, TensorProduct.tmul_sum, TensorProduct.tmul_smul]
Theorem: RingHom.domain_localRing
File: Mathlib/RingTheory/LocalRing/RingHom/Basic.lean

Proof steps:
state_before: R✝ : Type u_1
S✝ : Type u_2
T : Type u_3
inst✝⁵ : Semiring R✝
inst✝⁴ : Semiring S✝
inst✝³ : Semiring T
R : Type u_4
S : Type u_5
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
H : LocalRing S
f : R →+* S
inst✝ : IsLocalRingHom f
⊢ LocalRing R
state_after: R✝ : Type u_1
S✝ : Type u_2
T : Type u_3
inst✝⁵ : Semiring R✝
inst✝⁴ : Semiring S✝
inst✝³ : Semiring T
R : Type u_4
S : Type u_5
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
H : LocalRing S
f : R →+* S
inst✝ : IsLocalRingHom f
this : Nontrivial R
⊢ LocalRing R
tactic: haveI : Nontrivial R := pullback_nonzero f f.map_zero f.map_one
state_before: R✝ : Type u_1
S✝ : Type u_2
T : Type u_3
inst✝⁵ : Semiring R✝
inst✝⁴ : Semiring S✝
inst✝³ : Semiring T
R : Type u_4
S : Type u_5
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
H : LocalRing S
f : R →+* S
inst✝ : IsLocalRingHom f
this : Nontrivial R
⊢ LocalRing R
state_after: case h
R✝ : Type u_1
S✝ : Type u_2
T : Type u_3
inst✝⁵ : Semiring R✝
inst✝⁴ : Semiring S✝
inst✝³ : Semiring T
R : Type u_4
S : Type u_5
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
H : LocalRing S
f : R →+* S
inst✝ : IsLocalRingHom f
this : Nontrivial R
⊢ ∀ (a b : R), a ∈ nonunits R → b ∈ nonunits R → a + b ∈ nonunits R
tactic: apply LocalRing.of_nonunits_add
state_before: case h
R✝ : Type u_1
S✝ : Type u_2
T : Type u_3
inst✝⁵ : Semiring R✝
inst✝⁴ : Semiring S✝
inst✝³ : Semiring T
R : Type u_4
S : Type u_5
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
H : LocalRing S
f : R →+* S
inst✝ : IsLocalRingHom f
this : Nontrivial R
⊢ ∀ (a b : R), a ∈ nonunits R → b ∈ nonunits R → a + b ∈ nonunits R
state_after: case h
R✝ : Type u_1
S✝ : Type u_2
T : Type u_3
inst✝⁵ : Semiring R✝
inst✝⁴ : Semiring S✝
inst✝³ : Semiring T
R : Type u_4
S : Type u_5
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
H : LocalRing S
f : R →+* S
inst✝ : IsLocalRingHom f
this : Nontrivial R
a b : R
⊢ a ∈ nonunits R → b ∈ nonunits R → a + b ∈ nonunits R
tactic: intro a b
state_before: case h
R✝ : Type u_1
S✝ : Type u_2
T : Type u_3
inst✝⁵ : Semiring R✝
inst✝⁴ : Semiring S✝
inst✝³ : Semiring T
R : Type u_4
S : Type u_5
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
H : LocalRing S
f : R →+* S
inst✝ : IsLocalRingHom f
this : Nontrivial R
a b : R
⊢ a ∈ nonunits R → b ∈ nonunits R → a + b ∈ nonunits R
state_after: case h
R✝ : Type u_1
S✝ : Type u_2
T : Type u_3
inst✝⁵ : Semiring R✝
inst✝⁴ : Semiring S✝
inst✝³ : Semiring T
R : Type u_4
S : Type u_5
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
H : LocalRing S
f : R →+* S
inst✝ : IsLocalRingHom f
this : Nontrivial R
a b : R
⊢ f a ∈ nonunits S → f b ∈ nonunits S → f a + f b ∈ nonunits S
tactic: simp_rw [← map_mem_nonunits_iff f, f.map_add]
state_before: case h
R✝ : Type u_1
S✝ : Type u_2
T : Type u_3
inst✝⁵ : Semiring R✝
inst✝⁴ : Semiring S✝
inst✝³ : Semiring T
R : Type u_4
S : Type u_5
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
H : LocalRing S
f : R →+* S
inst✝ : IsLocalRingHom f
this : Nontrivial R
a b : R
⊢ f a ∈ nonunits S → f b ∈ nonunits S → f a + f b ∈ nonunits S
state_after: no goals
tactic: exact LocalRing.nonunits_add
Theorem: EuclideanSpace.single_apply
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

Proof steps:
state_before: ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
inst✝ : DecidableEq ι
i : ι
a : 𝕜
j : ι
⊢ single i a j = if j = i then a else 0
state_after: no goals
tactic: rw [EuclideanSpace.single, WithLp.equiv_symm_pi_apply, ← Pi.single_apply i a j]
Theorem: HurwitzZeta.completedHurwitzZetaEven_residue_one
File: Mathlib/NumberTheory/LSeries/HurwitzZetaEven.lean

Proof steps:
state_before: a : UnitAddCircle
⊢ Tendsto (fun s => (s - 1) * completedHurwitzZetaEven a s) (𝓝[≠] 1) (𝓝 1)
state_after: a : UnitAddCircle
h1 : Tendsto (fun s => (s - ↑(1 / 2)) * (hurwitzEvenFEPair a).Λ s) (𝓝[≠] ↑(1 / 2)) (𝓝 (1 * 1))
⊢ Tendsto (fun s => (s - 1) * completedHurwitzZetaEven a s) (𝓝[≠] 1) (𝓝 1)
tactic: have h1 : Tendsto (fun s : ℂ ↦ (s - ↑(1  / 2 : ℝ)) * _) (𝓝[≠] ↑(1  / 2 : ℝ))
    (𝓝 ((1 : ℂ) * (1 : ℂ))) := (hurwitzEvenFEPair a).Λ_residue_k
state_before: a : UnitAddCircle
h1 : Tendsto (fun s => (s - ↑(1 / 2)) * (hurwitzEvenFEPair a).Λ s) (𝓝[≠] ↑(1 / 2)) (𝓝 (1 * 1))
⊢ Tendsto (fun s => (s - 1) * completedHurwitzZetaEven a s) (𝓝[≠] 1) (𝓝 1)
state_after: a : UnitAddCircle
h1 : Tendsto (fun s => (s - 1 / 2) * (hurwitzEvenFEPair a).Λ s) (𝓝[≠] (1 / 2)) (𝓝 1)
⊢ Tendsto (fun s => (s - 1) * completedHurwitzZetaEven a s) (𝓝[≠] 1) (𝓝 1)
tactic: simp only [push_cast, one_mul] at h1
state_before: a : UnitAddCircle
h1 : Tendsto (fun s => (s - 1 / 2) * (hurwitzEvenFEPair a).Λ s) (𝓝[≠] (1 / 2)) (𝓝 1)
⊢ Tendsto (fun s => (s - 1) * completedHurwitzZetaEven a s) (𝓝[≠] 1) (𝓝 1)
state_after: a : UnitAddCircle
h1 : Tendsto (fun s => (s - 1 / 2) * (hurwitzEvenFEPair a).Λ s) (𝓝[≠] (1 / 2)) (𝓝 1)
s : ℂ
⊢ ((fun s => (s - 1 / 2) * (hurwitzEvenFEPair a).Λ s) ∘ fun s => s / 2) s = (s - 1) * completedHurwitzZetaEven a s
tactic: refine (h1.comp <| tendsto_div_two_punctured_nhds 1).congr (fun s ↦ ?_)
state_before: a : UnitAddCircle
h1 : Tendsto (fun s => (s - 1 / 2) * (hurwitzEvenFEPair a).Λ s) (𝓝[≠] (1 / 2)) (𝓝 1)
s : ℂ
⊢ ((fun s => (s - 1 / 2) * (hurwitzEvenFEPair a).Λ s) ∘ fun s => s / 2) s = (s - 1) * completedHurwitzZetaEven a s
state_after: no goals
tactic: rw [completedHurwitzZetaEven, Function.comp_apply, ← sub_div, div_mul_eq_mul_div, mul_div_assoc]
Theorem: Quiver.Path.cons_ne_nil
File: Mathlib/Combinatorics/Quiver/Path.lean

Proof steps:
state_before: V : Type u
inst✝ : Quiver V
a b c d : V
p : Path a b
e : b ⟶ a
h : p.cons e = nil
⊢ False
state_after: no goals
tactic: injection h
Theorem: Set.range_extend_subset
File: Mathlib/Data/Set/Function.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
f : α → β
g : α → γ
g' : β → γ
⊢ range (extend f g g') ⊆ range g ∪ g' '' (range f)ᶜ
state_after: no goals
tactic: classical
  rintro _ ⟨y, rfl⟩
  rw [extend_def]
  split_ifs with h
  exacts [Or.inl (mem_range_self _), Or.inr (mem_image_of_mem _ h)]
Theorem: WeierstrassCurve.Jacobian.negAddY_of_Z_ne_zero
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 → F
hP : W.Equation P
hQ : W.Equation Q
hPz : P z ≠ 0
hQz : Q z ≠ 0
hx : P x * Q z ^ 2 ≠ Q x * P z ^ 2
⊢ W.negAddY P Q / addZ P Q ^ 3 =
    W.toAffine.negAddY (P x / P z ^ 2) (Q x / Q z ^ 2) (P y / P z ^ 3)
      (W.toAffine.slope (P x / P z ^ 2) (Q x / Q z ^ 2) (P y / P z ^ 3) (Q y / Q z ^ 3))
state_after: no goals
tactic: rw [negAddY_eq hPz hQz, addX_eq' hP hQ, div_div, ← mul_pow _ _ 3, toAffine_slope_of_ne hPz hQz hx,
    toAffine_negAddY_of_ne hPz hQz <| addZ_ne_zero_of_X_ne hx]
Theorem: Ordinal.IsFundamentalSequence.succ
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

Proof steps:
state_before: α : Type u_1
r : α → α → Prop
a o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{u}
⊢ (succ o).IsFundamentalSequence 1 fun x x => o
state_after: case refine_1
α : Type u_1
r : α → α → Prop
a o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{u}
⊢ 1 ≤ (succ o).cof.ord

case refine_2
α : Type u_1
r : α → α → Prop
a o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{u}
i j : Ordinal.{u}
hi : i < 1
hj : j < 1
h : i < j
⊢ (fun x x => o) i hi < (fun x x => o) j hj
tactic: refine ⟨?_, @fun i j hi hj h => ?_, blsub_const Ordinal.one_ne_zero o⟩
Theorem: CategoryTheory.GradedObject.Monoidal.leftUnitor_naturality
File: Mathlib/CategoryTheory/GradedObject/Monoidal.lean

Proof steps:
state_before: I : Type u
inst✝⁵ : AddMonoid I
C : Type u_1
inst✝⁴ : Category.{u_2, u_1} C
inst✝³ : MonoidalCategory C
inst✝² : DecidableEq I
inst✝¹ : HasInitial C
inst✝ : (X₂ : C) → PreservesColimit (Functor.empty C) ((curriedTensor C).flip.obj X₂)
X X' : GradedObject I C
φ : X ⟶ X'
⊢ tensorHom (𝟙 tensorUnit) φ ≫ (leftUnitor X').hom = (leftUnitor X).hom ≫ φ
state_after: no goals
tactic: apply mapBifunctorLeftUnitor_naturality
Theorem: Subgroup.IsComplement.equiv_snd_eq_iff_rightCosetEquivalence
File: Mathlib/GroupTheory/Complement.lean

Proof steps:
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
g₁ g₂ : G
⊢ (hHT.equiv g₁).2 = (hHT.equiv g₂).2 ↔ RightCosetEquivalence (↑H) g₁ g₂
state_after: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
g₁ g₂ : G
⊢ (hHT.equiv g₁).2 = (hHT.equiv g₂).2 ↔ g₂ * g₁⁻¹ ∈ H
tactic: rw [RightCosetEquivalence, rightCoset_eq_iff]
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
g₁ g₂ : G
⊢ (hHT.equiv g₁).2 = (hHT.equiv g₂).2 ↔ g₂ * g₁⁻¹ ∈ H
state_after: case mp
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
g₁ g₂ : G
⊢ (hHT.equiv g₁).2 = (hHT.equiv g₂).2 → g₂ * g₁⁻¹ ∈ H

case mpr
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
g₁ g₂ : G
⊢ g₂ * g₁⁻¹ ∈ H → (hHT.equiv g₁).2 = (hHT.equiv g₂).2
tactic: constructor
Theorem: CategoryTheory.GrothendieckTopology.W_adj_unit_app
File: Mathlib/CategoryTheory/Sites/Localization.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{u_4, u_1} C
J : GrothendieckTopology C
A : Type u_2
inst✝ : Category.{u_3, u_2} A
G : (Cᵒᵖ ⥤ A) ⥤ Sheaf J A
adj : G ⊣ sheafToPresheaf J A
P : Cᵒᵖ ⥤ A
⊢ J.W (adj.unit.app P)
state_after: C : Type u_1
inst✝¹ : Category.{u_4, u_1} C
J : GrothendieckTopology C
A : Type u_2
inst✝ : Category.{u_3, u_2} A
G : (Cᵒᵖ ⥤ A) ⥤ Sheaf J A
adj : G ⊣ sheafToPresheaf J A
P : Cᵒᵖ ⥤ A
⊢ LeftBousfield.W (fun x => x ∈ Set.range (sheafToPresheaf J A).obj) (adj.unit.app P)
tactic: rw [W_eq_W_range_sheafToPresheaf_obj]
state_before: C : Type u_1
inst✝¹ : Category.{u_4, u_1} C
J : GrothendieckTopology C
A : Type u_2
inst✝ : Category.{u_3, u_2} A
G : (Cᵒᵖ ⥤ A) ⥤ Sheaf J A
adj : G ⊣ sheafToPresheaf J A
P : Cᵒᵖ ⥤ A
⊢ LeftBousfield.W (fun x => x ∈ Set.range (sheafToPresheaf J A).obj) (adj.unit.app P)
state_after: no goals
tactic: exact LeftBousfield.W_adj_unit_app adj P
Theorem: RingHom.isIntegralElem_leadingCoeff_mul
File: Mathlib/RingTheory/IntegralClosure/IsIntegralClosure/Basic.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝ f : R →+* S
p : R[X]
x : S
h : eval₂ f x p = 0
⊢ f.IsIntegralElem (f p.leadingCoeff * x)
state_after: case pos
R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝ f : R →+* S
p : R[X]
x : S
h : eval₂ f x p = 0
h' : 1 ≤ p.natDegree
⊢ f.IsIntegralElem (f p.leadingCoeff * x)

case neg
R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝ f : R →+* S
p : R[X]
x : S
h : eval₂ f x p = 0
h' : ¬1 ≤ p.natDegree
⊢ f.IsIntegralElem (f p.leadingCoeff * x)
tactic: by_cases h' : 1 ≤ p.natDegree
Theorem: AddCon.zsmul
File: Mathlib/GroupTheory/Congruence/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : Group M
inst✝¹ : Group N
inst✝ : Group P
c : Con M
n : ℕ
w x : M
h : c w x
⊢ c (w ^ Int.ofNat n) (x ^ Int.ofNat n)
state_after: no goals
tactic: simpa only [zpow_natCast, Int.ofNat_eq_coe] using c.pow n h
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : Group M
inst✝¹ : Group N
inst✝ : Group P
c : Con M
n : ℕ
w x : M
h : c w x
⊢ c (w ^ Int.negSucc n) (x ^ Int.negSucc n)
state_after: no goals
tactic: simpa only [zpow_negSucc] using c.inv (c.pow _ h)
Theorem: Function.Surjective.image_surjective
File: Mathlib/Data/Set/Image.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Sort u_3
f : α → β
hf : Surjective f
⊢ Surjective (image f)
state_after: α : Type u_1
β : Type u_2
ι : Sort u_3
f : α → β
hf : Surjective f
s : Set β
⊢ ∃ a, f '' a = s
tactic: intro s
state_before: α : Type u_1
β : Type u_2
ι : Sort u_3
f : α → β
hf : Surjective f
s : Set β
⊢ ∃ a, f '' a = s
state_after: case h
α : Type u_1
β : Type u_2
ι : Sort u_3
f : α → β
hf : Surjective f
s : Set β
⊢ f '' (f ⁻¹' s) = s
tactic: use f ⁻¹' s
state_before: case h
α : Type u_1
β : Type u_2
ι : Sort u_3
f : α → β
hf : Surjective f
s : Set β
⊢ f '' (f ⁻¹' s) = s
state_after: no goals
tactic: rw [hf.image_preimage]
Theorem: Quaternion.normSq_eq_norm_mul_self
File: Mathlib/Analysis/Quaternion.lean

Proof steps:
state_before: a : ℍ
⊢ normSq a = ‖a‖ * ‖a‖
state_after: no goals
tactic: rw [← inner_self, real_inner_self_eq_norm_mul_norm]
Theorem: PMF.toMeasure_apply_eq_zero_iff
File: Mathlib/Probability/ProbabilityMassFunction/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : MeasurableSpace α
p : PMF α
s t : Set α
hs : MeasurableSet s
⊢ p.toMeasure s = 0 ↔ Disjoint p.support s
state_after: no goals
tactic: rw [toMeasure_apply_eq_toOuterMeasure_apply p s hs, toOuterMeasure_apply_eq_zero_iff]