ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: LocallyConstant.congrLeft_apply
File: Mathlib/Topology/LocallyConstant/Basic.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
e : X ≃ₜ Y
⊢ Function.LeftInverse (comap e.toContinuousMap) (comap e.symm.toContinuousMap)
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
e : X ≃ₜ Y
x✝ : LocallyConstant X Z
⊢ comap e.toContinuousMap (comap e.symm.toContinuousMap x✝) = x✝
tactic: intro
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
e : X ≃ₜ Y
x✝ : LocallyConstant X Z
⊢ comap e.toContinuousMap (comap e.symm.toContinuousMap x✝) = x✝
state_after: no goals
tactic: simp [comap_comap]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
e : X ≃ₜ Y
⊢ Function.RightInverse (comap e.toContinuousMap) (comap e.symm.toContinuousMap)
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
e : X ≃ₜ Y
x✝ : LocallyConstant Y Z
⊢ comap e.symm.toContinuousMap (comap e.toContinuousMap x✝) = x✝
tactic: intro
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
e : X ≃ₜ Y
x✝ : LocallyConstant Y Z
⊢ comap e.symm.toContinuousMap (comap e.toContinuousMap x✝) = x✝
state_after: no goals
tactic: simp [comap_comap]
Theorem: Nat.det_vandermonde_id_eq_superFactorial
File: Mathlib/Data/Nat/Factorial/SuperFactorial.lean

Proof steps:
state_before: n✝ : ℕ
R : Type u_1
inst✝ : CommRing R
n : ℕ
⊢ (Matrix.vandermonde fun i => ↑↑i).det = ↑(sf n)
state_after: case zero
n : ℕ
R : Type u_1
inst✝ : CommRing R
⊢ (Matrix.vandermonde fun i => ↑↑i).det = ↑(sf 0)

case succ
n✝ : ℕ
R : Type u_1
inst✝ : CommRing R
n : ℕ
hn : (Matrix.vandermonde fun i => ↑↑i).det = ↑(sf n)
⊢ (Matrix.vandermonde fun i => ↑↑i).det = ↑(sf n + 1)
tactic: induction' n with n hn
Theorem: WittVector.one_coeff_zero
File: Mathlib/RingTheory/WittVector/Defs.lean

Proof steps:
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
⊢ (aeval (Function.uncurry fun i => (![] i).coeff)) (wittOne p 0) = 1
state_after: no goals
tactic: simp only [wittOne_zero_eq_one, map_one]
Theorem: Filter.EventuallyEq.derivWithin_eq
File: Mathlib/Analysis/Calculus/Deriv/Basic.lean

Proof steps:
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
hs : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
⊢ derivWithin f₁ s x = derivWithin f s x
state_after: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
hs : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
⊢ (fderivWithin 𝕜 f₁ s x) 1 = (fderivWithin 𝕜 f s x) 1
tactic: unfold derivWithin
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
hs : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
⊢ (fderivWithin 𝕜 f₁ s x) 1 = (fderivWithin 𝕜 f s x) 1
state_after: no goals
tactic: rw [hs.fderivWithin_eq hx]
Theorem: discrim_eq_sq_of_quadratic_eq_zero
File: Mathlib/Algebra/QuadraticDiscriminant.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommRing R
a b c x : R
h : a * x * x + b * x + c = 0
⊢ discrim a b c = (2 * a * x + b) ^ 2
state_after: R : Type u_1
inst✝ : CommRing R
a b c x : R
h : a * x * x + b * x + c = 0
⊢ b ^ 2 - 4 * a * c = (2 * a * x + b) ^ 2
tactic: rw [discrim]
state_before: R : Type u_1
inst✝ : CommRing R
a b c x : R
h : a * x * x + b * x + c = 0
⊢ b ^ 2 - 4 * a * c = (2 * a * x + b) ^ 2
state_after: no goals
tactic: linear_combination -4 * a * h
Theorem: Finset.singleton_product_singleton
File: Mathlib/Data/Finset/Prod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s s' : Finset α
t t' : Finset β
a✝ : α
b✝ : β
a : α
b : β
⊢ {a} ×ˢ {b} = {(a, b)}
state_after: no goals
tactic: simp only [product_singleton, Function.Embedding.coeFn_mk, map_singleton]
Theorem: Submodule.exists_finset_of_mem_iSup
File: Mathlib/LinearAlgebra/Finsupp.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
N : Type u_3
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
ι : Type u_4
p : ι → Submodule R M
m : M
hm : m ∈ ⨆ i, p i
⊢ ∃ s, m ∈ ⨆ i ∈ s, p i
state_after: R : Type u_1
M : Type u_2
N : Type u_3
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
ι : Type u_4
p : ι → Submodule R M
m : M
hm : m ∈ ⨆ i, p i
this : span R {m} ≤ ⨆ i, p i → ∃ s, span R {m} ≤ ⨆ i ∈ s, p i
⊢ ∃ s, m ∈ ⨆ i ∈ s, p i
tactic: have :=
    CompleteLattice.IsCompactElement.exists_finset_of_le_iSup (Submodule R M)
      (Submodule.singleton_span_isCompactElement m) p
