-- Mathlib/MeasureTheory/Measure/Haar/Unique.lean
/-- **Uniqueness of left-invariant measures**:
Given two left-invariant measures which are finite on
compacts and inner regular for finite measure sets with respect to compact sets,
they coincide in the following sense: they give the same value to finite measure sets,
up to a multiplicative constant. -/
@[to_additive]
lemma measure_isMulLeftInvariant_eq_smul_of_ne_top [LocallyCompactSpace G]
    (μ' μ : Measure G) [IsHaarMeasure μ] [IsFiniteMeasureOnCompacts μ'] [IsMulLeftInvariant μ']
    [InnerRegularCompactLTTop μ] [InnerRegularCompactLTTop μ'] {s : Set G}
    (hs : μ s ≠ ∞) (h's : μ' s ≠ ∞) : μ' s = haarScalarFactor μ' μ • μ s

Proof state:
G : Type u_1
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : Group G
inst✝⁸ : IsTopologicalGroup G
inst✝⁷ : MeasurableSpace G
inst✝⁶ : BorelSpace G
inst✝⁵ : LocallyCompactSpace G
μ' μ : Measure G
inst✝⁴ : μ.IsHaarMeasure
inst✝³ : IsFiniteMeasureOnCompacts μ'
inst✝² : μ'.IsMulLeftInvariant
inst✝¹ : μ.InnerRegularCompactLTTop
inst✝ : μ'.InnerRegularCompactLTTop
s : Set G
hs : μ s ≠ ⊤
h's : μ' s ≠ ⊤
c : ℝ≥0 := μ'.haarScalarFactor μ
B : ∀ (s : Set G), MeasurableSet s → μ s < ⊤ → μ' s < ⊤ → μ' s = (c • μ) s
t : Set G := toMeasurable μ' s ∩ toMeasurable μ s
st : s ⊆ t
mu'_t : μ' t = μ' s
⊢ μ t = μ s

Tactic:
apply le_antisymm

Result:
case a
G : Type u_1
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : Group G
inst✝⁸ : IsTopologicalGroup G
inst✝⁷ : MeasurableSpace G
inst✝⁶ : BorelSpace G
inst✝⁵ : LocallyCompactSpace G
μ' μ : Measure G
inst✝⁴ : μ.IsHaarMeasure
inst✝³ : IsFiniteMeasureOnCompacts μ'
inst✝² : μ'.IsMulLeftInvariant
inst✝¹ : μ.InnerRegularCompactLTTop
inst✝ : μ'.InnerRegularCompactLTTop
s : Set G
hs : μ s ≠ ⊤
h's : μ' s ≠ ⊤
c : ℝ≥0 := μ'.haarScalarFactor μ
B : ∀ (s : Set G), MeasurableSet s → μ s < ⊤ → μ' s < ⊤ → μ' s = (c • μ) s
t : Set G := toMeasurable μ' s ∩ toMeasurable μ s
st : s ⊆ t
mu'_t : μ' t = μ' s
⊢ μ t ≤ μ s

case a
G : Type u_1
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : Group G
inst✝⁸ : IsTopologicalGroup G
inst✝⁷ : MeasurableSpace G
inst✝⁶ : BorelSpace G
inst✝⁵ : LocallyCompactSpace G
μ' μ : Measure G
inst✝⁴ : μ.IsHaarMeasure
inst✝³ : IsFiniteMeasureOnCompacts μ'
inst✝² : μ'.IsMulLeftInvariant
inst✝¹ : μ.InnerRegularCompactLTTop
inst✝ : μ'.InnerRegularCompactLTTop
s : Set G
hs : μ s ≠ ⊤
h's : μ' s ≠ ⊤
c : ℝ≥0 := μ'.haarScalarFactor μ
B : ∀ (s : Set G), MeasurableSet s → μ s < ⊤ → μ' s < ⊤ → μ' s = (c • μ) s
t : Set G := toMeasurable μ' s ∩ toMeasurable μ s
st : s ⊆ t
mu'_t : μ' t = μ' s
⊢ μ s ≤ μ t

Proof state:
G : Type u_1
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : Group G
inst✝⁸ : IsTopologicalGroup G
inst✝⁷ : MeasurableSpace G
inst✝⁶ : BorelSpace G
inst✝⁵ : LocallyCompactSpace G
μ' μ : Measure G
inst✝⁴ : μ.IsHaarMeasure
inst✝³ : IsFiniteMeasureOnCompacts μ'
inst✝² : μ'.IsMulLeftInvariant
inst✝¹ : μ.InnerRegularCompactLTTop
inst✝ : μ'.InnerRegularCompactLTTop
s : Set G
hs : μ s ≠ ⊤
h's : μ' s ≠ ⊤
c : ℝ≥0 := μ'.haarScalarFactor μ
⊢ μ' s = μ'.haarScalarFactor μ • μ s

Tactic:
have B : ∀ s, MeasurableSet s → μ s < ∞ → μ' s < ∞ → μ' s = (c • μ) s := by
  intro s s_meas hs h's
  have : (c • μ) s ≠ ∞ := by simp [ENNReal.mul_eq_top, hs.ne]
  rw [s_meas.measure_eq_iSup_isCompact_of_ne_top h's.ne,
      s_meas.measure_eq_iSup_isCompact_of_ne_top this]
  congr! 4 with K _Ks K_comp
  exact measure_isMulInvariant_eq_smul_of_isCompact_closure μ' μ K_comp.closure

Result:
G : Type u_1
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : Group G
inst✝⁸ : IsTopologicalGroup G
inst✝⁷ : MeasurableSpace G
inst✝⁶ : BorelSpace G
inst✝⁵ : LocallyCompactSpace G
μ' μ : Measure G
inst✝⁴ : μ.IsHaarMeasure
inst✝³ : IsFiniteMeasureOnCompacts μ'
inst✝² : μ'.IsMulLeftInvariant
inst✝¹ : μ.InnerRegularCompactLTTop
inst✝ : μ'.InnerRegularCompactLTTop
s : Set G
hs : μ s ≠ ⊤
h's : μ' s ≠ ⊤
c : ℝ≥0 := μ'.haarScalarFactor μ
B : ∀ (s : Set G), MeasurableSet s → μ s < ⊤ → μ' s < ⊤ → μ' s = (c • μ) s
⊢ μ' s = μ'.haarScalarFactor μ • μ s

Proof state:
G : Type u_1
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : Group G
inst✝⁸ : IsTopologicalGroup G
inst✝⁷ : MeasurableSpace G
inst✝⁶ : BorelSpace G
inst✝⁵ : LocallyCompactSpace G
μ' μ : Measure G
inst✝⁴ : μ.IsHaarMeasure
inst✝³ : IsFiniteMeasureOnCompacts μ'
inst✝² : μ'.IsMulLeftInvariant
inst✝¹ : μ.InnerRegularCompactLTTop
inst✝ : μ'.InnerRegularCompactLTTop
s : Set G
hs : μ s ≠ ⊤
h's : μ' s ≠ ⊤
c : ℝ≥0 := μ'.haarScalarFactor μ
⊢ ∀ (s : Set G), MeasurableSet s → μ s < ⊤ → μ' s < ⊤ → μ' s = (c • μ) s

Tactic:
intro s s_meas hs h's

Result:
G : Type u_1
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : Group G
inst✝⁸ : IsTopologicalGroup G
inst✝⁷ : MeasurableSpace G
inst✝⁶ : BorelSpace G
inst✝⁵ : LocallyCompactSpace G
μ' μ : Measure G
inst✝⁴ : μ.IsHaarMeasure
inst✝³ : IsFiniteMeasureOnCompacts μ'
inst✝² : μ'.IsMulLeftInvariant
inst✝¹ : μ.InnerRegularCompactLTTop
inst✝ : μ'.InnerRegularCompactLTTop
s✝ : Set G
hs✝ : μ s✝ ≠ ⊤
h's✝ : μ' s✝ ≠ ⊤
c : ℝ≥0 := μ'.haarScalarFactor μ
s : Set G
s_meas : MeasurableSet s
hs : μ s < ⊤
h's : μ' s < ⊤
⊢ μ' s = (c • μ) s

Proof state:
case a
G : Type u_1
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : Group G
inst✝⁸ : IsTopologicalGroup G
inst✝⁷ : MeasurableSpace G
inst✝⁶ : BorelSpace G
inst✝⁵ : LocallyCompactSpace G
μ' μ : Measure G
inst✝⁴ : μ.IsHaarMeasure
inst✝³ : IsFiniteMeasureOnCompacts μ'
inst✝² : μ'.IsMulLeftInvariant
inst✝¹ : μ.InnerRegularCompactLTTop
inst✝ : μ'.InnerRegularCompactLTTop
s : Set G
hs : μ s ≠ ⊤
h's : μ' s ≠ ⊤
c : ℝ≥0 := μ'.haarScalarFactor μ
B : ∀ (s : Set G), MeasurableSet s → μ s < ⊤ → μ' s < ⊤ → μ' s = (c • μ) s
t : Set G := toMeasurable μ' s ∩ toMeasurable μ s
st : s ⊆ t
⊢ μ' t ≤ μ' s

Tactic:
exact (measure_mono inter_subset_left).trans (measure_toMeasurable s).le

Result:
no goals

Proof state:
G : Type u_1
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : Group G
inst✝⁸ : IsTopologicalGroup G
inst✝⁷ : MeasurableSpace G
inst✝⁶ : BorelSpace G
inst✝⁵ : LocallyCompactSpace G
μ' μ : Measure G
inst✝⁴ : μ.IsHaarMeasure
inst✝³ : IsFiniteMeasureOnCompacts μ'
inst✝² : μ'.IsMulLeftInvariant
inst✝¹ : μ.InnerRegularCompactLTTop
inst✝ : μ'.InnerRegularCompactLTTop
s : Set G
hs : μ s ≠ ⊤
h's : μ' s ≠ ⊤
c : ℝ≥0 := μ'.haarScalarFactor μ
B : ∀ (s : Set G), MeasurableSet s → μ s < ⊤ → μ' s < ⊤ → μ' s = (c • μ) s
⊢ μ' s = μ'.haarScalarFactor μ • μ s

Tactic:
let t := toMeasurable μ' s ∩ toMeasurable μ s

Result:
G : Type u_1
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : Group G
inst✝⁸ : IsTopologicalGroup G
inst✝⁷ : MeasurableSpace G
inst✝⁶ : BorelSpace G
inst✝⁵ : LocallyCompactSpace G
μ' μ : Measure G
inst✝⁴ : μ.IsHaarMeasure
inst✝³ : IsFiniteMeasureOnCompacts μ'
inst✝² : μ'.IsMulLeftInvariant
inst✝¹ : μ.InnerRegularCompactLTTop
inst✝ : μ'.InnerRegularCompactLTTop
s : Set G
hs : μ s ≠ ⊤
h's : μ' s ≠ ⊤
c : ℝ≥0 := μ'.haarScalarFactor μ
B : ∀ (s : Set G), MeasurableSet s → μ s < ⊤ → μ' s < ⊤ → μ' s = (c • μ) s
t : Set G := toMeasurable μ' s ∩ toMeasurable μ s
⊢ μ' s = μ'.haarScalarFactor μ • μ s