ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: finprod_eq_zero
File: Mathlib/Algebra/BigOperators/Finprod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g : α → M
a b : α
s t : Set α
M₀ : Type u_7
inst✝ : CommMonoidWithZero M₀
f : α → M₀
x : α
hx : f x = 0
hf : (mulSupport f).Finite
⊢ ∏ᶠ (x : α), f x = 0
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g : α → M
a b : α
s t : Set α
M₀ : Type u_7
inst✝ : CommMonoidWithZero M₀
f : α → M₀
x : α
hx : f x = 0
hf : (mulSupport f).Finite
a✝ : Nontrivial M₀
⊢ ∏ᶠ (x : α), f x = 0
tactic: nontriviality
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g : α → M
a b : α
s t : Set α
M₀ : Type u_7
inst✝ : CommMonoidWithZero M₀
f : α → M₀
x : α
hx : f x = 0
hf : (mulSupport f).Finite
a✝ : Nontrivial M₀
⊢ ∏ᶠ (x : α), f x = 0
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g : α → M
a b : α
s t : Set α
M₀ : Type u_7
inst✝ : CommMonoidWithZero M₀
f : α → M₀
x : α
hx : f x = 0
hf : (mulSupport f).Finite
a✝ : Nontrivial M₀
⊢ ∏ i ∈ hf.toFinset, f i = 0
tactic: rw [finprod_eq_prod f hf]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g : α → M
a b : α
s t : Set α
M₀ : Type u_7
inst✝ : CommMonoidWithZero M₀
f : α → M₀
x : α
hx : f x = 0
hf : (mulSupport f).Finite
a✝ : Nontrivial M₀
⊢ ∏ i ∈ hf.toFinset, f i = 0
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g : α → M
a b : α
s t : Set α
M₀ : Type u_7
inst✝ : CommMonoidWithZero M₀
f : α → M₀
x : α
hx : f x = 0
hf : (mulSupport f).Finite
a✝ : Nontrivial M₀
⊢ x ∈ mulSupport f
tactic: refine Finset.prod_eq_zero (hf.mem_toFinset.2 ?_) hx
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g : α → M
a b : α
s t : Set α
M₀ : Type u_7
inst✝ : CommMonoidWithZero M₀
f : α → M₀
x : α
hx : f x = 0
hf : (mulSupport f).Finite
a✝ : Nontrivial M₀
⊢ x ∈ mulSupport f
state_after: no goals
tactic: simp [hx]
Theorem: ZeroHom.inverse_apply
File: Mathlib/Algebra/Group/Equiv/Basic.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
A : Type u_4
B : Type u_5
M : Type u_6
N : Type u_7
P : Type u_8
Q : Type u_9
G : Type u_10
H : Type u_11
inst✝¹ : One M
inst✝ : One N
f : OneHom M N
g : N → M
h₁ : LeftInverse g ⇑f
⊢ g 1 = 1
state_after: no goals
tactic: rw [← f.map_one, h₁]
Theorem: Wbtw.map
File: Mathlib/Analysis/Convex/Between.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✝⁶ : OrderedRing R
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
h : Wbtw R x y z
f : P →ᵃ[R] P'
⊢ Wbtw R (f x) (f y) (f z)
state_after: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
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
h : Wbtw R x y z
f : P →ᵃ[R] P'
⊢ f y ∈ ⇑f '' affineSegment R x z
tactic: rw [Wbtw, ← affineSegment_image]
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
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
h : Wbtw R x y z
f : P →ᵃ[R] P'
⊢ f y ∈ ⇑f '' affineSegment R x z
state_after: no goals
tactic: exact Set.mem_image_of_mem _ h
Theorem: ProperCone.toPointedCone_injective
File: Mathlib/Analysis/Convex/Cone/Proper.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝³ : OrderedSemiring 𝕜
E : Type u_2
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
S T : ProperCone 𝕜 E
h : ↑S = ↑T
⊢ S = T
state_after: case mk
𝕜 : Type u_1
inst✝³ : OrderedSemiring 𝕜
E : Type u_2
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
T : ProperCone 𝕜 E
toSubmodule✝ : Submodule { c // 0 ≤ c } E
isClosed'✝ : IsClosed toSubmodule✝.carrier
h : ↑{ toSubmodule := toSubmodule✝, isClosed' := isClosed'✝ } = ↑T
⊢ { toSubmodule := toSubmodule✝, isClosed' := isClosed'✝ } = T
tactic: cases S
state_before: case mk
𝕜 : Type u_1
inst✝³ : OrderedSemiring 𝕜
E : Type u_2
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
T : ProperCone 𝕜 E
toSubmodule✝ : Submodule { c // 0 ≤ c } E
isClosed'✝ : IsClosed toSubmodule✝.carrier
h : ↑{ toSubmodule := toSubmodule✝, isClosed' := isClosed'✝ } = ↑T
⊢ { toSubmodule := toSubmodule✝, isClosed' := isClosed'✝ } = T
state_after: case mk.mk
𝕜 : Type u_1
inst✝³ : OrderedSemiring 𝕜
E : Type u_2
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
toSubmodule✝¹ : Submodule { c // 0 ≤ c } E
isClosed'✝¹ : IsClosed toSubmodule✝¹.carrier
toSubmodule✝ : Submodule { c // 0 ≤ c } E
isClosed'✝ : IsClosed toSubmodule✝.carrier
h :
  ↑{ toSubmodule := toSubmodule✝¹, isClosed' := isClosed'✝¹ } =
    ↑{ toSubmodule := toSubmodule✝, isClosed' := isClosed'✝ }
⊢ { toSubmodule := toSubmodule✝¹, isClosed' := isClosed'✝¹ } = { toSubmodule := toSubmodule✝, isClosed' := isClosed'✝ }
tactic: cases T
state_before: case mk.mk
𝕜 : Type u_1
inst✝³ : OrderedSemiring 𝕜
E : Type u_2
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
toSubmodule✝¹ : Submodule { c // 0 ≤ c } E
isClosed'✝¹ : IsClosed toSubmodule✝¹.carrier
toSubmodule✝ : Submodule { c // 0 ≤ c } E
isClosed'✝ : IsClosed toSubmodule✝.carrier
h :
  ↑{ toSubmodule := toSubmodule✝¹, isClosed' := isClosed'✝¹ } =
    ↑{ toSubmodule := toSubmodule✝, isClosed' := isClosed'✝ }
⊢ { toSubmodule := toSubmodule✝¹, isClosed' := isClosed'✝¹ } = { toSubmodule := toSubmodule✝, isClosed' := isClosed'✝ }
state_after: no goals
tactic: congr
Theorem: Subgroup.ne_bot_iff_exists_ne_one
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

Proof steps:
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H✝ K H : Subgroup G
⊢ H ≠ ⊥ ↔ ∃ a, a ≠ 1
state_after: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H✝ K H : Subgroup G
⊢ (∃ x ∈ H, x ≠ 1) ↔ ∃ a, a ≠ 1
tactic: rw [← nontrivial_iff_ne_bot, nontrivial_iff_exists_ne_one]
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H✝ K H : Subgroup G
⊢ (∃ x ∈ H, x ≠ 1) ↔ ∃ a, a ≠ 1
state_after: no goals
tactic: simp only [ne_eq, Subtype.exists, mk_eq_one, exists_prop]
Theorem: List.pairwise_singleton
File: .lake/packages/batteries/Batteries/Data/List/Pairwise.lean

Proof steps:
state_before: α : Type u_1
R : α → α → Prop
a : α
⊢ Pairwise R [a]
state_after: no goals
tactic: simp
Theorem: differentiableAt_add_const_iff
File: Mathlib/Analysis/Calculus/FDeriv/Add.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
c : F
h : DifferentiableAt 𝕜 (fun y => f y + c) x
⊢ DifferentiableAt 𝕜 f x
state_after: no goals
tactic: simpa using h.add_const (-c)
Theorem: SimpleGraph.Walk.isCircuit_copy
File: Mathlib/Combinatorics/SimpleGraph/Path.lean

Proof steps:
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v w u u' : V
p : G.Walk u u
hu : u = u'
⊢ (p.copy hu hu).IsCircuit ↔ p.IsCircuit
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u' : V
p : G.Walk u' u'
⊢ (p.copy ⋯ ⋯).IsCircuit ↔ p.IsCircuit
tactic: subst_vars
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u' : V
p : G.Walk u' u'
⊢ (p.copy ⋯ ⋯).IsCircuit ↔ p.IsCircuit
state_after: no goals
tactic: rfl
Theorem: Batteries.AssocList.contains_eq
File: .lake/packages/batteries/Batteries/Data/AssocList.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : BEq α
a : α
l : AssocList α β
⊢ contains a l = l.toList.any fun x => x.fst == a
state_after: no goals
tactic: induction l <;> simp [*, contains]
Theorem: IsIntegralCurveAt.isIntegralCurveOn
File: Mathlib/Geometry/Manifold/IntegralCurve.lean

Proof steps:
state_before: E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
H : Type u_2
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
γ γ' : ℝ → M
v : (x : M) → TangentSpace I x
s s' : Set ℝ
t₀ : ℝ
h : ∀ t ∈ s, IsIntegralCurveAt γ v t
⊢ IsIntegralCurveOn γ v s
state_after: E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
H : Type u_2
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
γ γ' : ℝ → M
v : (x : M) → TangentSpace I x
s s' : Set ℝ
t₀ : ℝ
h : ∀ t ∈ s, IsIntegralCurveAt γ v t
t : ℝ
ht : t ∈ s
⊢ HasMFDerivAt 𝓘(ℝ, ℝ) I γ t (ContinuousLinearMap.smulRight 1 (v (γ t)))
tactic: intros t ht
state_before: E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
H : Type u_2
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
γ γ' : ℝ → M
v : (x : M) → TangentSpace I x
s s' : Set ℝ
t₀ : ℝ
h : ∀ t ∈ s, IsIntegralCurveAt γ v t
t : ℝ
ht : t ∈ s
⊢ HasMFDerivAt 𝓘(ℝ, ℝ) I γ t (ContinuousLinearMap.smulRight 1 (v (γ t)))
state_after: case intro.intro
E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
H : Type u_2
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
γ γ' : ℝ → M
v : (x : M) → TangentSpace I x
s✝ s' : Set ℝ
t₀ : ℝ
h✝ : ∀ t ∈ s✝, IsIntegralCurveAt γ v t
t : ℝ
ht : t ∈ s✝
s : Set ℝ
hs : s ∈ 𝓝 t
h : IsIntegralCurveOn γ v s
⊢ HasMFDerivAt 𝓘(ℝ, ℝ) I γ t (ContinuousLinearMap.smulRight 1 (v (γ t)))
tactic: obtain ⟨s, hs, h⟩ := isIntegralCurveAt_iff.mp (h t ht)
state_before: case intro.intro
E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
H : Type u_2
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
γ γ' : ℝ → M
v : (x : M) → TangentSpace I x
s✝ s' : Set ℝ
t₀ : ℝ
h✝ : ∀ t ∈ s✝, IsIntegralCurveAt γ v t
t : ℝ
ht : t ∈ s✝
s : Set ℝ
hs : s ∈ 𝓝 t
h : IsIntegralCurveOn γ v s
⊢ HasMFDerivAt 𝓘(ℝ, ℝ) I γ t (ContinuousLinearMap.smulRight 1 (v (γ t)))
state_after: no goals
tactic: exact h t (mem_of_mem_nhds hs)
Theorem: MeasureTheory.SimpleFunc.tendsto_approxOn_range_L1_nnnorm
File: Mathlib/MeasureTheory/Function/SimpleFuncDenseLp.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace E
inst✝² : NormedAddCommGroup E
inst✝¹ : OpensMeasurableSpace E
f : β → E
μ : Measure β
inst✝ : SeparableSpace ↑(Set.range f ∪ {0})
fmeas : Measurable f
hf : Integrable f μ
n : ℕ
x : β
⊢ 0 ∈ Set.range f ∪ {0}
state_after: no goals
tactic: simp
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace E
inst✝² : NormedAddCommGroup E
inst✝¹ : OpensMeasurableSpace E
f : β → E
μ : Measure β
inst✝ : SeparableSpace ↑(Set.range f ∪ {0})
fmeas : Measurable f
hf : Integrable f μ
⊢ Tendsto (fun n => ∫⁻ (x : β), ↑‖↑(approxOn f fmeas (Set.range f ∪ {0}) 0 ⋯ n) x - f x‖₊ ∂μ) atTop (𝓝 0)
state_after: case hμ
α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace E
inst✝² : NormedAddCommGroup E
inst✝¹ : OpensMeasurableSpace E
f : β → E
μ : Measure β
inst✝ : SeparableSpace ↑(Set.range f ∪ {0})
fmeas : Measurable f
hf : Integrable f μ
⊢ ∀ᵐ (x : β) ∂μ, f x ∈ closure (Set.range f ∪ {0})

case hi
α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace E
inst✝² : NormedAddCommGroup E
inst✝¹ : OpensMeasurableSpace E
f : β → E
μ : Measure β
inst✝ : SeparableSpace ↑(Set.range f ∪ {0})
fmeas : Measurable f
hf : Integrable f μ
⊢ HasFiniteIntegral (fun x => f x - 0) μ
tactic: apply tendsto_approxOn_L1_nnnorm fmeas
Theorem: CochainComplex.HomComplex.Cochain.ofHom_zero
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplex.lean

Proof steps:
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
⊢ ofHom 0 = 0
state_after: no goals
tactic: simp only [ofHom, HomologicalComplex.zero_f_apply, ofHoms_zero]
Theorem: MeasureTheory.withDensity_inv_same₀
File: Mathlib/MeasureTheory/Measure/WithDensity.lean

Proof steps:
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
⊢ ((μ.withDensity f).withDensity fun x => (f x)⁻¹) = μ
state_after: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
⊢ μ.withDensity (f * fun x => (f x)⁻¹) = μ
tactic: rw [← withDensity_mul₀ hf hf.inv]
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
⊢ μ.withDensity (f * fun x => (f x)⁻¹) = μ
state_after: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
⊢ (f * fun x => (f x)⁻¹) =ᶠ[ae μ] 1
tactic: suffices (f * fun x ↦ (f x)⁻¹) =ᵐ[μ] 1 by
    rw [withDensity_congr_ae this, withDensity_one]
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
⊢ (f * fun x => (f x)⁻¹) =ᶠ[ae μ] 1
state_after: case h
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero✝ : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top✝ : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
x : α
hf_ne_zero : f x ≠ 0
hf_ne_top : f x ≠ ⊤
⊢ (f * fun x => (f x)⁻¹) x = 1 x
tactic: filter_upwards [hf_ne_zero, hf_ne_top] with x hf_ne_zero hf_ne_top
state_before: case h
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero✝ : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top✝ : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
x : α
hf_ne_zero : f x ≠ 0
hf_ne_top : f x ≠ ⊤
⊢ (f * fun x => (f x)⁻¹) x = 1 x
state_after: case h
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero✝ : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top✝ : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
x : α
hf_ne_zero : f x ≠ 0
hf_ne_top : f x ≠ ⊤
⊢ f x * (f x)⁻¹ = 1 x
tactic: simp only [Pi.mul_apply]
state_before: case h
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero✝ : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top✝ : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
x : α
hf_ne_zero : f x ≠ 0
hf_ne_top : f x ≠ ⊤
⊢ f x * (f x)⁻¹ = 1 x
state_after: no goals
tactic: rw [ENNReal.mul_inv_cancel hf_ne_zero hf_ne_top, Pi.one_apply]
Theorem: MeasureTheory.Measure.restrict_sUnion_congr
File: Mathlib/MeasureTheory/Measure/Restrict.lean

Proof steps:
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
S : Set (Set α)
hc : S.Countable
⊢ μ.restrict (⋃₀ S) = ν.restrict (⋃₀ S) ↔ ∀ s ∈ S, μ.restrict s = ν.restrict s
state_after: no goals
tactic: rw [sUnion_eq_biUnion, restrict_biUnion_congr hc]
Theorem: toIcoDiv_add_left
File: Mathlib/Algebra/Order/ToIntervalMod.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIcoDiv hp a (p + b) = toIcoDiv hp a b + 1
state_after: no goals
tactic: rw [add_comm, toIcoDiv_add_right]
Theorem: LinearOrderedField.lt_inducedMap_iff
File: Mathlib/Algebra/Order/CompleteField.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : LinearOrderedField α
inst✝² : ConditionallyCompleteLinearOrderedField β
inst✝¹ : ConditionallyCompleteLinearOrderedField γ
inst✝ : Archimedean α
a : α
b : β
q✝ : ℚ
x✝ : ∃ q, b < ↑q ∧ ↑q < a
q : ℚ
hbq : b < ↑q
hqa : ↑q < a
⊢ ↑q < inducedMap α β a
state_after: no goals
tactic: rwa [coe_lt_inducedMap_iff]
Theorem: PiNat.apply_eq_of_lt_firstDiff
File: Mathlib/Topology/MetricSpace/PiNat.lean

Proof steps:
state_before: E : ℕ → Type u_1
x y : (n : ℕ) → E n
n : ℕ
hn : n < firstDiff x y
⊢ x n = y n
state_after: E : ℕ → Type u_1
x y : (n : ℕ) → E n
n : ℕ
hn : n < if h : x ≠ y then Nat.find ⋯ else 0
⊢ x n = y n
tactic: rw [firstDiff_def] at hn
state_before: E : ℕ → Type u_1
x y : (n : ℕ) → E n
n : ℕ
hn : n < if h : x ≠ y then Nat.find ⋯ else 0
⊢ x n = y n
state_after: case pos
E : ℕ → Type u_1
x y : (n : ℕ) → E n
n : ℕ
h : x ≠ y
hn : n < Nat.find ⋯
⊢ x n = y n

case neg
E : ℕ → Type u_1
x y : (n : ℕ) → E n
n : ℕ
h : ¬x ≠ y
hn : n < 0
⊢ x n = y n
tactic: split_ifs at hn with h
Theorem: suffixLevenshtein_cons₁
File: Mathlib/Data/List/EditDistance/Defs.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
inst✝¹ : AddZeroClass δ
inst✝ : Min δ
C : Cost α β δ
x : α
xs : List α
ys : List β
⊢ 0 < (levenshtein C (x :: xs) ys :: (suffixLevenshtein C xs ys).val).length
state_after: no goals
tactic: simp
Theorem: Filter.Subsingleton.exists_eq_pure
File: Mathlib/Order/Filter/Subsingleton.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
l : Filter α
inst✝ : l.NeBot
hl : l.Subsingleton
⊢ ∃ a, l = pure a
state_after: case intro.intro
α : Type u_1
β : Type u_2
l : Filter α
inst✝ : l.NeBot
s : Set α
hsl : s ∈ l
hs : s.Subsingleton
⊢ ∃ a, l = pure a
tactic: rcases hl with ⟨s, hsl, hs⟩
state_before: case intro.intro
α : Type u_1
β : Type u_2
l : Filter α
inst✝ : l.NeBot
s : Set α
hsl : s ∈ l
hs : s.Subsingleton
⊢ ∃ a, l = pure a
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
l : Filter α
inst✝ : l.NeBot
a : α
hsl : {a} ∈ l
hs : {a}.Subsingleton
⊢ ∃ a, l = pure a
tactic: rcases exists_eq_singleton_iff_nonempty_subsingleton.2 ⟨nonempty_of_mem hsl, hs⟩ with ⟨a, rfl⟩
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
l : Filter α
inst✝ : l.NeBot
a : α
hsl : {a} ∈ l
hs : {a}.Subsingleton
⊢ ∃ a, l = pure a
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
l : Filter α
inst✝ : l.NeBot
a : α
hsl : {a} ∈ l
hs : {a}.Subsingleton
⊢ l ≤ pure a
tactic: refine ⟨a, (NeBot.le_pure_iff ‹_›).1 ?_⟩
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
l : Filter α
inst✝ : l.NeBot
a : α
hsl : {a} ∈ l
hs : {a}.Subsingleton
⊢ l ≤ pure a
state_after: no goals
tactic: rwa [le_pure_iff]
Theorem: AffineMap.linearMap_vsub
File: Mathlib/LinearAlgebra/AffineSpace/AffineMap.lean

Proof steps:
state_before: k : Type u_1
V1 : Type u_2
P1 : Type u_3
V2 : Type u_4
P2 : Type u_5
V3 : Type u_6
P3 : Type u_7
V4 : Type u_8
P4 : Type u_9
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V1
inst✝¹⁰ : Module k V1
inst✝⁹ : AffineSpace V1 P1
inst✝⁸ : AddCommGroup V2
inst✝⁷ : Module k V2
inst✝⁶ : AffineSpace V2 P2
inst✝⁵ : AddCommGroup V3
inst✝⁴ : Module k V3
inst✝³ : AffineSpace V3 P3
inst✝² : AddCommGroup V4
inst✝¹ : Module k V4
inst✝ : AffineSpace V4 P4
f : P1 →ᵃ[k] P2
p1 p2 : P1
⊢ f.linear (p1 -ᵥ p2) = f p1 -ᵥ f p2
state_after: no goals
tactic: conv_rhs => rw [← vsub_vadd p1 p2, map_vadd, vadd_vsub]
Theorem: AlgebraicGeometry.PresheafedSpace.IsOpenImmersion.app_inv_app'
File: Mathlib/Geometry/RingedSpace/OpenImmersion.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : PresheafedSpace C
f : X ⟶ Y
H : IsOpenImmersion f
U : Opens ↑↑Y
hU : ↑U ⊆ Set.range ⇑f.base
⊢ f.c.app (op U) ≫ invApp f ((Opens.map f.base).obj U) = Y.presheaf.map (eqToHom ⋯).op
state_after: C : Type u
inst✝ : Category.{v, u} C
X Y : PresheafedSpace C
f : X ⟶ Y
H : IsOpenImmersion f
U : Opens ↑↑Y
hU : ↑U ⊆ Set.range ⇑f.base
⊢ (f.c.app (op U) ≫ X.presheaf.map (eqToHom ⋯)) ≫ inv (f.c.app (op ((opensFunctor f).obj ((Opens.map f.base).obj U)))) =
    Y.presheaf.map (eqToHom ⋯).op
tactic: erw [← Category.assoc]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : PresheafedSpace C
f : X ⟶ Y
H : IsOpenImmersion f
U : Opens ↑↑Y
hU : ↑U ⊆ Set.range ⇑f.base
⊢ (f.c.app (op U) ≫ X.presheaf.map (eqToHom ⋯)) ≫ inv (f.c.app (op ((opensFunctor f).obj ((Opens.map f.base).obj U)))) =
    Y.presheaf.map (eqToHom ⋯).op
state_after: C : Type u
inst✝ : Category.{v, u} C
X Y : PresheafedSpace C
f : X ⟶ Y
H : IsOpenImmersion f
U : Opens ↑↑Y
hU : ↑U ⊆ Set.range ⇑f.base
⊢ f.c.app (op U) ≫ X.presheaf.map (eqToHom ⋯) =
    f.c.app (op U) ≫ ((TopCat.Presheaf.pushforward C f.base).obj X.presheaf).map (eqToHom ⋯).op
tactic: rw [IsIso.comp_inv_eq, f.c.naturality]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : PresheafedSpace C
f : X ⟶ Y
H : IsOpenImmersion f
U : Opens ↑↑Y
hU : ↑U ⊆ Set.range ⇑f.base
⊢ f.c.app (op U) ≫ X.presheaf.map (eqToHom ⋯) =
    f.c.app (op U) ≫ ((TopCat.Presheaf.pushforward C f.base).obj X.presheaf).map (eqToHom ⋯).op
state_after: no goals
tactic: congr
Theorem: Zsqrtd.norm_eq_mul_conj
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

Proof steps:
state_before: d : ℤ
n : ℤ√d
⊢ ↑n.norm = n * star n
state_after: no goals
tactic: ext <;> simp [norm, star, mul_comm, sub_eq_add_neg]
Theorem: IsBoundedLinearMap.id
File: Mathlib/Analysis/Normed/Operator/BoundedLinearMaps.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
⊢ ∀ (x : E), ‖LinearMap.id x‖ ≤ 1 * ‖x‖
state_after: no goals
tactic: simp [le_refl]
Theorem: FermatLastTheoremForThreeGen.Solution.exists_Solution_multiplicity_lt
File: Mathlib/NumberTheory/FLT/Three.lean

Proof steps:
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝¹ : DecidableRel fun a b => a ∣ b
inst✝ : DecidableEq (𝓞 K)
⊢ ∃ S₁, S₁.multiplicity < S.multiplicity
state_after: case intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S'✝ : Solution' hζ
inst✝¹ : DecidableRel fun a b => a ∣ b
inst✝ : DecidableEq (𝓞 K)
S' : Solution hζ
hS' : S'.multiplicity = S.Solution'_descent.multiplicity
⊢ ∃ S₁, S₁.multiplicity < S.multiplicity
tactic: obtain ⟨S', hS'⟩ := exists_Solution_of_Solution' (Solution'_descent S)
state_before: case intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S'✝ : Solution' hζ
inst✝¹ : DecidableRel fun a b => a ∣ b
inst✝ : DecidableEq (𝓞 K)
S' : Solution hζ
hS' : S'.multiplicity = S.Solution'_descent.multiplicity
⊢ ∃ S₁, S₁.multiplicity < S.multiplicity
state_after: no goals
tactic: exact ⟨S', hS' ▸ Solution'_descent_multiplicity_lt S⟩