ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: NumberField.Units.norm
File: Mathlib/NumberTheory/NumberField/Units/Basic.lean

Proof steps:
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
x : (𝓞 K)ˣ
⊢ |(Algebra.norm ℚ) ((algebraMap (𝓞 K) K) ↑x)| = 1
state_after: no goals
tactic: rw [← RingOfIntegers.coe_norm, isUnit_iff_norm.mp x.isUnit]
Theorem: ContinuousLinearEquiv.arrowCongrSL_symm_apply
File: Mathlib/Topology/Algebra/Module/StrongTopology.lean

Proof steps:
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
𝕜₄ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
H : Type u_8
inst✝³¹ : AddCommGroup E
inst✝³⁰ : AddCommGroup F
inst✝²⁹ : AddCommGroup G
inst✝²⁸ : AddCommGroup H
inst✝²⁷ : NontriviallyNormedField 𝕜
inst✝²⁶ : NontriviallyNormedField 𝕜₂
inst✝²⁵ : NontriviallyNormedField 𝕜₃
inst✝²⁴ : NontriviallyNormedField 𝕜₄
inst✝²³ : Module 𝕜 E
inst✝²² : Module 𝕜₂ F
inst✝²¹ : Module 𝕜₃ G
inst✝²⁰ : Module 𝕜₄ H
inst✝¹⁹ : TopologicalSpace E
inst✝¹⁸ : TopologicalSpace F
inst✝¹⁷ : TopologicalSpace G
inst✝¹⁶ : TopologicalSpace H
inst✝¹⁵ : TopologicalAddGroup G
inst✝¹⁴ : TopologicalAddGroup H
inst✝¹³ : ContinuousConstSMul 𝕜₃ G
inst✝¹² : ContinuousConstSMul 𝕜₄ H
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₁ : 𝕜₂ →+* 𝕜
σ₂₃ : 𝕜₂ →+* 𝕜₃
σ₁₃ : 𝕜 →+* 𝕜₃
σ₃₄ : 𝕜₃ →+* 𝕜₄
σ₄₃ : 𝕜₄ →+* 𝕜₃
σ₂₄ : 𝕜₂ →+* 𝕜₄
σ₁₄ : 𝕜 →+* 𝕜₄
inst✝¹¹ : RingHomInvPair σ₁₂ σ₂₁
inst✝¹⁰ : RingHomInvPair σ₂₁ σ₁₂
inst✝⁹ : RingHomInvPair σ₃₄ σ₄₃
inst✝⁸ : RingHomInvPair σ₄₃ σ₃₄
inst✝⁷ : RingHomCompTriple σ₂₁ σ₁₄ σ₂₄
inst✝⁶ : RingHomCompTriple σ₂₄ σ₄₃ σ₂₃
inst✝⁵ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝⁴ : RingHomCompTriple σ₁₃ σ₃₄ σ₁₄
inst✝³ : RingHomCompTriple σ₂₃ σ₃₄ σ₂₄
inst✝² : RingHomCompTriple σ₁₂ σ₂₄ σ₁₄
inst✝¹ : RingHomIsometric σ₁₂
inst✝ : RingHomIsometric σ₂₁
e₁₂ : E ≃SL[σ₁₂] F
e₄₃ : H ≃SL[σ₄₃] G
f g : E →SL[σ₁₄] H
⊢ (fun L => (↑e₄₃).comp (L.comp ↑e₁₂.symm)) (f + g) =
    (fun L => (↑e₄₃).comp (L.comp ↑e₁₂.symm)) f + (fun L => (↑e₄₃).comp (L.comp ↑e₁₂.symm)) g
