Theorem: Real.volume_eq_stieltjes_id
File: Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean

tactic: haveI : IsAddLeftInvariant StieltjesFunction.id.measure :=
  ⟨fun a =>
    Eq.symm <|
      Real.measure_ext_Ioo_rat fun p q => by
        simp only [Measure.map_apply (measurable_const_add a) measurableSet_Ioo,
          sub_sub_sub_cancel_right, StieltjesFunction.measure_Ioo, StieltjesFunction.id_leftLim,
          StieltjesFunction.id_apply, id, preimage_const_add_Ioo]⟩
state_before: ι : Type u_1
inst✝ : Fintype ι
⊢ volume = StieltjesFunction.id.measure
state_after: ι : Type u_1
inst✝ : Fintype ι
this : StieltjesFunction.id.measure.IsAddLeftInvariant
⊢ volume = StieltjesFunction.id.measure

tactic: have A : StieltjesFunction.id.measure (stdOrthonormalBasis ℝ ℝ).toBasis.parallelepiped = 1 := by
  change StieltjesFunction.id.measure (parallelepiped (stdOrthonormalBasis ℝ ℝ)) = 1
  rcases parallelepiped_orthonormalBasis_one_dim (stdOrthonormalBasis ℝ ℝ) with (H | H) <;>
    simp only [H, StieltjesFunction.measure_Icc, StieltjesFunction.id_apply, id, tsub_zero,
      StieltjesFunction.id_leftLim, sub_neg_eq_add, zero_add, ENNReal.ofReal_one]
state_before: ι : Type u_1
inst✝ : Fintype ι
this : StieltjesFunction.id.measure.IsAddLeftInvariant
⊢ volume = StieltjesFunction.id.measure
state_after: ι : Type u_1
inst✝ : Fintype ι
this : StieltjesFunction.id.measure.IsAddLeftInvariant
A : StieltjesFunction.id.measure ↑(stdOrthonormalBasis ℝ ℝ).toBasis.parallelepiped = 1
⊢ volume = StieltjesFunction.id.measure

tactic: conv_rhs =>
  rw [addHaarMeasure_unique StieltjesFunction.id.measure
      (stdOrthonormalBasis ℝ ℝ).toBasis.parallelepiped, A]
state_before: ι : Type u_1
inst✝ : Fintype ι
this : StieltjesFunction.id.measure.IsAddLeftInvariant
A : StieltjesFunction.id.measure ↑(stdOrthonormalBasis ℝ ℝ).toBasis.parallelepiped = 1
⊢ volume = StieltjesFunction.id.measure
state_after: ι : Type u_1
inst✝ : Fintype ι
this : StieltjesFunction.id.measure.IsAddLeftInvariant
A : StieltjesFunction.id.measure ↑(stdOrthonormalBasis ℝ ℝ).toBasis.parallelepiped = 1
⊢ volume = 1 • addHaarMeasure (stdOrthonormalBasis ℝ ℝ).toBasis.parallelepiped

tactic: simp only [volume, Basis.addHaar, one_smul]
state_before: ι : Type u_1
inst✝ : Fintype ι
this : StieltjesFunction.id.measure.IsAddLeftInvariant
A : StieltjesFunction.id.measure ↑(stdOrthonormalBasis ℝ ℝ).toBasis.parallelepiped = 1
⊢ volume = 1 • addHaarMeasure (stdOrthonormalBasis ℝ ℝ).toBasis.parallelepiped
state_after: no goals

tactic: simp only [Measure.map_apply (measurable_const_add a) measurableSet_Ioo,
  sub_sub_sub_cancel_right, StieltjesFunction.measure_Ioo, StieltjesFunction.id_leftLim,
  StieltjesFunction.id_apply, id, preimage_const_add_Ioo]
state_before: ι : Type u_1
inst✝ : Fintype ι
a : ℝ
p q : ℚ
⊢ StieltjesFunction.id.measure (Ioo ↑p ↑q) = (Measure.map (fun x => a + x) StieltjesFunction.id.measure) (Ioo ↑p ↑q)
state_after: no goals

tactic: change StieltjesFunction.id.measure (parallelepiped (stdOrthonormalBasis ℝ ℝ)) = 1
state_before: ι : Type u_1
inst✝ : Fintype ι
this : StieltjesFunction.id.measure.IsAddLeftInvariant
⊢ StieltjesFunction.id.measure ↑(stdOrthonormalBasis ℝ ℝ).toBasis.parallelepiped = 1
state_after: ι : Type u_1
inst✝ : Fintype ι
this : StieltjesFunction.id.measure.IsAddLeftInvariant
⊢ StieltjesFunction.id.measure (parallelepiped ⇑(stdOrthonormalBasis ℝ ℝ)) = 1

tactic: rcases parallelepiped_orthonormalBasis_one_dim (stdOrthonormalBasis ℝ ℝ) with (H | H) <;>
  simp only [H, StieltjesFunction.measure_Icc, StieltjesFunction.id_apply, id, tsub_zero,
    StieltjesFunction.id_leftLim, sub_neg_eq_add, zero_add, ENNReal.ofReal_one]
state_before: ι : Type u_1
inst✝ : Fintype ι
this : StieltjesFunction.id.measure.IsAddLeftInvariant
⊢ StieltjesFunction.id.measure (parallelepiped ⇑(stdOrthonormalBasis ℝ ℝ)) = 1
state_after: no goals