ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Multiset.map_lt_map
File: Mathlib/Data/Multiset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
f : α → β
s t : Multiset α
h : s < t
⊢ map f s < map f t
state_after: α : Type u_1
β : Type v
γ : Type u_2
f : α → β
s t : Multiset α
h : s < t
H : map f t ≤ map f s
⊢ card t ≤ card s
tactic: refine (map_le_map h.le).lt_of_not_le fun H => h.ne <| eq_of_le_of_card_le h.le ?_
state_before: α : Type u_1
β : Type v
γ : Type u_2
f : α → β
s t : Multiset α
h : s < t
H : map f t ≤ map f s
⊢ card t ≤ card s
state_after: α : Type u_1
β : Type v
γ : Type u_2
f : α → β
s t : Multiset α
h : s < t
H : map f t ≤ map f s
⊢ card (map f t) ≤ card (map f s)
tactic: rw [← s.card_map f, ← t.card_map f]
state_before: α : Type u_1
β : Type v
γ : Type u_2
f : α → β
s t : Multiset α
h : s < t
H : map f t ≤ map f s
⊢ card (map f t) ≤ card (map f s)
state_after: no goals
tactic: exact card_le_card H
Theorem: MeasureTheory.setIntegral_prod
File: Mathlib/MeasureTheory/Constructions/Prod/Integral.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 ν
inst✝³ : NormedSpace ℝ E
inst✝² : SFinite μ
E' : Type u_7
inst✝¹ : NormedAddCommGroup E'
inst✝ : NormedSpace ℝ E'
f : α × β → E
s : Set α
t : Set β
hf : IntegrableOn f (s ×ˢ t) (μ.prod ν)
⊢ ∫ (z : α × β) in s ×ˢ t, f z ∂μ.prod ν = ∫ (x : α) in s, ∫ (y : β) in t, f (x, y) ∂ν ∂μ
state_after: α : 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 ν
inst✝³ : NormedSpace ℝ E
inst✝² : SFinite μ
E' : Type u_7
inst✝¹ : NormedAddCommGroup E'
inst✝ : NormedSpace ℝ E'
f : α × β → E
s : Set α
t : Set β
hf : Integrable f ((μ.restrict s).prod (ν.restrict t))
⊢ ∫ (z : α × β), f z ∂(μ.restrict s).prod (ν.restrict t) = ∫ (x : α) in s, ∫ (y : β) in t, f (x, y) ∂ν ∂μ
tactic: simp only [← Measure.prod_restrict s t, IntegrableOn] at hf ⊢
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 ν
inst✝³ : NormedSpace ℝ E
inst✝² : SFinite μ
E' : Type u_7
inst✝¹ : NormedAddCommGroup E'
inst✝ : NormedSpace ℝ E'
f : α × β → E
s : Set α
t : Set β
hf : Integrable f ((μ.restrict s).prod (ν.restrict t))
⊢ ∫ (z : α × β), f z ∂(μ.restrict s).prod (ν.restrict t) = ∫ (x : α) in s, ∫ (y : β) in t, f (x, y) ∂ν ∂μ
state_after: no goals
tactic: exact integral_prod f hf
Theorem: mul_eq_right₀
File: Mathlib/Algebra/GroupWithZero/Basic.lean