state_after: no goals
tactic: simp only [add_comp, comp_add]
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
𝕜₄ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
H : Type u_8
inst✝³¹ : AddCommGroup E
inst✝³⁰ : AddCommGroup F
inst✝²⁹ : AddCommGroup G
inst✝²⁸ : AddCommGroup H
inst✝²⁷ : NontriviallyNormedField 𝕜
inst✝²⁶ : NontriviallyNormedField 𝕜₂
inst✝²⁵ : NontriviallyNormedField 𝕜₃
inst✝²⁴ : NontriviallyNormedField 𝕜₄
inst✝²³ : Module 𝕜 E
inst✝²² : Module 𝕜₂ F
inst✝²¹ : Module 𝕜₃ G
inst✝²⁰ : Module 𝕜₄ H
inst✝¹⁹ : TopologicalSpace E
inst✝¹⁸ : TopologicalSpace F
inst✝¹⁷ : TopologicalSpace G
inst✝¹⁶ : TopologicalSpace H
inst✝¹⁵ : TopologicalAddGroup G
inst✝¹⁴ : TopologicalAddGroup H
inst✝¹³ : ContinuousConstSMul 𝕜₃ G
inst✝¹² : ContinuousConstSMul 𝕜₄ H
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₁ : 𝕜₂ →+* 𝕜
σ₂₃ : 𝕜₂ →+* 𝕜₃
σ₁₃ : 𝕜 →+* 𝕜₃
σ₃₄ : 𝕜₃ →+* 𝕜₄
σ₄₃ : 𝕜₄ →+* 𝕜₃
σ₂₄ : 𝕜₂ →+* 𝕜₄
σ₁₄ : 𝕜 →+* 𝕜₄
inst✝¹¹ : RingHomInvPair σ₁₂ σ₂₁
inst✝¹⁰ : RingHomInvPair σ₂₁ σ₁₂
inst✝⁹ : RingHomInvPair σ₃₄ σ₄₃
inst✝⁸ : RingHomInvPair σ₄₃ σ₃₄
inst✝⁷ : RingHomCompTriple σ₂₁ σ₁₄ σ₂₄
inst✝⁶ : RingHomCompTriple σ₂₄ σ₄₃ σ₂₃
inst✝⁵ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝⁴ : RingHomCompTriple σ₁₃ σ₃₄ σ₁₄
inst✝³ : RingHomCompTriple σ₂₃ σ₃₄ σ₂₄
inst✝² : RingHomCompTriple σ₁₂ σ₂₄ σ₁₄
inst✝¹ : RingHomIsometric σ₁₂
inst✝ : RingHomIsometric σ₂₁
e₁₂ : E ≃SL[σ₁₂] F
e₄₃ : H ≃SL[σ₄₃] G
t : 𝕜₄
f : E →SL[σ₁₄] H
⊢ { toFun := fun L => (↑e₄₃).comp (L.comp ↑e₁₂.symm), map_add' := ⋯ }.toFun (t • f) =
    σ₄₃ t • { toFun := fun L => (↑e₄₃).comp (L.comp ↑e₁₂.symm), map_add' := ⋯ }.toFun f
state_after: no goals
tactic: simp only [smul_comp, comp_smulₛₗ]
Theorem: Set.pairwise_disjoint_Ioo_zsmul
File: Mathlib/Algebra/Order/Interval/Set/Group.lean

Proof steps:
state_before: α : Type u_1
inst✝ : OrderedCommGroup α
a b : α
⊢ Pairwise (Disjoint on fun n => Ioo (b ^ n) (b ^ (n + 1)))
state_after: no goals
tactic: simpa only [one_mul] using pairwise_disjoint_Ioo_mul_zpow 1 b
Theorem: iUnion_Ioc_add_intCast
File: Mathlib/Algebra/Order/ToIntervalMod.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : LinearOrderedRing α
inst✝ : Archimedean α
a : α
⊢ ⋃ n, Ioc (a + ↑n) (a + ↑n + 1) = univ
state_after: no goals
tactic: simpa only [zsmul_one, Int.cast_add, Int.cast_one, ← add_assoc] using
    iUnion_Ioc_add_zsmul zero_lt_one a
Theorem: MeasureTheory.withDensity_inv_same_le
File: Mathlib/MeasureTheory/Measure/WithDensity.lean

Proof steps:
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
⊢ (μ.withDensity f).withDensity f⁻¹ ≤ μ
state_after: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
⊢ ((μ.withDensity f).withDensity fun x => (f x)⁻¹) ≤ μ
tactic: change (μ.withDensity f).withDensity (fun x ↦ (f x)⁻¹) ≤ μ
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
⊢ ((μ.withDensity f).withDensity fun x => (f x)⁻¹) ≤ μ
state_after: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
⊢ μ.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 μ
⊢ μ.withDensity (f * fun x => (f x)⁻¹) ≤ μ
state_after: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
⊢ (f * fun x => (f x)⁻¹) ≤ᶠ[ae μ] 1
tactic: suffices (f * fun x ↦ (f x)⁻¹) ≤ᵐ[μ] 1 by
    refine (withDensity_mono this).trans ?_
    rw [withDensity_one]
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
⊢ (f * fun x => (f x)⁻¹) ≤ᶠ[ae μ] 1
state_after: case h
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
x : α
⊢ (f * fun x => (f x)⁻¹) x ≤ 1 x
tactic: filter_upwards with x
state_before: case h
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable 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 μ
x : α
⊢ f x * (f x)⁻¹ ≤ 1
tactic: simp only [Pi.mul_apply, Pi.one_apply]
state_before: case h
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
x : α
⊢ f x * (f x)⁻¹ ≤ 1
state_after: case pos
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
x : α
hx_top : f x = ⊤
⊢ f x * (f x)⁻¹ ≤ 1

case neg
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
x : α
hx_top : ¬f x = ⊤
⊢ f x * (f x)⁻¹ ≤ 1
tactic: by_cases hx_top : f x = ∞
state_before: case neg
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
x : α
hx_top : ¬f x = ⊤
⊢ f x * (f x)⁻¹ ≤ 1
state_after: case pos
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
x : α
hx_top : ¬f x = ⊤
hx_zero : f x = 0
⊢ f x * (f x)⁻¹ ≤ 1

case neg
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
x : α
hx_top : ¬f x = ⊤
hx_zero : ¬f x = 0
⊢ f x * (f x)⁻¹ ≤ 1
tactic: by_cases hx_zero : f x = 0
state_before: case neg
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
x : α
hx_top : ¬f x = ⊤
hx_zero : ¬f x = 0
⊢ f x * (f x)⁻¹ ≤ 1
state_after: no goals
tactic: rw [ENNReal.mul_inv_cancel hx_zero hx_top]
Theorem: Ordinal.toPGame_add
File: Mathlib/SetTheory/Game/Ordinal.lean

Proof steps:
state_before: a b : Ordinal.{u}
⊢ a.toPGame + b.toPGame ≈ (a ♯ b).toPGame
state_after: case refine_1
a b : Ordinal.{u}
i : (a.toPGame + b.toPGame).LeftMoves
⊢ (a.toPGame + b.toPGame).moveLeft i ⧏ (a ♯ b).toPGame

case refine_2
a b : Ordinal.{u}
i : (a ♯ b).toPGame.LeftMoves
⊢ (a ♯ b).toPGame.moveLeft i ⧏ a.toPGame + b.toPGame
tactic: refine ⟨le_of_forall_lf (fun i => ?_) isEmptyElim, le_of_forall_lf (fun i => ?_) isEmptyElim⟩
Theorem: Nat.smoothNumbersUpTo_card_add_roughNumbersUpTo_card
File: Mathlib/NumberTheory/SmoothNumbers.lean

Proof steps:
state_before: N k : ℕ
⊢ (N.smoothNumbersUpTo k).card + (N.roughNumbersUpTo k).card = N
state_after: N k : ℕ
⊢ (Finset.filter (fun x => x ∈ k.smoothNumbers ∨ x ≠ 0 ∧ x ∉ k.smoothNumbers) (Finset.range N.succ)).card = N
tactic: rw [smoothNumbersUpTo, roughNumbersUpTo,
    ← Finset.card_union_of_disjoint <| Finset.disjoint_filter.mpr fun n _ hn₂ h ↦ h.2 hn₂,
    Finset.filter_union_right]
state_before: N k : ℕ
⊢ (Finset.filter (fun x => x ∈ k.smoothNumbers ∨ x ≠ 0 ∧ x ∉ k.smoothNumbers) (Finset.range N.succ)).card = N
state_after: N k : ℕ
⊢ (Finset.filter (fun x => x ≠ 0) (Finset.range N.succ)).card = N
tactic: suffices Finset.card (Finset.filter (fun x ↦ x ≠ 0) (Finset.range (succ N))) = N by
    have hn' (n) : n ∈ smoothNumbers k ∨ n ≠ 0 ∧ n ∉ smoothNumbers k ↔ n ≠ 0 := by
      have : n ∈ smoothNumbers k → n ≠ 0 := ne_zero_of_mem_smoothNumbers
      refine ⟨fun H ↦ Or.elim H this fun H ↦ H.1, fun H ↦ ?_⟩
      simp only [ne_eq, H, not_false_eq_true, true_and, or_not]
    rwa [Finset.filter_congr (s := Finset.range (succ N)) fun n _ ↦ hn' n]
state_before: N k : ℕ
⊢ (Finset.filter (fun x => x ≠ 0) (Finset.range N.succ)).card = N
state_after: N k : ℕ
⊢ (Finset.range N.succ).card - 1 = N
tactic: rw [Finset.filter_ne', Finset.card_erase_of_mem <| Finset.mem_range_succ_iff.mpr <| zero_le N]
state_before: N k : ℕ
⊢ (Finset.range N.succ).card - 1 = N
state_after: no goals
tactic: simp only [Finset.card_range, succ_sub_succ_eq_sub, tsub_zero]
Theorem: MeasureTheory.DominatedFinMeasAdditive.eq_zero
File: Mathlib/MeasureTheory/Integral/SetToL1.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
F' : Type u_4
G : Type u_5
𝕜 : Type u_6
p : ℝ≥0∞
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
inst✝² : NormedAddCommGroup G
m✝ : MeasurableSpace α
μ : Measure α
β✝ : Type u_7
inst✝¹ : SeminormedAddCommGroup β✝
T✝ T' : Set α → β✝
C✝ C' : ℝ
β : Type u_8
inst✝ : NormedAddCommGroup β
T : Set α → β
C : ℝ
m : MeasurableSpace α
hT : DominatedFinMeasAdditive 0 T C
s : Set α
hs : MeasurableSet s
⊢ 0 s = 0
state_after: no goals
tactic: simp only [Measure.coe_zero, Pi.zero_apply]
Theorem: extChartAt_source_mem_nhds'
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁵ : NormedAddCommGroup E'
inst✝⁴ : NormedSpace 𝕜 E'
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
inst✝¹ : ChartedSpace H M
inst✝ : ChartedSpace H' M'
x x' : M
h : x' ∈ (extChartAt I x).source
⊢ x' ∈ (chartAt H x).source
state_after: no goals
tactic: rwa [← extChartAt_source I]
Theorem: closure_of_rat_image_lt
File: Mathlib/Topology/Instances/Real.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
q p : ℚ
h : q < p
⊢ p ∈ Rat.cast ⁻¹' Ici ↑q
state_after: no goals
tactic: simpa using h.le
state_before: α : Type u
β : Type v
γ : Type w
q : ℚ
x : ℝ
hx : x ∈ {r | ↑q ≤ r}
t : Set ℝ
ht : t ∈ 𝓝 x
ε : ℝ
ε0 : ε > 0
hε : ball x ε ⊆ t
p : ℚ
h₁ : x < ↑p
h₂ : ↑p < x + ε
⊢ ↑p ∈ ball x ε
state_after: no goals
tactic: rwa [mem_ball, Real.dist_eq, abs_of_pos (sub_pos.2 h₁), sub_lt_iff_lt_add']
Theorem: MeasureTheory.extend_iUnion_le_tsum_nat'
File: Mathlib/MeasureTheory/OuterMeasure/Induced.lean

Proof steps:
state_before: α : Type u_1
P : Set α → Prop
m : (s : Set α) → P s → ℝ≥0∞
P0 : P ∅
m0 : m ∅ P0 = 0
PU : ∀ ⦃f : ℕ → Set α⦄, (∀ (i : ℕ), P (f i)) → P (⋃ i, f i)
mU : ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)), Pairwise (Disjoint on f) → m (⋃ i, f i) ⋯ = ∑' (i : ℕ), m (f i) ⋯
msU : ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)), m (⋃ i, f i) ⋯ ≤ ∑' (i : ℕ), m (f i) ⋯
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : ℕ → Set α
⊢ extend m (⋃ i, s i) ≤ ∑' (i : ℕ), extend m (s i)
state_after: case pos
α : Type u_1
P : Set α → Prop
m : (s : Set α) → P s → ℝ≥0∞
P0 : P ∅
m0 : m ∅ P0 = 0
PU : ∀ ⦃f : ℕ → Set α⦄, (∀ (i : ℕ), P (f i)) → P (⋃ i, f i)
mU : ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)), Pairwise (Disjoint on f) → m (⋃ i, f i) ⋯ = ∑' (i : ℕ), m (f i) ⋯
msU : ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)), m (⋃ i, f i) ⋯ ≤ ∑' (i : ℕ), m (f i) ⋯
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : ℕ → Set α
h : ∀ (i : ℕ), P (s i)
⊢ extend m (⋃ i, s i) ≤ ∑' (i : ℕ), extend m (s i)