state_before: R : Type u_1
M : Type u_2
N : Type u_3
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
ι : Type u_4
p : ι → Submodule R M
m : M
hm : m ∈ ⨆ i, p i
this : span R {m} ≤ ⨆ i, p i → ∃ s, span R {m} ≤ ⨆ i ∈ s, p i
⊢ ∃ s, m ∈ ⨆ i ∈ s, p i
state_after: R : Type u_1
M : Type u_2
N : Type u_3
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
ι : Type u_4
p : ι → Submodule R M
m : M
hm : m ∈ ⨆ i, p i
this : m ∈ ⨆ i, p i → ∃ s, m ∈ ⨆ i ∈ s, p i
⊢ ∃ s, m ∈ ⨆ i ∈ s, p i
tactic: simp only [Submodule.span_singleton_le_iff_mem] at this
state_before: R : Type u_1
M : Type u_2
N : Type u_3
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
ι : Type u_4
p : ι → Submodule R M
m : M
hm : m ∈ ⨆ i, p i
this : m ∈ ⨆ i, p i → ∃ s, m ∈ ⨆ i ∈ s, p i
⊢ ∃ s, m ∈ ⨆ i ∈ s, p i
state_after: no goals
tactic: exact this hm
Theorem: midpoint_vsub
File: Mathlib/LinearAlgebra/AffineSpace/Midpoint.lean

Proof steps:
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : Ring R
inst✝⁶ : Invertible 2
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z p₁ p₂ p : P
⊢ midpoint R p₁ p₂ -ᵥ p = ⅟2 • (p₁ -ᵥ p) + ⅟2 • (p₂ -ᵥ p)
state_after: no goals
tactic: rw [← vsub_sub_vsub_cancel_right p₁ p p₂, smul_sub, sub_eq_add_neg, ← smul_neg,
    neg_vsub_eq_vsub_rev, add_assoc, invOf_two_smul_add_invOf_two_smul, ← vadd_vsub_assoc,
    midpoint_comm, midpoint, lineMap_apply]
Theorem: CategoryTheory.IsHomLift.id_lift_eqToHom_domain
File: Mathlib/CategoryTheory/FiberedCategory/HomLift.lean

Proof steps:
state_before: 𝒮 : Type u₁
𝒳 : Type u₂
inst✝¹ : Category.{v₁, u₂} 𝒳
inst✝ : Category.{v₂, u₁} 𝒮
p✝ p : 𝒳 ⥤ 𝒮
R S : 𝒮
hRS : R = S
a : 𝒳
ha : p.obj a = R
⊢ p.IsHomLift (eqToHom hRS) (𝟙 a)
state_after: 𝒮 : Type u₁
𝒳 : Type u₂
inst✝¹ : Category.{v₁, u₂} 𝒳
inst✝ : Category.{v₂, u₁} 𝒮
p✝ p : 𝒳 ⥤ 𝒮
a : 𝒳
⊢ p.IsHomLift (eqToHom ⋯) (𝟙 a)
tactic: subst hRS ha
state_before: 𝒮 : Type u₁
𝒳 : Type u₂
inst✝¹ : Category.{v₁, u₂} 𝒳
inst✝ : Category.{v₂, u₁} 𝒮
p✝ p : 𝒳 ⥤ 𝒮
a : 𝒳
⊢ p.IsHomLift (eqToHom ⋯) (𝟙 a)
state_after: no goals
tactic: simp
Theorem: ProbabilityTheory.gaussianReal_map_const_add
File: Mathlib/Probability/Distributions/Gaussian.lean