Proof steps:
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : CancelMonoidWithZero M₀
a b c : M₀
hb : b ≠ 0
⊢ a * b = b ↔ a = 1
state_after: no goals
tactic: rw [Iff.comm, ← mul_left_inj' hb, one_mul]
Theorem: IsAntichain.interior_eq_empty
File: Mathlib/Topology/Order/LeftRight.lean

Proof steps:
state_before: α : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : ∀ (x : α), (𝓝[<] x).NeBot
s : Set α
hs : IsAntichain (fun x x_1 => x ≤ x_1) s
⊢ interior s = ∅
state_after: α : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : ∀ (x : α), (𝓝[<] x).NeBot
s : Set α
hs : IsAntichain (fun x x_1 => x ≤ x_1) s
x : α
hx : x ∈ interior s
⊢ False
tactic: refine eq_empty_of_forall_not_mem fun x hx ↦ ?_
state_before: α : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : ∀ (x : α), (𝓝[<] x).NeBot
s : Set α
hs : IsAntichain (fun x x_1 => x ≤ x_1) s
x : α
hx : x ∈ interior s
⊢ False
state_after: α : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : ∀ (x : α), (𝓝[<] x).NeBot
s : Set α
hs : IsAntichain (fun x x_1 => x ≤ x_1) s
x : α
hx : x ∈ interior s
this : ∀ᶠ (y : α) in 𝓝 x, y ∈ s
⊢ False
tactic: have : ∀ᶠ y in 𝓝 x, y ∈ s := mem_interior_iff_mem_nhds.1 hx
state_before: α : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : ∀ (x : α), (𝓝[<] x).NeBot
s : Set α
hs : IsAntichain (fun x x_1 => x ≤ x_1) s
x : α
hx : x ∈ interior s
this : ∀ᶠ (y : α) in 𝓝 x, y ∈ s
⊢ False
state_after: case intro.intro
α : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : ∀ (x : α), (𝓝[<] x).NeBot
s : Set α
hs : IsAntichain (fun x x_1 => x ≤ x_1) s
x : α
hx : x ∈ interior s
this : ∀ᶠ (y : α) in 𝓝 x, y ∈ s
y : α
hyx : y < x
hys : y ∈ s
⊢ False
tactic: rcases this.exists_lt with ⟨y, hyx, hys⟩
state_before: case intro.intro
α : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : ∀ (x : α), (𝓝[<] x).NeBot
s : Set α
hs : IsAntichain (fun x x_1 => x ≤ x_1) s
x : α
hx : x ∈ interior s
this : ∀ᶠ (y : α) in 𝓝 x, y ∈ s
y : α
hyx : y < x
hys : y ∈ s
⊢ False
state_after: no goals
tactic: exact hs hys (interior_subset hx) hyx.ne hyx.le
Theorem: Finset.centroid_map
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

Proof steps:
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
e : ι₂ ↪ ι
p : ι → P
⊢ centroid k (map e s₂) p = centroid k s₂ (p ∘ ⇑e)
state_after: no goals
tactic: simp [centroid_def, affineCombination_map, centroidWeights]
Theorem: Finset.sum_comp
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq γ
f : γ → β
g : α → γ
⊢ ∏ a ∈ s, f (g a) = ∏ b ∈ image g s, f b ^ (filter (fun a => g a = b) s).card
state_after: no goals
tactic: simp_rw [← prod_const, prod_fiberwise_of_maps_to' fun _ ↦ mem_image_of_mem _]
Theorem: IsCompact.exists_infEdist_eq_edist
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t : Set α
Φ : α → β
hs : IsCompact s
hne : s.Nonempty
x : α
⊢ ∃ y ∈ s, infEdist x s = edist x y
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t : Set α
Φ : α → β
hs : IsCompact s
hne : s.Nonempty
x : α
A : Continuous fun y => edist x y
⊢ ∃ y ∈ s, infEdist x s = edist x y
tactic: have A : Continuous fun y => edist x y := continuous_const.edist continuous_id
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t : Set α
Φ : α → β
hs : IsCompact s
hne : s.Nonempty
x : α
A : Continuous fun y => edist x y
⊢ ∃ y ∈ s, infEdist x s = edist x y
state_after: case intro.intro
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y✝ : α
s t : Set α
Φ : α → β
hs : IsCompact s
hne : s.Nonempty
x : α
A : Continuous fun y => edist x y
y : α
ys : y ∈ s
hy : IsMinOn (fun y => edist x y) s y
⊢ ∃ y ∈ s, infEdist x s = edist x y
tactic: obtain ⟨y, ys, hy⟩ := hs.exists_isMinOn hne A.continuousOn
state_before: case intro.intro
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y✝ : α
s t : Set α
Φ : α → β
hs : IsCompact s
hne : s.Nonempty
x : α
A : Continuous fun y => edist x y
y : α
ys : y ∈ s
hy : IsMinOn (fun y => edist x y) s y
⊢ ∃ y ∈ s, infEdist x s = edist x y
state_after: no goals
tactic: exact ⟨y, ys, le_antisymm (infEdist_le_edist_of_mem ys) (by rwa [le_infEdist])⟩
Theorem: CoxeterSystem.getD_leftInvSeq_mul_self
File: Mathlib/GroupTheory/Coxeter/Inversion.lean

Proof steps:
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
ω : List B
j : ℕ
⊢ (cs.leftInvSeq ω).getD j 1 * (cs.leftInvSeq ω).getD j 1 = 1
state_after: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
ω : List B
j : ℕ
⊢ cs.wordProd (take j ω) *
      ((Option.map cs.simple (ω.get? j)).getD 1 *
        ((cs.wordProd (take j ω))⁻¹ *
          (cs.wordProd (take j ω) * ((Option.map cs.simple (ω.get? j)).getD 1 * (cs.wordProd (take j ω))⁻¹)))) =
    1
tactic: simp_rw [getD_leftInvSeq, mul_assoc]
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
ω : List B
j : ℕ
⊢ cs.wordProd (take j ω) *
      ((Option.map cs.simple (ω.get? j)).getD 1 *
        ((cs.wordProd (take j ω))⁻¹ *
          (cs.wordProd (take j ω) * ((Option.map cs.simple (ω.get? j)).getD 1 * (cs.wordProd (take j ω))⁻¹)))) =
    1
state_after: case inl
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
ω : List B
j : ℕ
hj : j < ω.length
⊢ cs.wordProd (take j ω) *
      ((Option.map cs.simple (ω.get? j)).getD 1 *
        ((cs.wordProd (take j ω))⁻¹ *
          (cs.wordProd (take j ω) * ((Option.map cs.simple (ω.get? j)).getD 1 * (cs.wordProd (take j ω))⁻¹)))) =
    1

case inr
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
ω : List B
j : ℕ
nhj : ¬j < ω.length
⊢ cs.wordProd (take j ω) *
      ((Option.map cs.simple (ω.get? j)).getD 1 *
        ((cs.wordProd (take j ω))⁻¹ *
          (cs.wordProd (take j ω) * ((Option.map cs.simple (ω.get? j)).getD 1 * (cs.wordProd (take j ω))⁻¹)))) =
    1
tactic: rcases em (j < ω.length) with hj | nhj
Theorem: Derivation.leibniz_div_const
File: Mathlib/RingTheory/Derivation/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝⁸ : CommRing R
A : Type u_2
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module A M
inst✝³ : Module R M
D✝ D1 D2 : Derivation R A M
r : R
a✝ b✝ : A
K : Type u_4
inst✝² : Field K
inst✝¹ : Module K M
inst✝ : Algebra R K
D : Derivation R K M
a b : K
h : D b = 0
⊢ D (a / b) = b⁻¹ • D a
state_after: R : Type u_1
inst✝⁸ : CommRing R
A : Type u_2
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module A M
inst✝³ : Module R M
D✝ D1 D2 : Derivation R A M
r : R
a✝ b✝ : A
K : Type u_4
inst✝² : Field K
inst✝¹ : Module K M
inst✝ : Algebra R K
D : Derivation R K M
a b : K
h : D b = 0
⊢ ((b ^ 2)⁻¹ * b) • D a = b⁻¹ • D a
tactic: simp only [leibniz_div, inv_pow, h, smul_zero, sub_zero, smul_smul]
state_before: R : Type u_1
inst✝⁸ : CommRing R
A : Type u_2
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module A M
inst✝³ : Module R M
D✝ D1 D2 : Derivation R A M
r : R
a✝ b✝ : A
K : Type u_4
inst✝² : Field K
inst✝¹ : Module K M
inst✝ : Algebra R K
D : Derivation R K M
a b : K
h : D b = 0
⊢ ((b ^ 2)⁻¹ * b) • D a = b⁻¹ • D a
state_after: R : Type u_1
inst✝⁸ : CommRing R
A : Type u_2
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module A M
inst✝³ : Module R M
D✝ D1 D2 : Derivation R A M
r : R
a✝ b✝ : A
K : Type u_4
inst✝² : Field K
inst✝¹ : Module K M
inst✝ : Algebra R K
D : Derivation R K M
a b : K
h : D b = 0
⊢ ((b ^ 2)⁻¹ * b) • D a = (b⁻¹ * b⁻¹ * b) • D a
tactic: rw [← mul_self_mul_inv b⁻¹, inv_inv]
state_before: R : Type u_1
inst✝⁸ : CommRing R
A : Type u_2
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module A M
inst✝³ : Module R M
D✝ D1 D2 : Derivation R A M
r : R
a✝ b✝ : A
K : Type u_4
inst✝² : Field K
inst✝¹ : Module K M
inst✝ : Algebra R K
D : Derivation R K M
a b : K
h : D b = 0
⊢ ((b ^ 2)⁻¹ * b) • D a = (b⁻¹ * b⁻¹ * b) • D a
state_after: no goals
tactic: ring_nf
Theorem: MeasureTheory.IsStoppingTime.measurableSpace_le'
File: Mathlib/Probability/Process/Stopping.lean

Proof steps:
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝² : Preorder ι
f : Filtration ι m
τ π : Ω → ι
inst✝¹ : atTop.IsCountablyGenerated
inst✝ : atTop.NeBot
hτ : IsStoppingTime f τ
⊢ hτ.measurableSpace ≤ m
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝² : Preorder ι
f : Filtration ι m
τ π : Ω → ι
inst✝¹ : atTop.IsCountablyGenerated
inst✝ : atTop.NeBot
hτ : IsStoppingTime f τ
s : Set Ω
hs : MeasurableSet s
⊢ MeasurableSet s
tactic: intro s hs
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝² : Preorder ι
f : Filtration ι m
τ π : Ω → ι
inst✝¹ : atTop.IsCountablyGenerated
inst✝ : atTop.NeBot
hτ : IsStoppingTime f τ
s : Set Ω
hs : MeasurableSet s
⊢ MeasurableSet s
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝² : Preorder ι
f : Filtration ι m
τ π : Ω → ι
inst✝¹ : atTop.IsCountablyGenerated
inst✝ : atTop.NeBot
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
⊢ MeasurableSet s
tactic: change ∀ i, MeasurableSet[f i] (s ∩ {ω | τ ω ≤ i}) at hs
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝² : Preorder ι
f : Filtration ι m
τ π : Ω → ι
inst✝¹ : atTop.IsCountablyGenerated
inst✝ : atTop.NeBot
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
⊢ MeasurableSet s
state_after: case intro
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝² : Preorder ι
f : Filtration ι m
τ π : Ω → ι
inst✝¹ : atTop.IsCountablyGenerated
inst✝ : atTop.NeBot
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
seq : ℕ → ι
h_seq_tendsto : Tendsto seq atTop atTop
⊢ MeasurableSet s
tactic: obtain ⟨seq : ℕ → ι, h_seq_tendsto⟩ := (atTop : Filter ι).exists_seq_tendsto
state_before: case intro
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝² : Preorder ι
f : Filtration ι m
τ π : Ω → ι
inst✝¹ : atTop.IsCountablyGenerated
inst✝ : atTop.NeBot
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
seq : ℕ → ι
h_seq_tendsto : Tendsto seq atTop atTop
⊢ MeasurableSet s
state_after: case intro
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝² : Preorder ι
f : Filtration ι m
τ π : Ω → ι
inst✝¹ : atTop.IsCountablyGenerated
inst✝ : atTop.NeBot
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
seq : ℕ → ι
h_seq_tendsto : Tendsto seq atTop atTop
⊢ MeasurableSet (⋃ n, s ∩ {ω | τ ω ≤ seq n})

Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝² : Preorder ι
f : Filtration ι m
τ π : Ω → ι
inst✝¹ : atTop.IsCountablyGenerated
inst✝ : atTop.NeBot
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
seq : ℕ → ι
h_seq_tendsto : Tendsto seq atTop atTop
⊢ s = ⋃ n, s ∩ {ω | τ ω ≤ seq n}
tactic: rw [(_ : s = ⋃ n, s ∩ {ω | τ ω ≤ seq n})]
Theorem: RatFunc.laurent_X
File: Mathlib/FieldTheory/Laurent.lean

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
⊢ (laurent r) X = X + C r
state_after: no goals
tactic: rw [← algebraMap_X, laurent_algebraMap, taylor_X, _root_.map_add, algebraMap_C]
Theorem: PrimeMultiset.prod_ofPNatList
File: Mathlib/Data/PNat/Factors.lean

Proof steps:
state_before: l : List ℕ+
h : ∀ p ∈ l, p.Prime
⊢ (ofPNatList l h).prod = l.prod
state_after: l : List ℕ+
h : ∀ p ∈ l, p.Prime
this : (ofPNatMultiset (↑l) h).prod = (↑l).prod
⊢ (ofPNatList l h).prod = l.prod
tactic: have := prod_ofPNatMultiset (l : Multiset ℕ+) h
state_before: l : List ℕ+
h : ∀ p ∈ l, p.Prime
this : (ofPNatMultiset (↑l) h).prod = (↑l).prod
⊢ (ofPNatList l h).prod = l.prod
state_after: l : List ℕ+
h : ∀ p ∈ l, p.Prime
this : (ofPNatMultiset (↑l) h).prod = l.prod
⊢ (ofPNatList l h).prod = l.prod
tactic: rw [Multiset.prod_coe] at this
state_before: l : List ℕ+
h : ∀ p ∈ l, p.Prime
this : (ofPNatMultiset (↑l) h).prod = l.prod
⊢ (ofPNatList l h).prod = l.prod
state_after: no goals
tactic: exact this
Theorem: Finset.iSup_option_toFinset
File: Mathlib/Data/Finset/Lattice.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : CompleteLattice β
o : Option α
f : α → β
⊢ ⨆ x ∈ o.toFinset, f x = ⨆ x ∈ o, f x
state_after: no goals
tactic: simp
Theorem: MeasureTheory.OuterMeasure.sup_apply
File: Mathlib/MeasureTheory/OuterMeasure/Operations.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m m₁ m₂ : OuterMeasure α
s : Set α
⊢ (m₁ ⊔ m₂) s = m₁ s ⊔ m₂ s
state_after: α : Type u_1
β : Type u_2
m m₁ m₂ : OuterMeasure α
s : Set α
this : (⨆ i, bif i then m₁ else m₂) s = ⨆ i, (bif i then m₁ else m₂) s
⊢ (m₁ ⊔ m₂) s = m₁ s ⊔ m₂ s
tactic: have := iSup_apply (fun b => cond b m₁ m₂) s
state_before: α : Type u_1
β : Type u_2
m m₁ m₂ : OuterMeasure α
s : Set α
this : (⨆ i, bif i then m₁ else m₂) s = ⨆ i, (bif i then m₁ else m₂) s
⊢ (m₁ ⊔ m₂) s = m₁ s ⊔ m₂ s
state_after: no goals
tactic: rwa [iSup_bool_eq, iSup_bool_eq] at this
Theorem: Nat.le_of_mul_le_mul_right
File: Mathlib/Data/Nat/Defs.lean

Proof steps:
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
h : a * c ≤ b * c
hc : 0 < c
⊢ c * a ≤ c * b
state_after: no goals
tactic: simpa [Nat.mul_comm]
Theorem: IsPrime.to_maximal_ideal
File: Mathlib/RingTheory/PrincipalIdealDomain.lean

Proof steps:
state_before: R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : IsPrincipalIdealRing R
S : Ideal R
hpi : S.IsPrime
hS : S ≠ ⊥
⊢ ∀ (J : Ideal R) (x : R), S ≤ J → x ∉ S → x ∈ J → 1 ∈ J
state_after: R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : IsPrincipalIdealRing R
S : Ideal R
hpi : S.IsPrime
hS : S ≠ ⊥
T : Ideal R
x : R
hST : S ≤ T
hxS : x ∉ S
hxT : x ∈ T
⊢ 1 ∈ T
tactic: intro T x hST hxS hxT
state_before: R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : IsPrincipalIdealRing R
S : Ideal R
hpi : S.IsPrime
hS : S ≠ ⊥
T : Ideal R
x : R
hST : S ≤ T
hxS : x ∉ S
hxT : x ∈ T
⊢ 1 ∈ T
state_after: case intro
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : IsPrincipalIdealRing R
S : Ideal R
hpi : S.IsPrime
hS : S ≠ ⊥
T : Ideal R
x : R
hST : S ≤ T
hxS : x ∉ S
hxT : x ∈ T
z : R
hz : generator S = generator T * z
⊢ 1 ∈ T
tactic: cases' (mem_iff_generator_dvd _).1 (hST <| generator_mem S) with z hz
state_before: case intro
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : IsPrincipalIdealRing R
S : Ideal R
hpi : S.IsPrime
hS : S ≠ ⊥
T : Ideal R
x : R
hST : S ≤ T
hxS : x ∉ S
hxT : x ∈ T
z : R
hz : generator S = generator T * z
⊢ 1 ∈ T
state_after: no goals
tactic: cases hpi.mem_or_mem (show generator T * z ∈ S from hz ▸ generator_mem S) with
      | inl h =>
        have hTS : T ≤ S := by
          rwa [← T.span_singleton_generator, Ideal.span_le, singleton_subset_iff]
        exact (hxS <| hTS hxT).elim
      | inr h =>
        cases' (mem_iff_generator_dvd _).1 h with y hy
        have : generator S ≠ 0 := mt (eq_bot_iff_generator_eq_zero _).2 hS
        rw [← mul_one (generator S), hy, mul_left_comm, mul_right_inj' this] at hz
        exact hz.symm ▸ T.mul_mem_right _ (generator_mem T)
Theorem: Submonoid.mem_closure_singleton
File: Mathlib/Algebra/Group/Submonoid/Membership.lean

Proof steps:
state_before: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : Monoid M
a x y : M
⊢ y ∈ closure {x} ↔ ∃ n, x ^ n = y
state_after: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : Monoid M
a x y : M
⊢ (∃ x_1, ((powersHom M) x) x_1 = y) ↔ ∃ n, x ^ n = y
tactic: rw [closure_singleton_eq, mem_mrange]
state_before: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : Monoid M
a x y : M
⊢ (∃ x_1, ((powersHom M) x) x_1 = y) ↔ ∃ n, x ^ n = y
state_after: no goals
tactic: rfl
Theorem: Complex.arg_of_im_nonneg_of_ne_zero
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

Proof steps:
state_before: a x z✝ z : ℂ
h₁ : 0 ≤ z.im
h₂ : z ≠ 0
⊢ z.arg = Real.arccos (z.re / abs z)
state_after: no goals
tactic: rw [← cos_arg h₂, Real.arccos_cos (arg_nonneg_iff.2 h₁) (arg_le_pi _)]
Theorem: Equiv.tsum_eq_tsum_of_support
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₂ : α
f : β → α
g : γ → α
e : ↑(mulSupport f) ≃ ↑(mulSupport g)
he : ∀ (x : ↑(mulSupport f)), g ↑(e x) = f ↑x
⊢ mulSupport g ⊆ Set.range (Subtype.val ∘ ⇑e)
state_after: no goals
tactic: simp
Theorem: Ordinal.log_pos
File: Mathlib/SetTheory/Ordinal/Exponential.lean

Proof steps:
state_before: b o : Ordinal.{u_1}
hb : 1 < b
ho : o ≠ 0
hbo : b ≤ o
⊢ 0 < log b o
state_after: no goals
tactic: rwa [← succ_le_iff, succ_zero, ← opow_le_iff_le_log hb ho, opow_one]
Theorem: ciSup_sub
File: Mathlib/Algebra/Bounds.lean

Proof steps:
state_before: ι : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : ConditionallyCompleteLattice G
inst✝¹ : CovariantClass G G (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : Nonempty ι
f : ι → G
hf : BddAbove (range f)
a : G
⊢ (⨆ i, f i) / a = ⨆ i, f i / a
state_after: no goals
tactic: simp only [div_eq_mul_inv, ciSup_mul hf]
Theorem: IsUpperSet.sub_right
File: Mathlib/Algebra/Order/UpperLower.lean

Proof steps:
state_before: α : Type u_1
inst✝ : OrderedCommGroup α
s t : Set α
a : α
hs : IsUpperSet s
⊢ IsUpperSet (s / t)
state_after: α : Type u_1
inst✝ : OrderedCommGroup α
s t : Set α
a : α
hs : IsUpperSet s
⊢ IsUpperSet (s * t⁻¹)
tactic: rw [div_eq_mul_inv]
state_before: α : Type u_1
inst✝ : OrderedCommGroup α
s t : Set α
a : α
hs : IsUpperSet s
⊢ IsUpperSet (s * t⁻¹)
state_after: no goals
tactic: exact hs.mul_right
Theorem: Quiver.Hom.eq_cast_iff_heq
File: Mathlib/Combinatorics/Quiver/Cast.lean

Proof steps:
state_before: U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
e : u ⟶ v
e' : u' ⟶ v'
⊢ e' = cast hu hv e ↔ HEq e' e
state_after: U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
e : u ⟶ v
e' : u' ⟶ v'
⊢ HEq e e' ↔ HEq e' e
tactic: rw [eq_comm, Hom.cast_eq_iff_heq]
state_before: U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
e : u ⟶ v
e' : u' ⟶ v'
⊢ HEq e e' ↔ HEq e' e
state_after: no goals
tactic: exact ⟨HEq.symm, HEq.symm⟩
Theorem: LindelofSpace.of_continuous_surjective
File: Mathlib/Topology/Compactness/Lindelof.lean

Proof steps:
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t : Set X
f : X → Y
inst✝ : LindelofSpace X
hf : Continuous f
hsur : Function.Surjective f
⊢ IsLindelof univ
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t : Set X
f : X → Y
inst✝ : LindelofSpace X
hf : Continuous f
hsur : Function.Surjective f
⊢ IsLindelof (f '' univ)
tactic: rw [← Set.image_univ_of_surjective hsur]
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t : Set X
f : X → Y
inst✝ : LindelofSpace X
hf : Continuous f
hsur : Function.Surjective f
⊢ IsLindelof (f '' univ)
state_after: no goals
tactic: exact IsLindelof.image (isLindelof_univ_iff.mpr ‹_›) hf
Theorem: dimH_def
File: Mathlib/Topology/MetricSpace/HausdorffDimension.lean

Proof steps:
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
s : Set X
⊢ dimH s = ⨆ d, ⨆ (_ : μH[↑d] s = ⊤), ↑d
state_after: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
s : Set X
inst✝ : BorelSpace X
this✝ : MeasurableSpace X := borel X
⊢ dimH s = ⨆ d, ⨆ (_ : μH[↑d] s = ⊤), ↑d
tactic: borelize X
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
s : Set X
inst✝ : BorelSpace X
this✝ : MeasurableSpace X := borel X
⊢ dimH s = ⨆ d, ⨆ (_ : μH[↑d] s = ⊤), ↑d
state_after: no goals
tactic: rw [dimH]
Theorem: Nat.coprime_add_mul_right_right
File: Mathlib/Data/Nat/GCD/Basic.lean

Proof steps:
state_before: m n k : ℕ
⊢ m.Coprime (n + k * m) ↔ m.Coprime n
state_after: no goals
tactic: rw [Coprime, Coprime, gcd_add_mul_right_right]