case neg
α : Type u_1
P : Set α → Prop
m : (s : Set α) → P s → ℝ≥0∞
P0 : P ∅
m0 : m ∅ P0 = 0
PU : ∀ ⦃f : ℕ → Set α⦄, (∀ (i : ℕ), P (f i)) → P (⋃ i, f i)
mU : ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)), Pairwise (Disjoint on f) → m (⋃ i, f i) ⋯ = ∑' (i : ℕ), m (f i) ⋯
msU : ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)), m (⋃ i, f i) ⋯ ≤ ∑' (i : ℕ), m (f i) ⋯
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : ℕ → Set α
h : ¬∀ (i : ℕ), P (s i)
⊢ extend m (⋃ i, s i) ≤ ∑' (i : ℕ), extend m (s i)
tactic: by_cases h : ∀ i, P (s i)
Theorem: Memℓp.const_mul
File: Mathlib/Analysis/Normed/Lp/lpSpace.lean

Proof steps:
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝³ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type u_3
inst✝² : NormedRing 𝕜
inst✝¹ : (i : α) → Module 𝕜 (E i)
inst✝ : ∀ (i : α), BoundedSMul 𝕜 (E i)
f : α → 𝕜
hf : Memℓp f p
c : 𝕜
i : α
⊢ BoundedSMul 𝕜 ((fun x => 𝕜) i)
state_after: no goals
tactic: infer_instance
Theorem: BoxIntegral.Box.injective_coe
File: Mathlib/Analysis/BoxIntegral/Box/Basic.lean