Proof steps:
state_before: μ : ℝ
v : ℝ≥0
y : ℝ
⊢ Measure.map (fun x => y + x) (gaussianReal μ v) = gaussianReal (μ + y) v
state_after: μ : ℝ
v : ℝ≥0
y : ℝ
⊢ Measure.map (fun x => x + y) (gaussianReal μ v) = gaussianReal (μ + y) v
tactic: simp_rw [add_comm y]
state_before: μ : ℝ
v : ℝ≥0
y : ℝ
⊢ Measure.map (fun x => x + y) (gaussianReal μ v) = gaussianReal (μ + y) v
state_after: no goals
tactic: exact gaussianReal_map_add_const y
Theorem: Nat.minFac_eq_one_iff
File: Mathlib/Data/Nat/Prime/Defs.lean

Proof steps:
state_before: n✝ n : ℕ
⊢ n.minFac = 1 ↔ n = 1
state_after: case mp
n✝ n : ℕ
⊢ n.minFac = 1 → n = 1

case mpr
n✝ n : ℕ
⊢ n = 1 → n.minFac = 1
tactic: constructor
Theorem: cexp_neg_quadratic_isLittleO_rpow_atTop
File: Mathlib/Analysis/SpecialFunctions/Gaussian/PoissonSummation.lean

Proof steps:
state_before: E : Type u_1
inst✝ : NormedAddCommGroup E
a : ℂ
ha : a.re < 0
b : ℂ
s : ℝ
⊢ (fun x => cexp (a * ↑x ^ 2 + b * ↑x)) =o[atTop] fun x => x ^ s
state_after: case a
E : Type u_1
inst✝ : NormedAddCommGroup E
a : ℂ
ha : a.re < 0
b : ℂ
s : ℝ
⊢ (fun x => ‖cexp (a * ↑x ^ 2 + b * ↑x)‖) =o[atTop] fun x => x ^ s
tactic: apply Asymptotics.IsLittleO.of_norm_left
state_before: case a
E : Type u_1
inst✝ : NormedAddCommGroup E
a : ℂ
ha : a.re < 0
b : ℂ
s : ℝ
⊢ (fun x => ‖cexp (a * ↑x ^ 2 + b * ↑x)‖) =o[atTop] fun x => x ^ s
state_after: case h.e'_7.h
E : Type u_1
inst✝ : NormedAddCommGroup E
a : ℂ
ha : a.re < 0
b : ℂ
s x : ℝ
⊢ ‖cexp (a * ↑x ^ 2 + b * ↑x)‖ = rexp (a.re * x ^ 2 + b.re * x)
tactic: convert rexp_neg_quadratic_isLittleO_rpow_atTop ha b.re s with x
state_before: case h.e'_7.h
E : Type u_1
inst✝ : NormedAddCommGroup E
a : ℂ
ha : a.re < 0
b : ℂ
s x : ℝ
⊢ ‖cexp (a * ↑x ^ 2 + b * ↑x)‖ = rexp (a.re * x ^ 2 + b.re * x)
state_after: no goals
tactic: simp_rw [Complex.norm_eq_abs, Complex.abs_exp, add_re, ← ofReal_pow, mul_comm (_ : ℂ) ↑(_ : ℝ),
      re_ofReal_mul, mul_comm _ (re _)]
Theorem: IsLocalMin.hasFDerivAt_eq_zero
File: Mathlib/Analysis/Calculus/LocalExtr/Basic.lean

