ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: MeasureTheory.union_ae_eq_right_iff_ae_subset
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s s₁ s₂ t : Set α
⊢ s ∪ t =ᶠ[ae μ] t ↔ s ≤ᶠ[ae μ] t
state_after: no goals
tactic: rw [union_comm, union_ae_eq_left_iff_ae_subset]
Theorem: Finset.uIcc_subset_Icc
File: Mathlib/Order/Interval/Finset/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Lattice α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
ha : a₁ ∈ Icc a₂ b₂
hb : b₁ ∈ Icc a₂ b₂
⊢ [[a₁, b₁]] ⊆ Icc a₂ b₂
state_after: ι : Type u_1
α : Type u_2
inst✝¹ : Lattice α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
ha : a₂ ≤ a₁ ∧ a₁ ≤ b₂
hb : a₂ ≤ b₁ ∧ b₁ ≤ b₂
⊢ [[a₁, b₁]] ⊆ Icc a₂ b₂
tactic: rw [mem_Icc] at ha hb
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Lattice α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
ha : a₂ ≤ a₁ ∧ a₁ ≤ b₂
hb : a₂ ≤ b₁ ∧ b₁ ≤ b₂
⊢ [[a₁, b₁]] ⊆ Icc a₂ b₂
state_after: no goals
tactic: exact Icc_subset_Icc (_root_.le_inf ha.1 hb.1) (_root_.sup_le ha.2 hb.2)
Theorem: variationOnFromTo.edist_zero_of_eq_zero
File: Mathlib/Analysis/BoundedVariation.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : LinearOrder α
E : Type u_2
inst✝ : PseudoEMetricSpace E
f✝ : α → E
s✝ : Set α
f : α → E
s : Set α
hf : LocallyBoundedVariationOn f s
a b : α
ha : a ∈ s
hb : b ∈ s
h : variationOnFromTo f s a b = 0
⊢ edist (f a) (f b) = 0
state_after: case inr
α : Type u_1
inst✝¹ : LinearOrder α
E : Type u_2
inst✝ : PseudoEMetricSpace E
f✝ : α → E
s✝ : Set α
f : α → E
s : Set α
hf : LocallyBoundedVariationOn f s
a b : α
ha : a ∈ s
hb : b ∈ s
h : variationOnFromTo f s a b = 0
this :
  ∀ {α : Type u_1} [inst : LinearOrder α] {E : Type u_2} [inst_1 : PseudoEMetricSpace E],
    (α → E) →
      Set α →
        ∀ {f : α → E} {s : Set α},
          LocallyBoundedVariationOn f s →
            ∀ {a b : α}, a ∈ s → b ∈ s → variationOnFromTo f s a b = 0 → a ≤ b → edist (f a) (f b) = 0
h' : ¬a ≤ b
⊢ edist (f a) (f b) = 0

α✝ : Type u_1
inst✝³ : LinearOrder α✝
E✝ : Type u_2
inst✝² : PseudoEMetricSpace E✝
α : Type u_1
inst✝¹ : LinearOrder α
E : Type u_2
inst✝ : PseudoEMetricSpace E
f✝ : α → E
s✝ : Set α
f : α → E
s : Set α
hf : LocallyBoundedVariationOn f s
a b : α
ha : a ∈ s
hb : b ∈ s
h : variationOnFromTo f s a b = 0
h' : a ≤ b
⊢ edist (f a) (f b) = 0
tactic: wlog h' : a ≤ b
Theorem: Cardinal.mk_multiset_of_infinite
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