Proof steps:
state_before: ι : Type u_1
I J : Box ι
x y : ι → ℝ
⊢ Injective toSet
state_after: case mk.mk
ι : Type u_1
I J : Box ι
x y l₁ u₁ : ι → ℝ
h₁ : ∀ (i : ι), l₁ i < u₁ i
l₂ u₂ : ι → ℝ
h₂ : ∀ (i : ι), l₂ i < u₂ i
h : ↑{ lower := l₁, upper := u₁, lower_lt_upper := h₁ } = ↑{ lower := l₂, upper := u₂, lower_lt_upper := h₂ }
⊢ { lower := l₁, upper := u₁, lower_lt_upper := h₁ } = { lower := l₂, upper := u₂, lower_lt_upper := h₂ }
tactic: rintro ⟨l₁, u₁, h₁⟩ ⟨l₂, u₂, h₂⟩ h
state_before: case mk.mk
ι : Type u_1
I J : Box ι
x y l₁ u₁ : ι → ℝ
h₁ : ∀ (i : ι), l₁ i < u₁ i
l₂ u₂ : ι → ℝ
h₂ : ∀ (i : ι), l₂ i < u₂ i
h : ↑{ lower := l₁, upper := u₁, lower_lt_upper := h₁ } = ↑{ lower := l₂, upper := u₂, lower_lt_upper := h₂ }
⊢ { lower := l₁, upper := u₁, lower_lt_upper := h₁ } = { lower := l₂, upper := u₂, lower_lt_upper := h₂ }
state_after: case mk.mk
ι : Type u_1
I J : Box ι
x y l₁ u₁ : ι → ℝ
h₁ : ∀ (i : ι), l₁ i < u₁ i
l₂ u₂ : ι → ℝ
h₂ : ∀ (i : ι), l₂ i < u₂ i
h : (l₂ ≤ l₁ ∧ u₁ ≤ u₂) ∧ l₁ ≤ l₂ ∧ u₂ ≤ u₁
⊢ { lower := l₁, upper := u₁, lower_lt_upper := h₁ } = { lower := l₂, upper := u₂, lower_lt_upper := h₂ }
tactic: simp only [Subset.antisymm_iff, coe_subset_coe, le_iff_bounds] at h
state_before: case mk.mk
ι : Type u_1
I J : Box ι
x y l₁ u₁ : ι → ℝ
h₁ : ∀ (i : ι), l₁ i < u₁ i
l₂ u₂ : ι → ℝ
h₂ : ∀ (i : ι), l₂ i < u₂ i
h : (l₂ ≤ l₁ ∧ u₁ ≤ u₂) ∧ l₁ ≤ l₂ ∧ u₂ ≤ u₁
⊢ { lower := l₁, upper := u₁, lower_lt_upper := h₁ } = { lower := l₂, upper := u₂, lower_lt_upper := h₂ }
state_after: case mk.mk.e_lower
ι : Type u_1
I J : Box ι
x y l₁ u₁ : ι → ℝ
h₁ : ∀ (i : ι), l₁ i < u₁ i
l₂ u₂ : ι → ℝ
h₂ : ∀ (i : ι), l₂ i < u₂ i
h : (l₂ ≤ l₁ ∧ u₁ ≤ u₂) ∧ l₁ ≤ l₂ ∧ u₂ ≤ u₁
⊢ l₁ = l₂