Proof steps:
state_before: E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : E → ℝ
f' : E →L[ℝ] ℝ
s : Set E
a x y : E
h : IsLocalMin f a
hf : HasFDerivAt f f' a
⊢ f' = 0
state_after: case h
E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : E → ℝ
f' : E →L[ℝ] ℝ
s : Set E
a x y✝ : E
h : IsLocalMin f a
hf : HasFDerivAt f f' a
y : E
⊢ f' y = 0 y
tactic: ext y
state_before: case h
E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : E → ℝ
f' : E →L[ℝ] ℝ
s : Set E
a x y✝ : E
h : IsLocalMin f a
hf : HasFDerivAt f f' a
y : E
⊢ f' y = 0 y
state_after: no goals
tactic: apply (h.on univ).hasFDerivWithinAt_eq_zero hf.hasFDerivWithinAt <;>
      rw [posTangentConeAt_univ] <;>
    apply mem_univ
Theorem: MeasureTheory.Measure.map_dirac
File: Mathlib/MeasureTheory/Measure/Dirac.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
s✝ : Set α
a✝ : α
f : α → β
hf : Measurable f
a : α
s : Set β
hs : MeasurableSet s
⊢ (map f (dirac a)) s = (dirac (f a)) s
state_after: no goals
tactic: simp [hs, map_apply hf hs, hf hs, indicator_apply]
Theorem: MeasureTheory.weightedSMul_smul
File: Mathlib/MeasureTheory/Integral/Bochner.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
m : MeasurableSpace α
μ : Measure α
inst✝² : NormedField 𝕜
inst✝¹ : NormedSpace 𝕜 F
inst✝ : SMulCommClass ℝ 𝕜 F
c : 𝕜
s : Set α
x : F
⊢ (weightedSMul μ s) (c • x) = c • (weightedSMul μ s) x
state_after: no goals
tactic: simp_rw [weightedSMul_apply, smul_comm]
Theorem: Ordinal.add_mul_limit_aux
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

Proof steps:
state_before: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ (a + b) * c' ≤ a * c
state_after: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ (a + b) * succ c' ≤ a * c
tactic: apply (mul_le_mul_left' (le_succ c') _).trans
state_before: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ (a + b) * succ c' ≤ a * c
state_after: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ a * succ c' + b ≤ a * c
tactic: rw [IH _ h]
state_before: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ a * succ c' + b ≤ a * c
state_after: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ a * succ c' + ?m.296861 ≤ a * c

a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ Ordinal.{u_1}

a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ b ≤ ?m.296861
tactic: apply (add_le_add_left _ _).trans
Theorem: skewAdjoint.mem_iff
File: Mathlib/Algebra/Star/SelfAdjoint.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
inst✝¹ : AddCommGroup R
inst✝ : StarAddMonoid R
x : R
⊢ x ∈ skewAdjoint R ↔ star x = -x
state_after: R : Type u_1
A : Type u_2
inst✝¹ : AddCommGroup R
inst✝ : StarAddMonoid R
x : R
⊢ x ∈ (skewAdjoint R).carrier ↔ star x = -x
tactic: rw [← AddSubgroup.mem_carrier]
state_before: R : Type u_1
A : Type u_2
inst✝¹ : AddCommGroup R
inst✝ : StarAddMonoid R
x : R
⊢ x ∈ (skewAdjoint R).carrier ↔ star x = -x
state_after: no goals
tactic: exact Iff.rfl
Theorem: Cardinal.blsub_lt_ord_lift_of_isRegular
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