Proof steps:
state_before: α : Type u
inst✝ : Infinite α
⊢ #(Multiset α) = #α
state_after: no goals
tactic: simp
Theorem: Real.isPiSystem_Ioi_rat
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Real.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
⊢ IsPiSystem (⋃ a, {Ioi ↑a})
state_after: case h.e'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
⊢ ⋃ a, {Ioi ↑a} = Ioi '' (Rat.cast '' univ)
tactic: convert isPiSystem_image_Ioi (((↑) : ℚ → ℝ) '' univ)
state_before: case h.e'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
⊢ ⋃ a, {Ioi ↑a} = Ioi '' (Rat.cast '' univ)
state_after: case h.e'_2.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
x : Set ℝ
⊢ x ∈ ⋃ a, {Ioi ↑a} ↔ x ∈ Ioi '' (Rat.cast '' univ)
tactic: ext x
state_before: case h.e'_2.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
x : Set ℝ
⊢ x ∈ ⋃ a, {Ioi ↑a} ↔ x ∈ Ioi '' (Rat.cast '' univ)
state_after: no goals
tactic: simp only [iUnion_singleton_eq_range, mem_range, image_univ, mem_image, exists_exists_eq_and]
Theorem: inv_antitoneOn_Icc_right
File: Mathlib/Algebra/Order/Field/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
ha : 0 < a
⊢ AntitoneOn (fun x => x⁻¹) (Set.Icc a b)
state_after: case h.e'_5.h.h.e'_3
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
ha : 0 < a
x✝ : α
⊢ x✝ = x✝ - 0
tactic: convert sub_inv_antitoneOn_Icc_right ha
state_before: case h.e'_5.h.h.e'_3
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
ha : 0 < a
x✝ : α
⊢ x✝ = x✝ - 0
state_after: no goals
tactic: exact (sub_zero _).symm
Theorem: MeasureTheory.mem_measurableCylinders
File: Mathlib/MeasureTheory/Constructions/Cylinders.lean

Proof steps:
state_before: ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → MeasurableSpace (α i)
s t✝ t : Set ((i : ι) → α i)
⊢ t ∈ measurableCylinders α ↔ ∃ s S, MeasurableSet S ∧ t = cylinder s S
state_after: no goals
tactic: simp_rw [measurableCylinders, mem_iUnion, exists_prop, mem_singleton_iff]
Theorem: CategoryTheory.Functor.IsCoverDense.presheafIso_inv
File: Mathlib/CategoryTheory/Sites/DenseSubsite.lean

