Theorem: MeasureTheory.Measure.add_haar_submodule
File: Mathlib/MeasureTheory/Measure/Lebesgue/EqHaar.lean

tactic: obtain ⟨x, hx⟩ : ∃ x, x ∉ s := by
  simpa only [Submodule.eq_top_iff', not_exists, Ne.def, not_forall] using hs
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
⊢ ↑↑μ ↑s = 0

tactic: obtain ⟨c, cpos, cone⟩ : ∃ c : ℝ, 0 < c ∧ c < 1 := ⟨1 / 2, by norm_num, by norm_num⟩
state_before: case intro
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
⊢ ↑↑μ ↑s = 0

tactic: have A : Bounded (range fun n : ℕ => c ^ n • x) :=
  haveI : Tendsto (fun n : ℕ => c ^ n • x) atTop (𝓝 ((0 : ℝ) • x)) :=
    (tendsto_pow_atTop_nhds_0_of_lt_1 cpos.le cone).smul_const x
  bounded_range_of_tendsto _ this
state_before: case intro.intro.intro
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
⊢ ↑↑μ ↑s = 0

tactic: apply add_haar_eq_zero_of_disjoint_translates μ _ A _
  (Submodule.closed_of_finiteDimensional s).measurableSet
state_before: case intro.intro.intro
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A : Metric.Bounded (range fun n => c ^ n • x)
⊢ ↑↑μ ↑s = 0

tactic: intro m n hmn
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A : Metric.Bounded (range fun n => c ^ n • x)
⊢ Pairwise (Disjoint on fun n => {c ^ n • x} + ↑s)

tactic: simp only [Function.onFun, image_add_left, singleton_add, disjoint_left, mem_preimage,
  SetLike.mem_coe]
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
⊢ (Disjoint on fun n => {c ^ n • x} + ↑s) m n

tactic: intro y hym hyn
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
⊢ ∀ ⦃a : E⦄, -(c ^ m • x) + a ∈ s → ¬-(c ^ n • x) + a ∈ s

tactic: have A : (c ^ n - c ^ m) • x ∈ s := by
  convert s.sub_mem hym hyn using 1
  simp only [sub_smul, neg_sub_neg, add_sub_add_right_eq_sub]
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
⊢ False

tactic: have H : c ^ n - c ^ m ≠ 0 := by
  simpa only [sub_eq_zero, Ne.def] using (strictAnti_pow cpos cone).injective.ne hmn.symm
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A✝ : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
A : (c ^ n - c ^ m) • x ∈ s
⊢ False

tactic: have : x ∈ s := by
  convert s.smul_mem (c ^ n - c ^ m)⁻¹ A
  rw [smul_smul, inv_mul_cancel H, one_smul]
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A✝ : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
A : (c ^ n - c ^ m) • x ∈ s
H : c ^ n - c ^ m ≠ 0
⊢ False

tactic: exact hx this
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A✝ : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
A : (c ^ n - c ^ m) • x ∈ s
H : c ^ n - c ^ m ≠ 0
this : x ∈ s
⊢ False

tactic: simpa only [Submodule.eq_top_iff', not_exists, Ne.def, not_forall] using hs
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
⊢ ∃ x, ¬x ∈ s

tactic: norm_num
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
⊢ 0 < 1 / 2

tactic: norm_num
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
⊢ 1 / 2 < 1

tactic: convert s.sub_mem hym hyn using 1
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
⊢ (c ^ n - c ^ m) • x ∈ s

tactic: simp only [sub_smul, neg_sub_neg, add_sub_add_right_eq_sub]
state_before: case h.e'_4
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
⊢ (c ^ n - c ^ m) • x = -(c ^ m • x) + y - (-(c ^ n • x) + y)

tactic: simpa only [sub_eq_zero, Ne.def] using (strictAnti_pow cpos cone).injective.ne hmn.symm
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A✝ : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
A : (c ^ n - c ^ m) • x ∈ s
⊢ c ^ n - c ^ m ≠ 0

tactic: convert s.smul_mem (c ^ n - c ^ m)⁻¹ A
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A✝ : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
A : (c ^ n - c ^ m) • x ∈ s
H : c ^ n - c ^ m ≠ 0
⊢ x ∈ s

tactic: rw [smul_smul, inv_mul_cancel H, one_smul]
state_before: case h.e'_4
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A✝ : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
A : (c ^ n - c ^ m) • x ∈ s
H : c ^ n - c ^ m ≠ 0
⊢ x = (c ^ n - c ^ m)⁻¹ • (c ^ n - c ^ m) • x