Proof steps:
state_before: α : Type u_1
r : α → α → Prop
o : Ordinal.{u}
f : (a : Ordinal.{u}) → a < o → Ordinal.{max u v}
c : Cardinal.{max u v}
hc : c.IsRegular
ho : lift.{v, u} o.card < c
⊢ lift.{v, u} o.card < c.ord.cof
state_after: no goals
tactic: rwa [hc.cof_eq]
Theorem: _private.Mathlib.Analysis.InnerProductSpace.OfNorm.0.InnerProductSpaceable.add_left_aux4
File: Mathlib/Analysis/InnerProductSpace/OfNorm.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
y z : E
⊢ ‖y - 2 • z‖ * ‖y - 2 • z‖ = 2 * (‖y - z‖ * ‖y - z‖ + ‖z‖ * ‖z‖) - ‖y‖ * ‖y‖
state_after: case h
𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
y z : E
⊢ ‖y‖ * ‖y‖ + ‖y - 2 • z‖ * ‖y - 2 • z‖ = 2 * (‖y - z‖ * ‖y - z‖ + ‖z‖ * ‖z‖)
tactic: apply eq_sub_of_add_eq'
state_before: case h
𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
y z : E
⊢ ‖y‖ * ‖y‖ + ‖y - 2 • z‖ * ‖y - 2 • z‖ = 2 * (‖y - z‖ * ‖y - z‖ + ‖z‖ * ‖z‖)
state_after: case h
𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
y z : E
h₀ : ‖y - z + z‖ * ‖y - z + z‖ + ‖y - z - z‖ * ‖y - z - z‖ = 2 * (‖y - z‖ * ‖y - z‖ + ‖z‖ * ‖z‖)
⊢ ‖y‖ * ‖y‖ + ‖y - 2 • z‖ * ‖y - 2 • z‖ = 2 * (‖y - z‖ * ‖y - z‖ + ‖z‖ * ‖z‖)
tactic: have h₀ := parallelogram_identity (y - z) z
state_before: case h
𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
y z : E
h₀ : ‖y - z + z‖ * ‖y - z + z‖ + ‖y - z - z‖ * ‖y - z - z‖ = 2 * (‖y - z‖ * ‖y - z‖ + ‖z‖ * ‖z‖)
⊢ ‖y‖ * ‖y‖ + ‖y - 2 • z‖ * ‖y - 2 • z‖ = 2 * (‖y - z‖ * ‖y - z‖ + ‖z‖ * ‖z‖)
state_after: no goals
tactic: convert h₀ using 4 <;> (try rw [two_smul]) <;> abel
Theorem: SimpleGraph.Preconnected.ofBoxProdLeft
File: Mathlib/Combinatorics/SimpleGraph/Prod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
inst✝ : Nonempty β
h : (G □ H).Preconnected
⊢ G.Preconnected
state_after: no goals
tactic: classical
  rintro a₁ a₂
  obtain ⟨w⟩ := h (a₁, Classical.arbitrary _) (a₂, Classical.arbitrary _)
  exact ⟨w.ofBoxProdLeft⟩