Proof steps:
state_before: C : Type u_1
inst✝⁵ : Category.{?u.94604, u_1} C
D : Type u_2
inst✝⁴ : Category.{?u.94611, u_2} D
E : Type u_3
inst✝³ : Category.{?u.94618, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{?u.94670, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.IsLocallyFull K
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val
this : ∀ (X : Dᵒᵖ), IsIso ((sheafHom i.hom).app X)
⊢ ℱ.val ≅ ℱ'.val
state_after: C : Type u_1
inst✝⁵ : Category.{?u.94604, u_1} C
D : Type u_2
inst✝⁴ : Category.{?u.94611, u_2} D
E : Type u_3
inst✝³ : Category.{?u.94618, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{?u.94670, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.IsLocallyFull K
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val
this✝ : ∀ (X : Dᵒᵖ), IsIso ((sheafHom i.hom).app X)
this : IsIso (sheafHom i.hom)
⊢ ℱ.val ≅ ℱ'.val
tactic: haveI : IsIso (sheafHom i.hom) := by apply NatIso.isIso_of_isIso_app
state_before: C : Type u_1
inst✝⁵ : Category.{?u.94604, u_1} C
D : Type u_2
inst✝⁴ : Category.{?u.94611, u_2} D
E : Type u_3
inst✝³ : Category.{?u.94618, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{?u.94670, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.IsLocallyFull K
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val
this✝ : ∀ (X : Dᵒᵖ), IsIso ((sheafHom i.hom).app X)
this : IsIso (sheafHom i.hom)
⊢ ℱ.val ≅ ℱ'.val
state_after: no goals
tactic: apply asIso (sheafHom i.hom)
Theorem: Stream'.head_drop
File: Mathlib/Data/Stream/Init.lean

Proof steps:
state_before: α : Type u
β : Type v
δ : Type w
a : Stream' α
n : ℕ
⊢ (drop n a).head = a.get n
state_after: no goals
tactic: simp
Theorem: Finmap.keysLookupEquiv_symm_apply_keys
File: Mathlib/Data/Finmap.lean

Proof steps:
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
x✝ : Finmap β
⊢ (keysLookupEquiv.symm (keysLookupEquiv x✝)).keys = (↑(keysLookupEquiv x✝)).1
state_after: no goals
tactic: simp only [Equiv.symm_apply_apply, keysLookupEquiv_apply_coe_fst]
Theorem: MeasureTheory.Measure.snd_apply
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

Proof steps:
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SFinite ν
ρ : Measure (α × β)
s : Set β
hs : MeasurableSet s
⊢ ρ.snd s = ρ (Prod.snd ⁻¹' s)
state_after: no goals
tactic: rw [snd, Measure.map_apply measurable_snd hs]
Theorem: Finset.card_fin
File: Mathlib/Data/Fintype/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
n : ℕ
⊢ univ.card = n
state_after: no goals
tactic: simp
Theorem: SeparationQuotient.continuous_lift
File: Mathlib/Topology/Inseparable.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f g : X → Y
t : Set (SeparationQuotient X)
hf : ∀ (x y : X), (x ~ᵢ y) → f x = f y
⊢ Continuous (lift f hf) ↔ Continuous f
state_after: no goals
tactic: simp only [continuous_iff_continuousOn_univ, continuousOn_lift, preimage_univ]
Theorem: Flow.continuous_toFun
File: Mathlib/Dynamics/Flow.lean

Proof steps:
state_before: τ : Type u_1
inst✝³ : AddCommGroup τ
inst✝² : TopologicalSpace τ
inst✝¹ : TopologicalAddGroup τ
α : Type u_2
inst✝ : TopologicalSpace α
ϕ : Flow τ α
t : τ
⊢ Continuous (ϕ.toFun t)
state_after: τ : Type u_1
inst✝³ : AddCommGroup τ
inst✝² : TopologicalSpace τ
inst✝¹ : TopologicalAddGroup τ
α : Type u_2
inst✝ : TopologicalSpace α
ϕ : Flow τ α
t : τ
⊢ Continuous (Function.curry (uncurry ϕ.toFun) t)
tactic: rw [← curry_uncurry ϕ.toFun]
state_before: τ : Type u_1
inst✝³ : AddCommGroup τ
inst✝² : TopologicalSpace τ
inst✝¹ : TopologicalAddGroup τ
α : Type u_2
inst✝ : TopologicalSpace α
ϕ : Flow τ α
t : τ
⊢ Continuous (Function.curry (uncurry ϕ.toFun) t)
state_after: case h
τ : Type u_1
inst✝³ : AddCommGroup τ
inst✝² : TopologicalSpace τ
inst✝¹ : TopologicalAddGroup τ
α : Type u_2
inst✝ : TopologicalSpace α
ϕ : Flow τ α
t : τ
⊢ Continuous (uncurry ϕ.toFun)
tactic: apply continuous_curry
state_before: case h
τ : Type u_1
inst✝³ : AddCommGroup τ
inst✝² : TopologicalSpace τ
inst✝¹ : TopologicalAddGroup τ
α : Type u_2
inst✝ : TopologicalSpace α
ϕ : Flow τ α
t : τ
⊢ Continuous (uncurry ϕ.toFun)
state_after: no goals
tactic: exact ϕ.cont'
Theorem: String.valid_next
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

Proof steps:
state_before: s : String
p : Pos
h : Pos.Valid s p
h₂ : p < s.endPos
⊢ Pos.Valid s (s.next p)
state_after: no goals
tactic: match s, p, h with
  | ⟨_⟩, ⟨_⟩, ⟨cs, [], rfl, rfl⟩ => simp at h₂
  | ⟨_⟩, ⟨_⟩, ⟨cs, c::cs', rfl, rfl⟩ =>
    rw [utf8ByteSize.go_eq, next_of_valid]
    simpa using Pos.Valid.mk (cs ++ [c]) cs'
Theorem: WithTop.image_coe_Ioo
File: Mathlib/Order/Interval/Set/WithBotTop.lean

Proof steps:
state_before: α : Type u_1
inst✝ : Preorder α
a b : α
⊢ some '' Ioo a b = Ioo ↑a ↑b
state_after: no goals
tactic: rw [← preimage_coe_Ioo, image_preimage_eq_inter_range, range_coe,
    inter_eq_self_of_subset_left (Subset.trans Ioo_subset_Iio_self <| Iio_subset_Iio le_top)]
Theorem: MeasureTheory.setLIntegral_dirac
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace α
a : α
f : α → ℝ≥0∞
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
⊢ ∫⁻ (x : α) in s, f x ∂dirac a = if a ∈ s then f a else 0
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace α
a : α
f : α → ℝ≥0∞
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
⊢ (∫⁻ (x : α), f x ∂if a ∈ s then dirac a else 0) = if a ∈ s then f a else 0
tactic: rw [restrict_dirac]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace α
a : α
f : α → ℝ≥0∞
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
⊢ (∫⁻ (x : α), f x ∂if a ∈ s then dirac a else 0) = if a ∈ s then f a else 0
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace α
a : α
f : α → ℝ≥0∞
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
h✝ : a ∈ s
⊢ ∫⁻ (x : α), f x ∂dirac a = f a

case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace α
a : α
f : α → ℝ≥0∞
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
h✝ : a ∉ s
⊢ ∫⁻ (x : α), f x ∂0 = 0
tactic: split_ifs
Theorem: Function.mulSupport_binop_subset
File: Mathlib/Algebra/Group/Support.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
inst✝² : One M
inst✝¹ : One N
inst✝ : One P
op : M → N → P
op1 : op 1 1 = 1
f : α → M
g : α → N
x : α
hx : x ∈ mulSupport fun x => op (f x) (g x)
hf : f x = 1
hg : g x = 1
⊢ (fun x => op (f x) (g x)) x = 1
state_after: no goals
tactic: simp only [hf, hg, op1]
Theorem: MeasureTheory.integrableOn_Ioi_comp_mul_right_iff
File: Mathlib/MeasureTheory/Integral/IntegralEqImproper.lean

Proof steps:
state_before: E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℝ → E
c a : ℝ
ha : 0 < a
⊢ IntegrableOn (fun x => f (x * a)) (Ioi c) volume ↔ IntegrableOn f (Ioi (c * a)) volume
state_after: no goals
tactic: simpa only [mul_comm, mul_zero] using integrableOn_Ioi_comp_mul_left_iff f c ha
Theorem: le_max_right
File: Mathlib/Init/Order/LinearOrder.lean

Proof steps:
state_before: α : Type u
inst✝ : LinearOrder α
a b : α
⊢ b ≤ max a b
state_after: no goals
tactic: if h : a ≤ b
  then simp [max_def, if_pos h, le_refl]
  else simp [max_def, if_neg h]; exact le_of_not_le h
Theorem: ComplexShape.embeddingDownNat_f
File: Mathlib/Algebra/Homology/Embedding/Basic.lean

Proof steps:
state_before: ι : Type u_1
ι' : Type u_2
c : ComplexShape ι
c' : ComplexShape ι'
x✝¹ x✝ : ℕ
h : (fun n => -↑n) x✝¹ = (fun n => -↑n) x✝
⊢ x✝¹ = x✝
state_after: no goals
tactic: simpa using h
state_before: ι : Type u_1
ι' : Type u_2
c : ComplexShape ι
c' : ComplexShape ι'
⊢ ∀ (i₁ i₂ : ℕ), (down ℕ).Rel i₁ i₂ ↔ (up ℤ).Rel ((fun n => -↑n) i₁) ((fun n => -↑n) i₂)
state_after: ι : Type u_1
ι' : Type u_2
c : ComplexShape ι
c' : ComplexShape ι'
⊢ ∀ (i₁ i₂ : ℕ), i₂ + 1 = i₁ ↔ -↑i₁ + 1 = -↑i₂
tactic: dsimp
state_before: ι : Type u_1
ι' : Type u_2
c : ComplexShape ι
c' : ComplexShape ι'
⊢ ∀ (i₁ i₂ : ℕ), i₂ + 1 = i₁ ↔ -↑i₁ + 1 = -↑i₂
state_after: no goals
tactic: omega
Theorem: mul_le_mul_of_mul_div_le
File: Mathlib/Algebra/Order/Field/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
h : a * (b / c) ≤ d
hc : 0 < c
⊢ b * a ≤ d * c
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
h : a * b / c ≤ d
hc : 0 < c
⊢ b * a ≤ d * c
tactic: rw [← mul_div_assoc] at h
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
h : a * b / c ≤ d
hc : 0 < c
⊢ b * a ≤ d * c
state_after: no goals
tactic: rwa [mul_comm b, ← div_le_iff hc]
Theorem: SpectrumRestricts.algebraMap_image
File: Mathlib/Algebra/Algebra/Quasispectrum.lean

Proof steps:
state_before: R✝ : Type u_1
A✝ : Type u_2
inst✝¹¹ : CommSemiring R✝
inst✝¹⁰ : NonUnitalRing A✝
inst✝⁹ : Module R✝ A✝
inst✝⁸ : IsScalarTower R✝ A✝ A✝
inst✝⁷ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁶ : Semifield R
inst✝⁵ : Semifield S
inst✝⁴ : Ring A
inst✝³ : Algebra R S
inst✝² : Algebra R A
inst✝¹ : Algebra S A
a : A
f : S → R
inst✝ : IsScalarTower R S A
h : SpectrumRestricts a f
⊢ ⇑(algebraMap R S) '' spectrum R a = spectrum S a
state_after: case refine_1
R✝ : Type u_1
A✝ : Type u_2
inst✝¹¹ : CommSemiring R✝
inst✝¹⁰ : NonUnitalRing A✝
inst✝⁹ : Module R✝ A✝
inst✝⁸ : IsScalarTower R✝ A✝ A✝
inst✝⁷ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁶ : Semifield R
inst✝⁵ : Semifield S
inst✝⁴ : Ring A
inst✝³ : Algebra R S
inst✝² : Algebra R A
inst✝¹ : Algebra S A
a : A
f : S → R
inst✝ : IsScalarTower R S A
h : SpectrumRestricts a f
⊢ ⇑(algebraMap R S) '' spectrum R a ⊆ spectrum S a

case refine_2
R✝ : Type u_1
A✝ : Type u_2
inst✝¹¹ : CommSemiring R✝
inst✝¹⁰ : NonUnitalRing A✝
inst✝⁹ : Module R✝ A✝
inst✝⁸ : IsScalarTower R✝ A✝ A✝
inst✝⁷ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁶ : Semifield R
inst✝⁵ : Semifield S
inst✝⁴ : Ring A
inst✝³ : Algebra R S
inst✝² : Algebra R A
inst✝¹ : Algebra S A
a : A
f : S → R
inst✝ : IsScalarTower R S A
h : SpectrumRestricts a f
s : S
hs : s ∈ spectrum S a
⊢ f s ∈ spectrum R a ∧ (algebraMap R S) (f s) = s
tactic: refine Set.eq_of_subset_of_subset ?_ fun s hs => ⟨f s, ?_⟩
state_before: case refine_2
R✝ : Type u_1
A✝ : Type u_2
inst✝¹¹ : CommSemiring R✝
inst✝¹⁰ : NonUnitalRing A✝
inst✝⁹ : Module R✝ A✝
inst✝⁸ : IsScalarTower R✝ A✝ A✝
inst✝⁷ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁶ : Semifield R
inst✝⁵ : Semifield S
inst✝⁴ : Ring A
inst✝³ : Algebra R S
inst✝² : Algebra R A
inst✝¹ : Algebra S A
a : A
f : S → R
inst✝ : IsScalarTower R S A
h : SpectrumRestricts a f
s : S
hs : s ∈ spectrum S a
⊢ f s ∈ spectrum R a ∧ (algebraMap R S) (f s) = s
state_after: no goals
tactic: exact ⟨spectrum.of_algebraMap_mem S ((h.rightInvOn hs).symm ▸ hs), h.rightInvOn hs⟩
Theorem: Set.unbounded_le_inter_lt
File: Mathlib/Order/Bounded.lean

Proof steps:
state_before: α : Type u_1
r : α → α → Prop
s t : Set α
inst✝ : LinearOrder α
a : α
⊢ Unbounded (fun x x_1 => x ≤ x_1) (s ∩ {b | a < b}) ↔ Unbounded (fun x x_1 => x ≤ x_1) s
state_after: case h.e'_1.h.e'_3.h.e'_4.h.e'_2.h.a
α : Type u_1
r : α → α → Prop
s t : Set α
inst✝ : LinearOrder α
a x✝ : α
⊢ a < x✝ ↔ ¬x✝ ≤ a
tactic: convert @unbounded_le_inter_not_le _ s _ a
state_before: case h.e'_1.h.e'_3.h.e'_4.h.e'_2.h.a
α : Type u_1
r : α → α → Prop
s t : Set α
inst✝ : LinearOrder α
a x✝ : α
⊢ a < x✝ ↔ ¬x✝ ≤ a
state_after: no goals
tactic: exact lt_iff_not_le
Theorem: Matrix.neg_dotProduct
File: Mathlib/Data/Matrix/Basic.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : Fintype m
inst✝¹ : Fintype n
inst✝ : NonUnitalNonAssocRing α
u v w : m → α
⊢ -v ⬝ᵥ w = -(v ⬝ᵥ w)
state_after: no goals
tactic: simp [dotProduct]
Theorem: AddCon.sub
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
w x y z : M
h1 : c w x
h2 : c y z
⊢ c (w / y) (x / z)
state_after: no goals
tactic: simpa only [div_eq_mul_inv] using c.mul h1 (c.inv h2)
Theorem: Set.sUnion_eq_iUnion
File: Mathlib/Data/Set/Lattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set (Set α)
⊢ ⋃₀ s = ⋃ i, ↑i
state_after: no goals
tactic: simp only [← sUnion_range, Subtype.range_coe]
Theorem: MeasureTheory.eLpNorm'_smul_measure
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ
hp : 0 ≤ p
f : α → F
c : ℝ≥0∞
⊢ eLpNorm' f p (c • μ) = c ^ (1 / p) * eLpNorm' f p μ
state_after: case hz
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ
hp : 0 ≤ p
f : α → F
c : ℝ≥0∞
⊢ 0 ≤ 1 / p
tactic: rw [eLpNorm', lintegral_smul_measure, ENNReal.mul_rpow_of_nonneg, eLpNorm']
state_before: case hz
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ
hp : 0 ≤ p
f : α → F
c : ℝ≥0∞
⊢ 0 ≤ 1 / p
state_after: no goals
tactic: simp [hp]
Theorem: Function.mulSupport_update_of_ne_one
File: Mathlib/Algebra/Group/Support.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
inst✝³ : One M
inst✝² : One N
inst✝¹ : One P
inst✝ : DecidableEq α
f : α → M
x : α
y : M
hy : y ≠ 1
⊢ mulSupport (update f x y) = insert x (mulSupport f)
state_after: case h
α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
inst✝³ : One M
inst✝² : One N
inst✝¹ : One P
inst✝ : DecidableEq α
f : α → M
x : α
y : M
hy : y ≠ 1
a : α
⊢ a ∈ mulSupport (update f x y) ↔ a ∈ insert x (mulSupport f)
tactic: ext a
state_before: case h
α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
inst✝³ : One M
inst✝² : One N
inst✝¹ : One P
inst✝ : DecidableEq α
f : α → M
x : α
y : M
hy : y ≠ 1
a : α
⊢ a ∈ mulSupport (update f x y) ↔ a ∈ insert x (mulSupport f)
state_after: no goals
tactic: rcases eq_or_ne a x with rfl | hne <;> simp [*]
Theorem: Set.exists_subset_add_sub
File: Mathlib/Combinatorics/Additive/RuzsaCovering.lean

Proof steps:
state_before: α : Type u_1
inst✝ : CommGroup α
s t : Set α
hs : s.Finite
ht' : t.Finite
ht : t.Nonempty
⊢ ∃ u, Nat.card ↑u * Nat.card ↑t ≤ Nat.card ↑(s * t) ∧ s ⊆ u * t / t ∧ u.Finite
state_after: case intro
α : Type u_1
inst✝ : CommGroup α
t : Set α
ht' : t.Finite
ht : t.Nonempty
s : Finset α
⊢ ∃ u, Nat.card ↑u * Nat.card ↑t ≤ Nat.card ↑(↑s * t) ∧ ↑s ⊆ u * t / t ∧ u.Finite
tactic: lift s to Finset α using hs
state_before: case intro
α : Type u_1
inst✝ : CommGroup α
t : Set α
ht' : t.Finite
ht : t.Nonempty
s : Finset α
⊢ ∃ u, Nat.card ↑u * Nat.card ↑t ≤ Nat.card ↑(↑s * t) ∧ ↑s ⊆ u * t / t ∧ u.Finite
state_after: case intro.intro
α : Type u_1
inst✝ : CommGroup α
s t : Finset α
ht : (↑t).Nonempty
⊢ ∃ u, Nat.card ↑u * Nat.card ↑↑t ≤ Nat.card ↑(↑s * ↑t) ∧ ↑s ⊆ u * ↑t / ↑t ∧ u.Finite
tactic: lift t to Finset α using ht'
state_before: case intro.intro
α : Type u_1
inst✝ : CommGroup α
s t : Finset α
ht : (↑t).Nonempty
⊢ ∃ u, Nat.card ↑u * Nat.card ↑↑t ≤ Nat.card ↑(↑s * ↑t) ∧ ↑s ⊆ u * ↑t / ↑t ∧ u.Finite
state_after: no goals
tactic: classical
  obtain ⟨u, hu, hsut⟩ := Finset.exists_subset_mul_div s ht
  refine ⟨u, ?_⟩
  -- `norm_cast` would find these automatically, but breaks `to_additive` when it does so
  rw [← Finset.coe_mul, ← Finset.coe_mul, ← Finset.coe_div]
  norm_cast
  simp [*]
Theorem: Monoid.exponent_ne_zero_iff_range_orderOf_finite
File: Mathlib/GroupTheory/Exponent.lean

Proof steps:
state_before: G : Type u
inst✝ : Monoid G
h : ∀ (g : G), 0 < orderOf g
⊢ exponent G ≠ 0 ↔ (Set.range orderOf).Finite
state_after: case refine_1
G : Type u
inst✝ : Monoid G
h : ∀ (g : G), 0 < orderOf g
he : exponent G ≠ 0
⊢ (Set.range orderOf).Finite

case refine_2
G : Type u
inst✝ : Monoid G
h : ∀ (g : G), 0 < orderOf g
he : (Set.range orderOf).Finite
⊢ exponent G ≠ 0
tactic: refine ⟨fun he => ?_, fun he => ?_⟩
Theorem: Mathlib.Vector.sum_set'
File: Mathlib/Data/Vector/Basic.lean

Proof steps:
state_before: n : ℕ
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : CommGroup α
v : Vector α n
i : Fin n
a : α
⊢ (v.set i a).toList.prod = v.toList.prod * (v.get i)⁻¹ * a
state_after: n : ℕ
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : CommGroup α
v : Vector α n
i : Fin n
a : α
⊢ (v.toList.prod * if hn : ↑i < v.toList.length then (v.toList.get ⟨↑i, hn⟩)⁻¹ * a else 1) =
    v.toList.prod * (v.get i)⁻¹ * a
tactic: refine (List.prod_set' v.toList i a).trans ?_
state_before: n : ℕ
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : CommGroup α
v : Vector α n
i : Fin n
a : α
⊢ (v.toList.prod * if hn : ↑i < v.toList.length then (v.toList.get ⟨↑i, hn⟩)⁻¹ * a else 1) =
    v.toList.prod * (v.get i)⁻¹ * a
state_after: no goals
tactic: simp [get_eq_get, mul_assoc]
Theorem: PMF.coe_le_one
File: Mathlib/Probability/ProbabilityMassFunction/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p : PMF α
a : α
⊢ p a ≤ 1
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
p : PMF α
a b : α
⊢ (if b = a then p a else 0) ≤ p b
tactic: refine hasSum_le (fun b => ?_) (hasSum_ite_eq a (p a)) (hasSum_coe_one p)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p : PMF α
a b : α
⊢ (if b = a then p a else 0) ≤ p b
state_after: no goals
tactic: split_ifs with h <;> simp only [h, zero_le', le_rfl]