case mk.mk.e_upper
ι : Type u_1
I J : Box ι
x y l₁ u₁ : ι → ℝ
h₁ : ∀ (i : ι), l₁ i < u₁ i
l₂ u₂ : ι → ℝ
h₂ : ∀ (i : ι), l₂ i < u₂ i
h : (l₂ ≤ l₁ ∧ u₁ ≤ u₂) ∧ l₁ ≤ l₂ ∧ u₂ ≤ u₁
⊢ u₁ = u₂
tactic: congr
state_before: case mk.mk.e_lower
ι : Type u_1
I J : Box ι
x y l₁ u₁ : ι → ℝ
h₁ : ∀ (i : ι), l₁ i < u₁ i
l₂ u₂ : ι → ℝ
h₂ : ∀ (i : ι), l₂ i < u₂ i
h : (l₂ ≤ l₁ ∧ u₁ ≤ u₂) ∧ l₁ ≤ l₂ ∧ u₂ ≤ u₁
⊢ l₁ = l₂

case mk.mk.e_upper
ι : Type u_1
I J : Box ι
x y l₁ u₁ : ι → ℝ
h₁ : ∀ (i : ι), l₁ i < u₁ i
l₂ u₂ : ι → ℝ
h₂ : ∀ (i : ι), l₂ i < u₂ i
h : (l₂ ≤ l₁ ∧ u₁ ≤ u₂) ∧ l₁ ≤ l₂ ∧ u₂ ≤ u₁
⊢ u₁ = u₂
state_after: no goals
tactic: exacts [le_antisymm h.2.1 h.1.1, le_antisymm h.1.2 h.2.2]
Theorem: CategoryTheory.Subobject.ofMkLEMk_comp_ofMkLE
File: Mathlib/CategoryTheory/Subobject/Basic.lean