Theorem: CategoryTheory.ShortComplex.RightHomologyMapData.ofIsLimitKernelFork_φQ
File: Mathlib/Algebra/Homology/ShortComplex/RightHomology.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{?u.63038, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ✝ : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
φ : S₁ ⟶ S₂
hf₁ : S₁.f = 0
c₁ : KernelFork S₁.g
hc₁ : IsLimit c₁
hf₂ : S₂.f = 0
c₂ : KernelFork S₂.g
hc₂ : IsLimit c₂
f : c₁.pt ⟶ c₂.pt
comm : Fork.ι c₁ ≫ φ.τ₂ = f ≫ Fork.ι c₂
⊢ φ.τ₂ ≫ (RightHomologyData.ofIsLimitKernelFork S₂ hf₂ c₂ hc₂).g' =
    (RightHomologyData.ofIsLimitKernelFork S₁ hf₁ c₁ hc₁).g' ≫ φ.τ₃
state_after: no goals
tactic: simp only [RightHomologyData.ofIsLimitKernelFork_g', φ.comm₂₃]
Theorem: Prod.fst_natCast
File: Mathlib/Data/Nat/Cast/Prod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : AddMonoidWithOne α
inst✝ : AddMonoidWithOne β
n : ℕ
⊢ (↑n).1 = ↑n
state_after: no goals
tactic: induction n <;> simp [*]
Theorem: List.eraseIdx_eq_self
File: .lake/packages/batteries/Batteries/Data/List/EraseIdx.lean

Proof steps:
state_before: α : Type u
β : Type v
x✝ : Nat
⊢ [].eraseIdx x✝ = [] ↔ [].length ≤ x✝
state_after: no goals
tactic: simp
state_before: α : Type u
β : Type v
a : α
l : List α
⊢ (a :: l).eraseIdx 0 = a :: l ↔ (a :: l).length ≤ 0
state_after: no goals
tactic: simp [(cons_ne_self _ _).symm]
state_before: α : Type u
β : Type v
a : α
l : List α
k : Nat
⊢ (a :: l).eraseIdx (k + 1) = a :: l ↔ (a :: l).length ≤ k + 1
state_after: no goals
tactic: simp [eraseIdx_eq_self]
Theorem: HomotopyCategory.Pretriangulated.isomorphic_distinguished
File: Mathlib/Algebra/Homology/HomotopyCategory/Pretriangulated.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{u_3, u_1} C
inst✝⁶ : Category.{?u.431334, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
T₁ : Triangle (HomotopyCategory C (ComplexShape.up ℤ))
hT₁ : T₁ ∈ distinguishedTriangles C
T₂ : Triangle (HomotopyCategory C (ComplexShape.up ℤ))
e : T₂ ≅ T₁
⊢ T₂ ∈ distinguishedTriangles C
state_after: case intro.intro.intro.intro
C : Type u_1
D : Type u_2
inst✝⁷ : Category.{u_3, u_1} C
inst✝⁶ : Category.{?u.431334, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
T₁ T₂ : Triangle (HomotopyCategory C (ComplexShape.up ℤ))
e : T₂ ≅ T₁
X Y : CochainComplex C ℤ
f : X ⟶ Y
e' : T₁ ≅ CochainComplex.mappingCone.triangleh f
⊢ T₂ ∈ distinguishedTriangles C
tactic: obtain ⟨X, Y, f, ⟨e'⟩⟩ := hT₁
state_before: case intro.intro.intro.intro
C : Type u_1
D : Type u_2
inst✝⁷ : Category.{u_3, u_1} C
inst✝⁶ : Category.{?u.431334, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
T₁ T₂ : Triangle (HomotopyCategory C (ComplexShape.up ℤ))
e : T₂ ≅ T₁
X Y : CochainComplex C ℤ
f : X ⟶ Y
e' : T₁ ≅ CochainComplex.mappingCone.triangleh f
⊢ T₂ ∈ distinguishedTriangles C
state_after: no goals
tactic: exact ⟨X, Y, f, ⟨e ≪≫ e'⟩⟩
Theorem: Bool.eq_or_eq_not
File: Mathlib/Data/Bool/Basic.lean

Proof steps:
state_before: ⊢ ∀ (a b : Bool), a = b ∨ a = !b
state_after: no goals
tactic: decide
Theorem: MeasureTheory.AEStronglyMeasurable'.continuous_comp
File: Mathlib/MeasureTheory/Function/ConditionalExpectation/AEMeasurable.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
𝕜 : Type u_3
m m0 : MeasurableSpace α
μ : Measure α
inst✝¹ : TopologicalSpace β
f✝ g✝ : α → β
γ : Type u_4
inst✝ : TopologicalSpace γ
f : α → β
g : β → γ
hg : Continuous g
hf : AEStronglyMeasurable' m f μ
x : α
hx : f x = mk f hf x
⊢ (g ∘ f) x = (fun x => g (mk f hf x)) x
state_after: no goals
tactic: rw [Function.comp_apply, hx]
Theorem: frontier_closedBall
File: Mathlib/Analysis/NormedSpace/Real.lean

Proof steps:
state_before: E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace ℝ E
x : E
r : ℝ
hr : r ≠ 0
⊢ frontier (closedBall x r) = sphere x r
state_after: no goals
tactic: rw [frontier, closure_closedBall, interior_closedBall x hr, closedBall_diff_ball]
Theorem: IsCoprime.mul_right
File: Mathlib/RingTheory/Coprime/Basic.lean

Proof steps:
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : IsCoprime x y
H2 : IsCoprime x z
⊢ IsCoprime x (y * z)
state_after: R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : IsCoprime y x
H2 : IsCoprime z x
⊢ IsCoprime (y * z) x
tactic: rw [isCoprime_comm] at H1 H2 ⊢
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : IsCoprime y x
H2 : IsCoprime z x
⊢ IsCoprime (y * z) x
state_after: no goals
tactic: exact H1.mul_left H2
Theorem: Finset.tsum_subtype'
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : CommMonoid α
inst✝ : TopologicalSpace α
f✝ g : β → α
a a₁ a₂ : α
s : Finset β
f : β → α
⊢ ∏' (x : ↑↑s), f ↑x = ∏ x ∈ s, f x
state_after: no goals
tactic: simp
Theorem: UV.disjoint_of_mem_compression_of_not_mem
File: Mathlib/Combinatorics/SetFamily/Compression/UV.lean

Proof steps:
state_before: α : Type u_1
inst✝³ : GeneralizedBooleanAlgebra α
inst✝² : DecidableRel Disjoint
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v a b : α
inst✝ : DecidableEq α
h : a ∈ 𝓒 u v s
ha : a ∉ s
⊢ Disjoint v a
state_after: α : Type u_1
inst✝³ : GeneralizedBooleanAlgebra α
inst✝² : DecidableRel Disjoint
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v a b : α
inst✝ : DecidableEq α
h : a ∈ s ∧ compress u v a ∈ s ∨ a ∉ s ∧ ∃ b ∈ s, compress u v b = a
ha : a ∉ s
⊢ Disjoint v a
tactic: rw [mem_compression] at h
state_before: α : Type u_1
inst✝³ : GeneralizedBooleanAlgebra α
inst✝² : DecidableRel Disjoint
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v a b : α
inst✝ : DecidableEq α
h : a ∈ s ∧ compress u v a ∈ s ∨ a ∉ s ∧ ∃ b ∈ s, compress u v b = a
ha : a ∉ s
⊢ Disjoint v a
state_after: case inl
α : Type u_1
inst✝³ : GeneralizedBooleanAlgebra α
inst✝² : DecidableRel Disjoint
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v a b : α
inst✝ : DecidableEq α
ha : a ∉ s
h : a ∈ s ∧ compress u v a ∈ s
⊢ Disjoint v a

case inr.intro.intro.intro
α : Type u_1
inst✝³ : GeneralizedBooleanAlgebra α
inst✝² : DecidableRel Disjoint
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v a b✝ : α
inst✝ : DecidableEq α
ha : a ∉ s
b : α
hb : b ∈ s
hba : compress u v b = a
⊢ Disjoint v a
tactic: obtain h | ⟨-, b, hb, hba⟩ := h
state_before: case inr.intro.intro.intro
α : Type u_1
inst✝³ : GeneralizedBooleanAlgebra α
inst✝² : DecidableRel Disjoint
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v a b✝ : α
inst✝ : DecidableEq α
ha : a ∉ s
b : α
hb : b ∈ s
hba : compress u v b = a
⊢ Disjoint v a
state_after: case inr.intro.intro.intro
α : Type u_1
inst✝³ : GeneralizedBooleanAlgebra α
inst✝² : DecidableRel Disjoint
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v a b✝ : α
inst✝ : DecidableEq α
ha : a ∉ s
b : α
hb : b ∈ s
hba : (if Disjoint u b ∧ v ≤ b then (b ⊔ u) \ v else b) = a
⊢ Disjoint v a
tactic: unfold compress at hba
state_before: case inr.intro.intro.intro
α : Type u_1
inst✝³ : GeneralizedBooleanAlgebra α
inst✝² : DecidableRel Disjoint
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v a b✝ : α
inst✝ : DecidableEq α
ha : a ∉ s
b : α
hb : b ∈ s
hba : (if Disjoint u b ∧ v ≤ b then (b ⊔ u) \ v else b) = a
⊢ Disjoint v a
state_after: case pos
α : Type u_1
inst✝³ : GeneralizedBooleanAlgebra α
inst✝² : DecidableRel Disjoint
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v a b✝ : α
inst✝ : DecidableEq α
ha : a ∉ s
b : α
hb : b ∈ s
h✝ : Disjoint u b ∧ v ≤ b
hba : (b ⊔ u) \ v = a
⊢ Disjoint v a

case neg
α : Type u_1
inst✝³ : GeneralizedBooleanAlgebra α
inst✝² : DecidableRel Disjoint
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v a b✝ : α
inst✝ : DecidableEq α
ha : a ∉ s
b : α
hb : b ∈ s
h✝ : ¬(Disjoint u b ∧ v ≤ b)
hba : b = a
⊢ Disjoint v a
tactic: split_ifs at hba