ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: ContinuousMap.mem_idealOfSet_compl_singleton
File: Mathlib/Topology/ContinuousFunction/Ideals.lean

Proof steps:
state_before: X : Type u_1
R : Type u_2
inst✝³ : TopologicalSpace X
inst✝² : Semiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
x : X
f : C(X, R)
⊢ f ∈ idealOfSet R {x}ᶜ ↔ f x = 0
state_after: no goals
tactic: simp only [mem_idealOfSet, compl_compl, Set.mem_singleton_iff, forall_eq]
Theorem: ArithmeticFunction.const_one_eq_zeta
File: Mathlib/NumberTheory/LSeries/Dirichlet.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
n : ℕ
hn : n ≠ 0
⊢ 1 n = ↑((fun x => ζ x) n)
state_after: no goals
tactic: simp only [Pi.one_apply, zeta_apply, hn, ↓reduceIte, cast_one]
Theorem: CategoryTheory.Functor.IsStronglyCartesian.universal_property
File: Mathlib/CategoryTheory/FiberedCategory/Cartesian.lean

Proof steps:
state_before: 𝒮 : Type u₁
𝒳 : Type u₂
inst✝³ : Category.{v₁, u₁} 𝒮
inst✝² : Category.{v₂, u₂} 𝒳
p : 𝒳 ⥤ 𝒮
R S : 𝒮
a b : 𝒳
f : R ⟶ S
φ : a ⟶ b
inst✝¹ : p.IsStronglyCartesian f φ
R' : 𝒮
a' : 𝒳
g : R' ⟶ R
f' : R' ⟶ S
hf' : f' = g ≫ f
φ' : a' ⟶ b
inst✝ : p.IsHomLift f' φ'
⊢ ∃! χ, p.IsHomLift g χ ∧ χ ≫ φ = φ'
state_after: case map
𝒮 : Type u₁
𝒳 : Type u₂
inst✝³ : Category.{v₁, u₁} 𝒮
inst✝² : Category.{v₂, u₂} 𝒳
p : 𝒳 ⥤ 𝒮
R✝ : 𝒮
a✝ b✝ : 𝒳
φ : a✝ ⟶ b✝
a' : 𝒳
φ' : a' ⟶ b✝
R S : 𝒮
a b : 𝒳
g : p.obj a' ⟶ R✝
f : R✝ ⟶ p.obj b✝
inst✝¹ : p.IsStronglyCartesian f φ
hf' : p.map φ' = g ≫ f
inst✝ : p.IsHomLift (p.map φ') φ'
⊢ ∃! χ, p.IsHomLift g χ ∧ χ ≫ φ = φ'
tactic: subst_hom_lift p f' φ'
state_before: case map
𝒮 : Type u₁
𝒳 : Type u₂
inst✝³ : Category.{v₁, u₁} 𝒮
inst✝² : Category.{v₂, u₂} 𝒳
p : 𝒳 ⥤ 𝒮
R✝ : 𝒮
a✝ b✝ : 𝒳
φ : a✝ ⟶ b✝
a' : 𝒳
φ' : a' ⟶ b✝
R S : 𝒮
a b : 𝒳
g : p.obj a' ⟶ R✝
f : R✝ ⟶ p.obj b✝
inst✝¹ : p.IsStronglyCartesian f φ
hf' : p.map φ' = g ≫ f
inst✝ : p.IsHomLift (p.map φ') φ'
⊢ ∃! χ, p.IsHomLift g χ ∧ χ ≫ φ = φ'
state_after: case map
𝒮 : Type u₁
𝒳 : Type u₂
inst✝³ : Category.{v₁, u₁} 𝒮
inst✝² : Category.{v₂, u₂} 𝒳
p : 𝒳 ⥤ 𝒮
R : 𝒮
a b : 𝒳
φ : a ⟶ b
a' : 𝒳
φ' : a' ⟶ b
g : p.obj a' ⟶ R
f : R ⟶ p.obj b
inst✝¹ : p.IsStronglyCartesian f φ
hf' : p.map φ' = g ≫ f
inst✝ : p.IsHomLift (p.map φ') φ'
⊢ ∃! χ, p.IsHomLift g χ ∧ χ ≫ φ = φ'
tactic: clear a b R S
state_before: case map
𝒮 : Type u₁
𝒳 : Type u₂
inst✝³ : Category.{v₁, u₁} 𝒮
inst✝² : Category.{v₂, u₂} 𝒳
p : 𝒳 ⥤ 𝒮
R : 𝒮
a b : 𝒳
φ : a ⟶ b
a' : 𝒳
φ' : a' ⟶ b
g : p.obj a' ⟶ R
f : R ⟶ p.obj b
inst✝¹ : p.IsStronglyCartesian f φ
hf' : p.map φ' = g ≫ f
inst✝ : p.IsHomLift (p.map φ') φ'
⊢ ∃! χ, p.IsHomLift g χ ∧ χ ≫ φ = φ'
state_after: case map
𝒮 : Type u₁
𝒳 : Type u₂
inst✝³ : Category.{v₁, u₁} 𝒮
inst✝² : Category.{v₂, u₂} 𝒳
p : 𝒳 ⥤ 𝒮
R : 𝒮
a b : 𝒳
φ : a ⟶ b
a' : 𝒳
φ' : a' ⟶ b
g : p.obj a' ⟶ R
f : R ⟶ p.obj b
inst✝¹ : p.IsStronglyCartesian f φ
hf' : p.map φ' = g ≫ f
inst✝ : p.IsHomLift (p.map φ') φ'
this : p.IsHomLift (g ≫ f) φ'
⊢ ∃! χ, p.IsHomLift g χ ∧ χ ≫ φ = φ'
tactic: have : p.IsHomLift (g ≫ f) φ' := (hf' ▸ inferInstance)
state_before: case map
𝒮 : Type u₁
𝒳 : Type u₂
inst✝³ : Category.{v₁, u₁} 𝒮
inst✝² : Category.{v₂, u₂} 𝒳
p : 𝒳 ⥤ 𝒮
R : 𝒮
a b : 𝒳
φ : a ⟶ b
a' : 𝒳
φ' : a' ⟶ b
g : p.obj a' ⟶ R
f : R ⟶ p.obj b
inst✝¹ : p.IsStronglyCartesian f φ
hf' : p.map φ' = g ≫ f
inst✝ : p.IsHomLift (p.map φ') φ'
this : p.IsHomLift (g ≫ f) φ'
⊢ ∃! χ, p.IsHomLift g χ ∧ χ ≫ φ = φ'
state_after: no goals
tactic: apply IsStronglyCartesian.universal_property' f
Theorem: is_ascending_rev_series_of_is_descending
File: Mathlib/GroupTheory/Nilpotent.lean

Proof steps:
state_before: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : ℕ → Subgroup G
n : ℕ
hn : H n = ⊥
hdesc : IsDescendingCentralSeries H
⊢ IsAscendingCentralSeries fun m => H (n - m)
state_after: case intro
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : ℕ → Subgroup G
n : ℕ
hn : H n = ⊥
h0 : H 0 = ⊤
hH : ∀ (x : G) (n : ℕ), x ∈ H n → ∀ (g : G), x * g * x⁻¹ * g⁻¹ ∈ H (n + 1)
⊢ IsAscendingCentralSeries fun m => H (n - m)
tactic: cases' hdesc with h0 hH
state_before: case intro
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : ℕ → Subgroup G
n : ℕ
hn : H n = ⊥
h0 : H 0 = ⊤
hH : ∀ (x : G) (n : ℕ), x ∈ H n → ∀ (g : G), x * g * x⁻¹ * g⁻¹ ∈ H (n + 1)
⊢ IsAscendingCentralSeries fun m => H (n - m)
state_after: case intro
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : ℕ → Subgroup G
n : ℕ
hn : H n = ⊥
h0 : H 0 = ⊤
hH : ∀ (x : G) (n : ℕ), x ∈ H n → ∀ (g : G), x * g * x⁻¹ * g⁻¹ ∈ H (n + 1)
x : G
m : ℕ
hx : x ∈ (fun m => H (n - m)) (m + 1)
g : G
⊢ x * g * x⁻¹ * g⁻¹ ∈ (fun m => H (n - m)) m
tactic: refine ⟨hn, fun x m hx g => ?_⟩
state_before: case intro
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : ℕ → Subgroup G
n : ℕ
hn : H n = ⊥
h0 : H 0 = ⊤
hH : ∀ (x : G) (n : ℕ), x ∈ H n → ∀ (g : G), x * g * x⁻¹ * g⁻¹ ∈ H (n + 1)
x : G
m : ℕ
hx : x ∈ (fun m => H (n - m)) (m + 1)
g : G
⊢ x * g * x⁻¹ * g⁻¹ ∈ (fun m => H (n - m)) m
state_after: case intro
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : ℕ → Subgroup G
n : ℕ
hn : H n = ⊥
h0 : H 0 = ⊤
hH : ∀ (x : G) (n : ℕ), x ∈ H n → ∀ (g : G), x * g * x⁻¹ * g⁻¹ ∈ H (n + 1)
x : G
m : ℕ
hx : x ∈ H (n - (m + 1))
g : G
⊢ x * g * x⁻¹ * g⁻¹ ∈ H (n - m)
tactic: dsimp only at hx ⊢
state_before: case intro
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : ℕ → Subgroup G
n : ℕ
hn : H n = ⊥
h0 : H 0 = ⊤
hH : ∀ (x : G) (n : ℕ), x ∈ H n → ∀ (g : G), x * g * x⁻¹ * g⁻¹ ∈ H (n + 1)
x : G
m : ℕ
hx : x ∈ H (n - (m + 1))
g : G
⊢ x * g * x⁻¹ * g⁻¹ ∈ H (n - m)
state_after: case pos
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : ℕ → Subgroup G
n : ℕ
hn : H n = ⊥
h0 : H 0 = ⊤
hH : ∀ (x : G) (n : ℕ), x ∈ H n → ∀ (g : G), x * g * x⁻¹ * g⁻¹ ∈ H (n + 1)
x : G
m : ℕ
hx : x ∈ H (n - (m + 1))
g : G
hm : n ≤ m
⊢ x * g * x⁻¹ * g⁻¹ ∈ H (n - m)

case neg
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : ℕ → Subgroup G
n : ℕ
hn : H n = ⊥
h0 : H 0 = ⊤
hH : ∀ (x : G) (n : ℕ), x ∈ H n → ∀ (g : G), x * g * x⁻¹ * g⁻¹ ∈ H (n + 1)
x : G
m : ℕ
hx : x ∈ H (n - (m + 1))
g : G
hm : ¬n ≤ m
⊢ x * g * x⁻¹ * g⁻¹ ∈ H (n - m)
tactic: by_cases hm : n ≤ m
Theorem: Finset.card_shatterer_le_sum_vcDim
File: Mathlib/Combinatorics/SetFamily/Shatter.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s t : Finset α
a : α
n : ℕ
inst✝ : Fintype α
⊢ 𝒜.shatterer.card ≤ ∑ k ∈ Iic 𝒜.vcDim, (Fintype.card α).choose k
state_after: α : Type u_1
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s t : Finset α
a : α
n : ℕ
inst✝ : Fintype α
⊢ 𝒜.shatterer.card ≤ ∑ x ∈ Iic 𝒜.vcDim, (powersetCard x univ).card
tactic: simp_rw [← card_univ, ← card_powersetCard]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s t : Finset α
a : α
n : ℕ
inst✝ : Fintype α
⊢ 𝒜.shatterer.card ≤ ∑ x ∈ Iic 𝒜.vcDim, (powersetCard x univ).card
state_after: α : Type u_1
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s✝ t : Finset α
a : α
n : ℕ
inst✝ : Fintype α
s : Finset α
hs : s ∈ 𝒜.shatterer
⊢ s.card ∈ Iic 𝒜.vcDim ∧ s ∈ powersetCard s.card univ
tactic: refine (card_le_card fun s hs ↦ mem_biUnion.2 ⟨card s, ?_⟩).trans card_biUnion_le
state_before: α : Type u_1
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s✝ t : Finset α
a : α
n : ℕ
inst✝ : Fintype α
s : Finset α
hs : s ∈ 𝒜.shatterer
⊢ s.card ∈ Iic 𝒜.vcDim ∧ s ∈ powersetCard s.card univ
state_after: no goals
tactic: exact ⟨mem_Iic.2 (mem_shatterer.1 hs).card_le_vcDim, mem_powersetCard_univ.2 rfl⟩
Theorem: ENNReal.tendsto_nat_tsum
File: Mathlib/Topology/Instances/ENNReal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g : α → ℝ≥0∞
f : ℕ → ℝ≥0∞
⊢ Tendsto (fun n => ∑ i ∈ Finset.range n, f i) atTop (𝓝 (∑' (n : ℕ), f n))
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g : α → ℝ≥0∞
f : ℕ → ℝ≥0∞
⊢ HasSum f (∑' (n : ℕ), f n)
tactic: rw [← hasSum_iff_tendsto_nat]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g : α → ℝ≥0∞
f : ℕ → ℝ≥0∞
⊢ HasSum f (∑' (n : ℕ), f n)
state_after: no goals
tactic: exact ENNReal.summable.hasSum
Theorem: CategoryTheory.NonPreadditiveAbelian.neg_sub'
File: Mathlib/CategoryTheory/Abelian/NonPreadditive.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : NonPreadditiveAbelian C
X Y : C
a b : X ⟶ Y
⊢ -(a - b) = -a + b
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : NonPreadditiveAbelian C
X Y : C
a b : X ⟶ Y
⊢ 0 - (a - b) = 0 - a + b
tactic: rw [neg_def, neg_def]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : NonPreadditiveAbelian C
X Y : C
a b : X ⟶ Y
⊢ 0 - (a - b) = 0 - a + b
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : NonPreadditiveAbelian C
X Y : C
a b : X ⟶ Y
⊢ 0 - 0 - (a - b) = 0 - a + b
tactic: conv_lhs => rw [← sub_self (0 : X ⟶ Y)]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : NonPreadditiveAbelian C
X Y : C
a b : X ⟶ Y
⊢ 0 - 0 - (a - b) = 0 - a + b
state_after: no goals
tactic: rw [sub_sub_sub, add_def, neg_def]
Theorem: IsAdjoinRootMonic.coeff_root
File: Mathlib/RingTheory/IsAdjoinRoot.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : Ring S
f : R[X]
inst✝ : Algebra R S
h : IsAdjoinRootMonic S f
hdeg : 1 < f.natDegree
⊢ h.coeff h.root = Pi.single 1 1
state_after: no goals
tactic: rw [← h.coeff_root_pow hdeg, pow_one]
Theorem: MeasureTheory.measurePreserving_div_right
File: Mathlib/MeasureTheory/Group/Measure.lean

Proof steps:
state_before: 𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : μ.IsMulRightInvariant
g : G
⊢ MeasurePreserving (fun x => x / g) μ μ
state_after: no goals
tactic: simp_rw [div_eq_mul_inv, measurePreserving_mul_right μ g⁻¹]
Theorem: Filter.isCountablyGenerated_pure
File: Mathlib/Order/Filter/Bases.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Sort u_5
a : α
⊢ (pure a).IsCountablyGenerated
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Sort u_5
a : α
⊢ (𝓟 {a}).IsCountablyGenerated
tactic: rw [← principal_singleton]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Sort u_5
a : α
⊢ (𝓟 {a}).IsCountablyGenerated
state_after: no goals
tactic: exact isCountablyGenerated_principal _
Theorem: Antitone.map_iInf_of_continuousAt'
File: Mathlib/Topology/Order/Monotone.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁷ : ConditionallyCompleteLinearOrder α
inst✝⁶ : TopologicalSpace α
inst✝⁵ : OrderTopology α
inst✝⁴ : ConditionallyCompleteLinearOrder β
inst✝³ : TopologicalSpace β
inst✝² : OrderClosedTopology β
inst✝¹ : Nonempty γ
ι : Sort u_4
inst✝ : Nonempty ι
f : α → β
g : ι → α
Cf : ContinuousAt f (iInf g)
Af : Antitone f
bdd : autoParam (BddBelow (range g)) _auto✝
⊢ f (⨅ i, g i) = ⨆ i, f (g i)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁷ : ConditionallyCompleteLinearOrder α
inst✝⁶ : TopologicalSpace α
inst✝⁵ : OrderTopology α
inst✝⁴ : ConditionallyCompleteLinearOrder β
inst✝³ : TopologicalSpace β
inst✝² : OrderClosedTopology β
inst✝¹ : Nonempty γ
ι : Sort u_4
inst✝ : Nonempty ι
f : α → β
g : ι → α
Cf : ContinuousAt f (iInf g)
Af : Antitone f
bdd : autoParam (BddBelow (range g)) _auto✝
⊢ sSup (range (f ∘ g)) = sSup (range fun i => f (g i))
tactic: rw [iInf, Antitone.map_sInf_of_continuousAt' Cf Af (range_nonempty g) bdd, ← range_comp, iSup]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁷ : ConditionallyCompleteLinearOrder α
inst✝⁶ : TopologicalSpace α
inst✝⁵ : OrderTopology α
inst✝⁴ : ConditionallyCompleteLinearOrder β
inst✝³ : TopologicalSpace β
inst✝² : OrderClosedTopology β
inst✝¹ : Nonempty γ
ι : Sort u_4
inst✝ : Nonempty ι
f : α → β
g : ι → α
Cf : ContinuousAt f (iInf g)
Af : Antitone f
bdd : autoParam (BddBelow (range g)) _auto✝
⊢ sSup (range (f ∘ g)) = sSup (range fun i => f (g i))
state_after: no goals
tactic: rfl
Theorem: Finset.Icc_ssubset_Icc_right
File: Mathlib/Order/Interval/Finset/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
hI : a₂ ≤ b₂
ha : a₂ ≤ a₁
hb : b₁ < b₂
⊢ Icc a₁ b₁ ⊂ Icc a₂ b₂
state_after: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
hI : a₂ ≤ b₂
ha : a₂ ≤ a₁
hb : b₁ < b₂
⊢ Set.Icc a₁ b₁ ⊂ Set.Icc a₂ b₂
tactic: rw [← coe_ssubset, coe_Icc, coe_Icc]
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
hI : a₂ ≤ b₂
ha : a₂ ≤ a₁
hb : b₁ < b₂
⊢ Set.Icc a₁ b₁ ⊂ Set.Icc a₂ b₂
state_after: no goals
tactic: exact Set.Icc_ssubset_Icc_right hI ha hb
Theorem: Orientation.oangle_smul_smul_self_of_nonneg
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

Proof steps:
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x : V
r₁ r₂ : ℝ
hr₁ : 0 ≤ r₁
hr₂ : 0 ≤ r₂
⊢ o.oangle (r₁ • x) (r₂ • x) = 0
state_after: case inl
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x : V
r₁ r₂ : ℝ
hr₁ : 0 ≤ r₁
hr₂ : 0 ≤ r₂
h : 0 < r₁
⊢ o.oangle (r₁ • x) (r₂ • x) = 0

case inr
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x : V
r₁ r₂ : ℝ
hr₁ : 0 ≤ r₁
hr₂ : 0 ≤ r₂
h : 0 = r₁
⊢ o.oangle (r₁ • x) (r₂ • x) = 0
tactic: rcases hr₁.lt_or_eq with (h | h)
Theorem: IntervalIntegrable.comp_mul_right
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

Proof steps:
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntervalIntegrable f volume a b
c : ℝ
⊢ IntervalIntegrable (fun x => f (x * c)) volume (a / c) (b / c)
state_after: no goals
tactic: simpa only [mul_comm] using comp_mul_left hf c
Theorem: BddAbove.isBoundedUnder
File: Mathlib/Order/LiminfLimsup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
r : α → α → Prop
f✝ g : Filter α
inst✝ : Preorder α
f : Filter β
u : β → α
b : α
hb : b ∈ upperBounds (range u)
⊢ ∀ (x : β), u x ≤ b
state_after: no goals
tactic: simpa [mem_upperBounds] using hb
Theorem: AddSubgroup.relindex_inf_ne_zero
File: Mathlib/GroupTheory/Index.lean

Proof steps:
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
hH : H.relindex L ≠ 0
hK : K.relindex L ≠ 0
⊢ (H ⊓ K).relindex L ≠ 0
state_after: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
hK : K.relindex L ≠ 0
hH : H.relindex (K ⊓ L) ≠ 0
⊢ (H ⊓ K).relindex L ≠ 0
tactic: replace hH : H.relindex (K ⊓ L) ≠ 0 := mt (relindex_eq_zero_of_le_right inf_le_right) hH
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
hK : K.relindex L ≠ 0
hH : H.relindex (K ⊓ L) ≠ 0
⊢ (H ⊓ K).relindex L ≠ 0
state_after: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
hK : (K ⊓ L).relindex L ≠ 0
hH : (H ⊓ (K ⊓ L)).relindex (K ⊓ L) ≠ 0
⊢ (H ⊓ K ⊓ L).relindex L ≠ 0
tactic: rw [← inf_relindex_right] at hH hK ⊢
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
hK : (K ⊓ L).relindex L ≠ 0
hH : (H ⊓ (K ⊓ L)).relindex (K ⊓ L) ≠ 0
⊢ (H ⊓ K ⊓ L).relindex L ≠ 0
state_after: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
hK : (K ⊓ L).relindex L ≠ 0
hH : (H ⊓ (K ⊓ L)).relindex (K ⊓ L) ≠ 0
⊢ (H ⊓ (K ⊓ L)).relindex L ≠ 0
tactic: rw [inf_assoc]
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
hK : (K ⊓ L).relindex L ≠ 0
hH : (H ⊓ (K ⊓ L)).relindex (K ⊓ L) ≠ 0
⊢ (H ⊓ (K ⊓ L)).relindex L ≠ 0
state_after: no goals
tactic: exact relindex_ne_zero_trans hH hK
Theorem: Finmap.keys_ext
File: Mathlib/Data/Finmap.lean

Proof steps:
state_before: α : Type u
β : α → Type v
s₁ s₂ : AList β
⊢ ⟦s₁⟧.keys = ⟦s₂⟧.keys ↔ s₁.keys ~ s₂.keys
state_after: no goals
tactic: simp [keys, AList.keys]
Theorem: Finset.centerMass_filter_ne_zero
File: Mathlib/Analysis/Convex/Combination.lean

Proof steps:
state_before: R : Type u_1
R' : Type u_2
E : Type u_3
F : Type u_4
ι : Type u_5
ι' : Type u_6
α : Type u_7
inst✝⁸ : LinearOrderedField R
inst✝⁷ : LinearOrderedField R'
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s : Set E
i✝ j : ι
c : R
t : Finset ι
w : ι → R
z : ι → E
i : ι
hit : i ∈ t
hit' : i ∉ filter (fun i => w i ≠ 0) t
⊢ w i = 0
state_after: no goals
tactic: simpa only [hit, mem_filter, true_and_iff, Ne, Classical.not_not] using hit'
Theorem: Set.image_preimage_eq_iff
File: Mathlib/Data/Set/Image.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set β
⊢ f '' (f ⁻¹' s) = s → s ⊆ range f
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set β
h : f '' (f ⁻¹' s) = s
⊢ s ⊆ range f
tactic: intro h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set β
h : f '' (f ⁻¹' s) = s
⊢ s ⊆ range f
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set β
h : f '' (f ⁻¹' s) = s
⊢ f '' (f ⁻¹' s) ⊆ range f
tactic: rw [← h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set β
h : f '' (f ⁻¹' s) = s
⊢ f '' (f ⁻¹' s) ⊆ range f
state_after: no goals
tactic: apply image_subset_range
Theorem: Module.eval_apply_eq_zero_iff
File: Mathlib/LinearAlgebra/Dual.lean

Proof steps:
state_before: K : Type uK
V : Type uV
inst✝³ : CommRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Free K V
v : V
⊢ (eval K V) v = 0 ↔ v = 0
state_after: no goals
tactic: simpa only using SetLike.ext_iff.mp (eval_ker K V) v
Theorem: ZMod.card_units
File: Mathlib/FieldTheory/Finite/Basic.lean

Proof steps:
state_before: K : Type u_1
R : Type u_2
p : ℕ
inst✝ : Fact (Nat.Prime p)
⊢ Fintype.card (ZMod p)ˣ = p - 1
state_after: no goals
tactic: rw [Fintype.card_units, card]
Theorem: AddSubmonoid.LocalizationMap.lift_spec_add
File: Mathlib/GroupTheory/MonoidLocalization/Basic.lean

Proof steps:
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
z : N
w v : P
⊢ (f.lift hg) z * w = v ↔ g (f.sec z).1 * w = g ↑(f.sec z).2 * v
state_after: no goals
tactic: erw [mul_comm, ← mul_assoc, mul_inv_left hg, mul_comm]
Theorem: AddGroupSeminorm.add_bddBelow_range_add
File: Mathlib/Analysis/Normed/Group/Seminorm.lean

Proof steps:
state_before: ι : Type u_1
R : Type u_2
R' : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
inst✝² : FunLike F E ℝ
inst✝¹ : CommGroup E
inst✝ : CommGroup F
p✝ q✝ : GroupSeminorm E
x✝ y : E
p q : GroupSeminorm E
x : E
⊢ 0 ∈ lowerBounds (range fun y => p y + q (x / y))
state_after: case intro
ι : Type u_1
R : Type u_2
R' : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
inst✝² : FunLike F E ℝ
inst✝¹ : CommGroup E
inst✝ : CommGroup F
p✝ q✝ : GroupSeminorm E
x✝¹ y : E
p q : GroupSeminorm E
x✝ x : E
⊢ 0 ≤ (fun y => p y + q (x✝ / y)) x
tactic: rintro _ ⟨x, rfl⟩
state_before: case intro
ι : Type u_1
R : Type u_2
R' : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
inst✝² : FunLike F E ℝ
inst✝¹ : CommGroup E
inst✝ : CommGroup F
p✝ q✝ : GroupSeminorm E
x✝¹ y : E
p q : GroupSeminorm E
x✝ x : E
⊢ 0 ≤ (fun y => p y + q (x✝ / y)) x
state_after: case intro
ι : Type u_1
R : Type u_2
R' : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
inst✝² : FunLike F E ℝ
inst✝¹ : CommGroup E
inst✝ : CommGroup F
p✝ q✝ : GroupSeminorm E
x✝¹ y : E
p q : GroupSeminorm E
x✝ x : E
⊢ 0 ≤ p x + q (x✝ / x)
tactic: dsimp
state_before: case intro
ι : Type u_1
R : Type u_2
R' : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
inst✝² : FunLike F E ℝ
inst✝¹ : CommGroup E
inst✝ : CommGroup F
p✝ q✝ : GroupSeminorm E
x✝¹ y : E
p q : GroupSeminorm E
x✝ x : E
⊢ 0 ≤ p x + q (x✝ / x)
state_after: no goals
tactic: positivity
Theorem: Real.tendsto_tan_neg_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

Proof steps:
state_before: ⊢ Tendsto tan (𝓝[>] (-(π / 2))) atBot
state_after: case h.e'_3

⊢ tan = fun x => cos⁻¹ x * sin x
tactic: convert tendsto_cos_neg_pi_div_two.inv_tendsto_zero.atTop_mul_neg (by norm_num)
      tendsto_sin_neg_pi_div_two using 1
state_before: case h.e'_3

⊢ tan = fun x => cos⁻¹ x * sin x
state_after: no goals
tactic: simp only [Pi.inv_apply, ← div_eq_inv_mul, ← tan_eq_sin_div_cos]
Theorem: CategoryTheory.Limits.imageSubobject_arrow'
File: Mathlib/CategoryTheory/Subobject/Limits.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : C
f : X ⟶ Y
inst✝ : HasImage f
⊢ (imageSubobjectIso f).inv ≫ (imageSubobject f).arrow = image.ι f
state_after: no goals
tactic: simp [imageSubobjectIso]
Theorem: le_egauge_closedBall_one
File: Mathlib/Analysis/Convex/EGauge.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝² : NormedField 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c : 𝕜
s t : Set E
x✝ y x : E
⊢ ↑‖x‖₊ ≤ egauge 𝕜 (closedBall 0 1) x
state_after: no goals
tactic: simpa using div_le_egauge_closedBall 𝕜 1 x
Theorem: Subgroup.index_le_of_leftCoset_cover_const
File: Mathlib/GroupTheory/CosetCover.lean

Proof steps:
state_before: G : Type u_1
inst✝ : Group G
ι : Type u_2
s : Finset ι
H : Subgroup G
g : ι → G
hcovers : ⋃ i ∈ s, g i • ↑H = Set.univ
⊢ H.index ≤ s.card
state_after: no goals
tactic: cases H.index.eq_zero_or_pos with
  | inl h => exact h ▸ s.card.zero_le
  | inr h =>
    rw [leftCoset_cover_const_iff_surjOn, Set.surjOn_iff_surjective] at hcovers
    exact (Nat.card_le_card_of_surjective _ hcovers).trans_eq (Nat.card_eq_finsetCard _)