Proof steps:
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
X✝ Y Z : C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
B A₁ A₂ : C
f : A₁ ⟶ B
inst✝¹ : Mono f
g : A₂ ⟶ B
inst✝ : Mono g
X : Subobject B
h₁ : mk f ≤ mk g
h₂ : mk g ≤ X
⊢ ofMkLEMk f g h₁ ≫ ofMkLE g X h₂ = ofMkLE f X ⋯
state_after: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
X✝ Y Z : C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
B A₁ A₂ : C
f : A₁ ⟶ B
inst✝¹ : Mono f
g : A₂ ⟶ B
inst✝ : Mono g
X : Subobject B
h₁ : mk f ≤ mk g
h₂ : mk g ≤ X
⊢ (underlyingIso f).inv ≫ underlying.map (h₁.hom ≫ h₂.hom) = (underlyingIso f).inv ≫ underlying.map ⋯.hom
tactic: simp only [ofMkLE, ofLEMk, ofLE, ofMkLEMk, ← Functor.map_comp underlying,
    assoc, Iso.hom_inv_id_assoc]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
X✝ Y Z : C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
B A₁ A₂ : C
f : A₁ ⟶ B
inst✝¹ : Mono f
g : A₂ ⟶ B
inst✝ : Mono g
X : Subobject B
h₁ : mk f ≤ mk g
h₂ : mk g ≤ X
⊢ (underlyingIso f).inv ≫ underlying.map (h₁.hom ≫ h₂.hom) = (underlyingIso f).inv ≫ underlying.map ⋯.hom
state_after: no goals
tactic: congr 1
Theorem: MeasureTheory.hitting_le
File: Mathlib/Probability/Process/HittingTime.lean

Proof steps:
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m✝ : MeasurableSpace Ω
inst✝ : ConditionallyCompleteLinearOrder ι
u : ι → Ω → β
s : Set β
n i : ι
ω✝ : Ω
m : ι
ω : Ω
⊢ hitting u s n m ω ≤ m
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m✝ : MeasurableSpace Ω
inst✝ : ConditionallyCompleteLinearOrder ι
u : ι → Ω → β
s : Set β
n i : ι
ω✝ : Ω
m : ι
ω : Ω
⊢ (if ∃ j ∈ Set.Icc n m, u j ω ∈ s then sInf (Set.Icc n m ∩ {i | u i ω ∈ s}) else m) ≤ m
tactic: simp only [hitting]
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m✝ : MeasurableSpace Ω
inst✝ : ConditionallyCompleteLinearOrder ι
u : ι → Ω → β
s : Set β
n i : ι
ω✝ : Ω
m : ι
ω : Ω
⊢ (if ∃ j ∈ Set.Icc n m, u j ω ∈ s then sInf (Set.Icc n m ∩ {i | u i ω ∈ s}) else m) ≤ m
state_after: case pos
Ω : Type u_1
β : Type u_2
ι : Type u_3
m✝ : MeasurableSpace Ω
inst✝ : ConditionallyCompleteLinearOrder ι
u : ι → Ω → β
s : Set β
n i : ι
ω✝ : Ω
m : ι
ω : Ω
h : ∃ j ∈ Set.Icc n m, u j ω ∈ s
⊢ sInf (Set.Icc n m ∩ {i | u i ω ∈ s}) ≤ m

case neg
Ω : Type u_1
β : Type u_2
ι : Type u_3
m✝ : MeasurableSpace Ω
inst✝ : ConditionallyCompleteLinearOrder ι
u : ι → Ω → β
s : Set β
n i : ι
ω✝ : Ω
m : ι
ω : Ω
h : ¬∃ j ∈ Set.Icc n m, u j ω ∈ s
⊢ m ≤ m
tactic: split_ifs with h
Theorem: Filter.Eventually.ratCast_atTop
File: Mathlib/Order/Filter/Archimedean.lean

Proof steps:
state_before: α : Type u_1
R : Type u_2
inst✝¹ : LinearOrderedField R
inst✝ : Archimedean R
p : R → Prop
h : ∀ᶠ (x : R) in atTop, p x
⊢ ∀ᶠ (n : ℚ) in atTop, p ↑n
state_after: α : Type u_1
R : Type u_2
inst✝¹ : LinearOrderedField R
inst✝ : Archimedean R
p : R → Prop
h : ∀ᶠ (x : R) in atTop, p x
⊢ ∀ᶠ (n : ℚ) in Filter.comap Rat.cast atTop, p ↑n
tactic: rw [← Rat.comap_cast_atTop (R := R)]
state_before: α : Type u_1
R : Type u_2
inst✝¹ : LinearOrderedField R
inst✝ : Archimedean R
p : R → Prop
h : ∀ᶠ (x : R) in atTop, p x
⊢ ∀ᶠ (n : ℚ) in Filter.comap Rat.cast atTop, p ↑n
state_after: no goals
tactic: exact h.comap _
Theorem: IsFundamentalDomain.QuotientMeasureEqMeasurePreimage_HaarMeasure
File: Mathlib/MeasureTheory/Measure/Haar/Quotient.lean

Proof steps:
state_before: G : Type u_1
inst✝¹⁴ : Group G
inst✝¹³ : MeasurableSpace G
inst✝¹² : TopologicalSpace G
inst✝¹¹ : TopologicalGroup G
inst✝¹⁰ : BorelSpace G
inst✝⁹ : PolishSpace G
Γ : Subgroup G
inst✝⁸ : Countable ↥Γ
inst✝⁷ : Γ.Normal
inst✝⁶ : T2Space (G ⧸ Γ)
inst✝⁵ : SecondCountableTopology (G ⧸ Γ)
μ : Measure (G ⧸ Γ)
ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : ν.IsHaarMeasure
inst✝² : ν.IsMulRightInvariant
𝓕 : Set G
h𝓕 : IsFundamentalDomain (↥Γ.op) 𝓕 ν
inst✝¹ : μ.IsMulLeftInvariant
inst✝ : SigmaFinite μ
V : Set (G ⧸ Γ)
hV : (interior V).Nonempty
meas_V : MeasurableSet V
hμK : μ V = ν (QuotientGroup.mk ⁻¹' V ∩ 𝓕)
neTopV : μ V ≠ ⊤
⊢ QuotientMeasureEqMeasurePreimage ν μ
state_after: case neZeroV
G : Type u_1
inst✝¹⁴ : Group G
inst✝¹³ : MeasurableSpace G
inst✝¹² : TopologicalSpace G
inst✝¹¹ : TopologicalGroup G
inst✝¹⁰ : BorelSpace G
inst✝⁹ : PolishSpace G
Γ : Subgroup G
inst✝⁸ : Countable ↥Γ
inst✝⁷ : Γ.Normal
inst✝⁶ : T2Space (G ⧸ Γ)
inst✝⁵ : SecondCountableTopology (G ⧸ Γ)
μ : Measure (G ⧸ Γ)
ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : ν.IsHaarMeasure
inst✝² : ν.IsMulRightInvariant
𝓕 : Set G
h𝓕 : IsFundamentalDomain (↥Γ.op) 𝓕 ν
inst✝¹ : μ.IsMulLeftInvariant
inst✝ : SigmaFinite μ
V : Set (G ⧸ Γ)
hV : (interior V).Nonempty
meas_V : MeasurableSet V
hμK : μ V = ν (QuotientGroup.mk ⁻¹' V ∩ 𝓕)
neTopV : μ V ≠ ⊤
⊢ μ V ≠ 0

case hV
G : Type u_1
inst✝¹⁴ : Group G
inst✝¹³ : MeasurableSpace G
inst✝¹² : TopologicalSpace G
inst✝¹¹ : TopologicalGroup G
inst✝¹⁰ : BorelSpace G
inst✝⁹ : PolishSpace G
Γ : Subgroup G
inst✝⁸ : Countable ↥Γ
inst✝⁷ : Γ.Normal
inst✝⁶ : T2Space (G ⧸ Γ)
inst✝⁵ : SecondCountableTopology (G ⧸ Γ)
μ : Measure (G ⧸ Γ)
ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : ν.IsHaarMeasure
inst✝² : ν.IsMulRightInvariant
𝓕 : Set G
h𝓕 : IsFundamentalDomain (↥Γ.op) 𝓕 ν
inst✝¹ : μ.IsMulLeftInvariant
inst✝ : SigmaFinite μ
V : Set (G ⧸ Γ)
hV : (interior V).Nonempty
meas_V : MeasurableSet V
hμK : μ V = ν (QuotientGroup.mk ⁻¹' V ∩ 𝓕)
neTopV : μ V ≠ ⊤
⊢ μ V = ν (QuotientGroup.mk ⁻¹' V ∩ 𝓕)

case neTopV
G : Type u_1
inst✝¹⁴ : Group G
inst✝¹³ : MeasurableSpace G
inst✝¹² : TopologicalSpace G
inst✝¹¹ : TopologicalGroup G
inst✝¹⁰ : BorelSpace G
inst✝⁹ : PolishSpace G
Γ : Subgroup G
inst✝⁸ : Countable ↥Γ
inst✝⁷ : Γ.Normal
inst✝⁶ : T2Space (G ⧸ Γ)
inst✝⁵ : SecondCountableTopology (G ⧸ Γ)
μ : Measure (G ⧸ Γ)
ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : ν.IsHaarMeasure
inst✝² : ν.IsMulRightInvariant
𝓕 : Set G
h𝓕 : IsFundamentalDomain (↥Γ.op) 𝓕 ν
inst✝¹ : μ.IsMulLeftInvariant
inst✝ : SigmaFinite μ
V : Set (G ⧸ Γ)
hV : (interior V).Nonempty
meas_V : MeasurableSet V
hμK : μ V = ν (QuotientGroup.mk ⁻¹' V ∩ 𝓕)
neTopV : μ V ≠ ⊤
⊢ μ V ≠ ⊤
tactic: apply IsMulLeftInvariant.quotientMeasureEqMeasurePreimage_of_set (fund_dom_s := h𝓕)
    (meas_V := meas_V)