[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝ : Countable β
m : OuterMeasure α
s : β → Set α
h : ∀ (i : β), ↑m (s i) = 0
⊢ ↑m (⋃ (i : β), s i) = 0
[PROOFSTEP]
simpa [h] using m.iUnion s
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
ι : Prop
s : ι → Set α
⊢ (∀ (i : ι), ↑m (s i) = 0) → ↑m (⋃ (i : ι), s i) = 0
[PROOFSTEP]
by_cases i : ι
[GOAL]
case pos
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
ι : Prop
s : ι → Set α
i : ι
⊢ (∀ (i : ι), ↑m (s i) = 0) → ↑m (⋃ (i : ι), s i) = 0
[PROOFSTEP]
simp [i]
[GOAL]
case neg
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
ι : Prop
s : ι → Set α
i : ¬ι
⊢ (∀ (i : ι), ↑m (s i) = 0) → ↑m (⋃ (i : ι), s i) = 0
[PROOFSTEP]
simp [i]
[GOAL]
case pos
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
ι : Prop
s : ι → Set α
i : ι
⊢ (∀ (i : ι), ↑m (s i) = 0) → ↑m (s (_ : ι)) = 0
[PROOFSTEP]
exact (fun h => h (Iff.mpr (Iff.of_eq (eq_true i)) trivial))
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : Set β
hs : Set.Countable s
t : β → Set α
⊢ ↑m (⋃ (i : β) (_ : i ∈ s), t i) = 0 ↔ ∀ (i : β), i ∈ s → ↑m (t i) = 0
[PROOFSTEP]
haveI := hs.toEncodable
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : Set β
hs : Set.Countable s
t : β → Set α
this : Encodable ↑s
⊢ ↑m (⋃ (i : β) (_ : i ∈ s), t i) = 0 ↔ ∀ (i : β), i ∈ s → ↑m (t i) = 0
[PROOFSTEP]
rw [biUnion_eq_iUnion, iUnion_null_iff, SetCoe.forall']
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
S : Set (Set α)
hS : Set.Countable S
⊢ ↑m (⋃₀ S) = 0 ↔ ∀ (s : Set α), s ∈ S → ↑m s = 0
[PROOFSTEP]
rw [sUnion_eq_biUnion, m.biUnion_null_iff hS]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
m : OuterMeasure α
s : Set α
hs : ∀ (x : α), x ∈ s → ∃ u, u ∈ 𝓝[s] x ∧ ↑m u = 0
⊢ ↑m s = 0
[PROOFSTEP]
choose! u hxu hu₀ using hs
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
m : OuterMeasure α
s : Set α
u : α → Set α
hxu : ∀ (x : α), x ∈ s → u x ∈ 𝓝[s] x
hu₀ : ∀ (x : α), x ∈ s → ↑m (u x) = 0
⊢ ↑m s = 0
[PROOFSTEP]
choose t ht using TopologicalSpace.countable_cover_nhdsWithin hxu
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
m : OuterMeasure α
s : Set α
u : α → Set α
hxu : ∀ (x : α), x ∈ s → u x ∈ 𝓝[s] x
hu₀ : ∀ (x : α), x ∈ s → ↑m (u x) = 0
t : Set α
ht : t ⊆ s ∧ Set.Countable t ∧ s ⊆ ⋃ (x : α) (_ : x ∈ t), u x
⊢ ↑m s = 0
[PROOFSTEP]
rcases ht with ⟨ts, t_count, ht⟩
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
m : OuterMeasure α
s : Set α
u : α → Set α
hxu : ∀ (x : α), x ∈ s → u x ∈ 𝓝[s] x
hu₀ : ∀ (x : α), x ∈ s → ↑m (u x) = 0
t : Set α
ts : t ⊆ s
t_count : Set.Countable t
ht : s ⊆ ⋃ (x : α) (_ : x ∈ t), u x
⊢ ↑m s = 0
[PROOFSTEP]
apply m.mono_null ht
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
m : OuterMeasure α
s : Set α
u : α → Set α
hxu : ∀ (x : α), x ∈ s → u x ∈ 𝓝[s] x
hu₀ : ∀ (x : α), x ∈ s → ↑m (u x) = 0
t : Set α
ts : t ⊆ s
t_count : Set.Countable t
ht : s ⊆ ⋃ (x : α) (_ : x ∈ t), u x
⊢ ↑m (⋃ (x : α) (_ : x ∈ t), u x) = 0
[PROOFSTEP]
exact (m.biUnion_null_iff t_count).2 fun x hx => hu₀ x (ts hx)
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
m : OuterMeasure α
s : Set α
hs : ↑m s ≠ 0
⊢ ∃ x, x ∈ s ∧ ∀ (t : Set α), t ∈ 𝓝[s] x → 0 < ↑m t
[PROOFSTEP]
contrapose! hs
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
m : OuterMeasure α
s : Set α
hs : ∀ (x : α), x ∈ s → ∃ t, t ∈ 𝓝[s] x ∧ ↑m t ≤ 0
⊢ ↑m s = 0
[PROOFSTEP]
simp only [nonpos_iff_eq_zero] at hs 
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
m : OuterMeasure α
s : Set α
hs : ∀ (x : α), x ∈ s → ∃ t, t ∈ 𝓝[s] x ∧ ↑m t = 0
⊢ ↑m s = 0
[PROOFSTEP]
exact m.null_of_locally_null s hs
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
ι : Type u_5
m : OuterMeasure α
s : ι → Set α
l : Filter ι
inst✝ : NeBot l
h0 : Tendsto (fun k => ↑m ((⋃ (n : ι), s n) \ s k)) l (𝓝 0)
⊢ ↑m (⋃ (n : ι), s n) = ⨆ (n : ι), ↑m (s n)
[PROOFSTEP]
set S := ⋃ n, s n
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
ι : Type u_5
m : OuterMeasure α
s : ι → Set α
l : Filter ι
inst✝ : NeBot l
S : Set α := ⋃ (n : ι), s n
h0 : Tendsto (fun k => ↑m (S \ s k)) l (𝓝 0)
⊢ ↑m S = ⨆ (n : ι), ↑m (s n)
[PROOFSTEP]
set M := ⨆ n, m (s n)
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
ι : Type u_5
m : OuterMeasure α
s : ι → Set α
l : Filter ι
inst✝ : NeBot l
S : Set α := ⋃ (n : ι), s n
h0 : Tendsto (fun k => ↑m (S \ s k)) l (𝓝 0)
M : ℝ≥0∞ := ⨆ (n : ι), ↑m (s n)
⊢ ↑m S = M
[PROOFSTEP]
have hsS : ∀ {k}, s k ⊆ S := fun {k} => subset_iUnion _ _
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
ι : Type u_5
m : OuterMeasure α
s : ι → Set α
l : Filter ι
inst✝ : NeBot l
S : Set α := ⋃ (n : ι), s n
h0 : Tendsto (fun k => ↑m (S \ s k)) l (𝓝 0)
M : ℝ≥0∞ := ⨆ (n : ι), ↑m (s n)
hsS : ∀ {k : ι}, s k ⊆ S
⊢ ↑m S = M
[PROOFSTEP]
refine' le_antisymm _ (iSup_le fun n => m.mono hsS)
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
ι : Type u_5
m : OuterMeasure α
s : ι → Set α
l : Filter ι
inst✝ : NeBot l
S : Set α := ⋃ (n : ι), s n
h0 : Tendsto (fun k => ↑m (S \ s k)) l (𝓝 0)
M : ℝ≥0∞ := ⨆ (n : ι), ↑m (s n)
hsS : ∀ {k : ι}, s k ⊆ S
⊢ ↑m S ≤ M
[PROOFSTEP]
have A : ∀ k, m S ≤ M + m (S \ s k) := fun k =>
  calc
    m S = m (s k ∪ S \ s k) := by rw [union_diff_self, union_eq_self_of_subset_left hsS]
    _ ≤ m (s k) + m (S \ s k) := (m.union _ _)
    _ ≤ M + m (S \ s k) := add_le_add_right (le_iSup (m.measureOf ∘ s) k) _
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
ι : Type u_5
m : OuterMeasure α
s : ι → Set α
l : Filter ι
inst✝ : NeBot l
S : Set α := ⋃ (n : ι), s n
h0 : Tendsto (fun k => ↑m (S \ s k)) l (𝓝 0)
M : ℝ≥0∞ := ⨆ (n : ι), ↑m (s n)
hsS : ∀ {k : ι}, s k ⊆ S
k : ι
⊢ ↑m S = ↑m (s k ∪ S \ s k)
[PROOFSTEP]
rw [union_diff_self, union_eq_self_of_subset_left hsS]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
ι : Type u_5
m : OuterMeasure α
s : ι → Set α
l : Filter ι
inst✝ : NeBot l
S : Set α := ⋃ (n : ι), s n
h0 : Tendsto (fun k => ↑m (S \ s k)) l (𝓝 0)
M : ℝ≥0∞ := ⨆ (n : ι), ↑m (s n)
hsS : ∀ {k : ι}, s k ⊆ S
A : ∀ (k : ι), ↑m S ≤ M + ↑m (S \ s k)
⊢ ↑m S ≤ M
[PROOFSTEP]
have B : Tendsto (fun k => M + m (S \ s k)) l (𝓝 (M + 0)) := tendsto_const_nhds.add h0
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
ι : Type u_5
m : OuterMeasure α
s : ι → Set α
l : Filter ι
inst✝ : NeBot l
S : Set α := ⋃ (n : ι), s n
h0 : Tendsto (fun k => ↑m (S \ s k)) l (𝓝 0)
M : ℝ≥0∞ := ⨆ (n : ι), ↑m (s n)
hsS : ∀ {k : ι}, s k ⊆ S
A : ∀ (k : ι), ↑m S ≤ M + ↑m (S \ s k)
B : Tendsto (fun k => M + ↑m (S \ s k)) l (𝓝 (M + 0))
⊢ ↑m S ≤ M
[PROOFSTEP]
rw [add_zero] at B 
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
ι : Type u_5
m : OuterMeasure α
s : ι → Set α
l : Filter ι
inst✝ : NeBot l
S : Set α := ⋃ (n : ι), s n
h0 : Tendsto (fun k => ↑m (S \ s k)) l (𝓝 0)
M : ℝ≥0∞ := ⨆ (n : ι), ↑m (s n)
hsS : ∀ {k : ι}, s k ⊆ S
A : ∀ (k : ι), ↑m S ≤ M + ↑m (S \ s k)
B : Tendsto (fun k => M + ↑m (S \ s k)) l (𝓝 M)
⊢ ↑m S ≤ M
[PROOFSTEP]
exact ge_of_tendsto' B A
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
⊢ ↑m (⋃ (n : ℕ), s n) = ⨆ (n : ℕ), ↑m (s n)
[PROOFSTEP]
refine' m.iUnion_of_tendsto_zero atTop _
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
⊢ Tendsto (fun k => ↑m ((⋃ (n : ℕ), s n) \ s k)) atTop (𝓝 0)
[PROOFSTEP]
refine' tendsto_nhds_bot_mono' (ENNReal.tendsto_sum_nat_add _ h0) fun n => _
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
n : ℕ
⊢ ↑m ((⋃ (n : ℕ), s n) \ s n) ≤ ∑' (k : ℕ), ↑m (s (k + n + 1) \ s (k + n))
[PROOFSTEP]
refine'
  (m.mono _).trans
    (m.iUnion _)
      -- Current goal: `(⋃ k, s k) \ s n ⊆ ⋃ k, s (k + n + 1) \ s (k + n)`
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
n : ℕ
⊢ (⋃ (n : ℕ), s n) \ s n ⊆ ⋃ (i : ℕ), s (i + n + 1) \ s (i + n)
[PROOFSTEP]
have h' : Monotone s := @monotone_nat_of_le_succ (Set α) _ _ h_mono
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
n : ℕ
h' : Monotone s
⊢ (⋃ (n : ℕ), s n) \ s n ⊆ ⋃ (i : ℕ), s (i + n + 1) \ s (i + n)
[PROOFSTEP]
simp only [diff_subset_iff, iUnion_subset_iff]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
n : ℕ
h' : Monotone s
⊢ ∀ (i : ℕ), s i ⊆ s n ∪ ⋃ (i : ℕ), s (i + n + 1) \ s (i + n)
[PROOFSTEP]
intro i x hx
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
n : ℕ
h' : Monotone s
i : ℕ
x : α
hx : x ∈ s i
⊢ x ∈ s n ∪ ⋃ (i : ℕ), s (i + n + 1) \ s (i + n)
[PROOFSTEP]
have : ∃ i, x ∈ s i := by exists i
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
n : ℕ
h' : Monotone s
i : ℕ
x : α
hx : x ∈ s i
⊢ ∃ i, x ∈ s i
[PROOFSTEP]
exists i
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
n : ℕ
h' : Monotone s
i : ℕ
x : α
hx : x ∈ s i
this : ∃ i, x ∈ s i
⊢ x ∈ s n ∪ ⋃ (i : ℕ), s (i + n + 1) \ s (i + n)
[PROOFSTEP]
rcases Nat.findX this with ⟨j, hj, hlt⟩
[GOAL]
case mk.intro
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
n : ℕ
h' : Monotone s
i : ℕ
x : α
hx : x ∈ s i
this : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ (m : ℕ), m < j → ¬x ∈ s m
⊢ x ∈ s n ∪ ⋃ (i : ℕ), s (i + n + 1) \ s (i + n)
[PROOFSTEP]
clear hx i
[GOAL]
case mk.intro
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
n : ℕ
h' : Monotone s
x : α
this : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ (m : ℕ), m < j → ¬x ∈ s m
⊢ x ∈ s n ∪ ⋃ (i : ℕ), s (i + n + 1) \ s (i + n)
[PROOFSTEP]
cases' le_or_lt j n with hjn hnj
[GOAL]
case mk.intro.inl
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
n : ℕ
h' : Monotone s
x : α
this : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ (m : ℕ), m < j → ¬x ∈ s m
hjn : j ≤ n
⊢ x ∈ s n ∪ ⋃ (i : ℕ), s (i + n + 1) \ s (i + n)
[PROOFSTEP]
exact Or.inl (h' hjn hj)
[GOAL]
case mk.intro.inr
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
n : ℕ
h' : Monotone s
x : α
this : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ (m : ℕ), m < j → ¬x ∈ s m
hnj : n < j
⊢ x ∈ s n ∪ ⋃ (i : ℕ), s (i + n + 1) \ s (i + n)
[PROOFSTEP]
have : j - (n + 1) + n + 1 = j := by rw [add_assoc, tsub_add_cancel_of_le hnj.nat_succ_le]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
n : ℕ
h' : Monotone s
x : α
this : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ (m : ℕ), m < j → ¬x ∈ s m
hnj : n < j
⊢ j - (n + 1) + n + 1 = j
[PROOFSTEP]
rw [add_assoc, tsub_add_cancel_of_le hnj.nat_succ_le]
[GOAL]
case mk.intro.inr
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
n : ℕ
h' : Monotone s
x : α
this✝ : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ (m : ℕ), m < j → ¬x ∈ s m
hnj : n < j
this : j - (n + 1) + n + 1 = j
⊢ x ∈ s n ∪ ⋃ (i : ℕ), s (i + n + 1) \ s (i + n)
[PROOFSTEP]
refine' Or.inr (mem_iUnion.2 ⟨j - (n + 1), _, hlt _ _⟩)
[GOAL]
case mk.intro.inr.refine'_1
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
n : ℕ
h' : Monotone s
x : α
this✝ : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ (m : ℕ), m < j → ¬x ∈ s m
hnj : n < j
this : j - (n + 1) + n + 1 = j
⊢ x ∈ s (j - (n + 1) + n + 1)
[PROOFSTEP]
rwa [this]
[GOAL]
case mk.intro.inr.refine'_2
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), ↑m (s (k + 1) \ s k) ≠ ⊤
inst✝ : (i : ℕ) → DecidablePred fun x => x ∈ s i
n : ℕ
h' : Monotone s
x : α
this✝ : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ (m : ℕ), m < j → ¬x ∈ s m
hnj : n < j
this : j - (n + 1) + n + 1 = j
⊢ j - (n + 1) + n < j
[PROOFSTEP]
rw [← Nat.succ_le_iff, Nat.succ_eq_add_one, this]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
t s : Set α
⊢ ↑m t ≤ ↑m (t ∩ s) + ↑m (t \ s)
[PROOFSTEP]
convert m.union _ _
[GOAL]
case h.e'_3.h.e'_3
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
t s : Set α
⊢ t = t ∩ s ∪ t \ s
[PROOFSTEP]
rw [inter_union_diff t s]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s t : Set α
ht : ↑m t = 0
⊢ ↑m (s \ t) = ↑m s
[PROOFSTEP]
refine' le_antisymm (m.mono <| diff_subset _ _) _
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s t : Set α
ht : ↑m t = 0
⊢ ↑m s ≤ ↑m (s \ t)
[PROOFSTEP]
calc
  m s ≤ m (s ∩ t) + m (s \ t) := le_inter_add_diff _
  _ ≤ m t + m (s \ t) := (add_le_add_right (m.mono <| inter_subset_right _ _) _)
  _ = m (s \ t) := by rw [ht, zero_add]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s t : Set α
ht : ↑m t = 0
⊢ ↑m t + ↑m (s \ t) = ↑m (s \ t)
[PROOFSTEP]
rw [ht, zero_add]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s₁ s₂ : Set α
h₁ : ↑m s₁ = 0
h₂ : ↑m s₂ = 0
⊢ ↑m (s₁ ∪ s₂) = 0
[PROOFSTEP]
simpa [h₁, h₂] using m.union s₁ s₂
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m μ₁ μ₂ : OuterMeasure α
h : (fun μ s => ↑μ s) μ₁ = (fun μ s => ↑μ s) μ₂
⊢ μ₁ = μ₂
[PROOFSTEP]
cases μ₁
[GOAL]
case mk
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m μ₂ : OuterMeasure α
measureOf✝ : Set α → ℝ≥0∞
empty✝ : measureOf✝ ∅ = 0
mono✝ : ∀ {s₁ s₂ : Set α}, s₁ ⊆ s₂ → measureOf✝ s₁ ≤ measureOf✝ s₂
iUnion_nat✝ : ∀ (s : ℕ → Set α), measureOf✝ (⋃ (i : ℕ), s i) ≤ ∑' (i : ℕ), measureOf✝ (s i)
h :
  (fun μ s => ↑μ s) { measureOf := measureOf✝, empty := empty✝, mono := mono✝, iUnion_nat := iUnion_nat✝ } =
    (fun μ s => ↑μ s) μ₂
⊢ { measureOf := measureOf✝, empty := empty✝, mono := mono✝, iUnion_nat := iUnion_nat✝ } = μ₂
[PROOFSTEP]
cases μ₂
[GOAL]
case mk.mk
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
measureOf✝¹ : Set α → ℝ≥0∞
empty✝¹ : measureOf✝¹ ∅ = 0
mono✝¹ : ∀ {s₁ s₂ : Set α}, s₁ ⊆ s₂ → measureOf✝¹ s₁ ≤ measureOf✝¹ s₂
iUnion_nat✝¹ : ∀ (s : ℕ → Set α), measureOf✝¹ (⋃ (i : ℕ), s i) ≤ ∑' (i : ℕ), measureOf✝¹ (s i)
measureOf✝ : Set α → ℝ≥0∞
empty✝ : measureOf✝ ∅ = 0
mono✝ : ∀ {s₁ s₂ : Set α}, s₁ ⊆ s₂ → measureOf✝ s₁ ≤ measureOf✝ s₂
iUnion_nat✝ : ∀ (s : ℕ → Set α), measureOf✝ (⋃ (i : ℕ), s i) ≤ ∑' (i : ℕ), measureOf✝ (s i)
h :
  (fun μ s => ↑μ s) { measureOf := measureOf✝¹, empty := empty✝¹, mono := mono✝¹, iUnion_nat := iUnion_nat✝¹ } =
    (fun μ s => ↑μ s) { measureOf := measureOf✝, empty := empty✝, mono := mono✝, iUnion_nat := iUnion_nat✝ }
⊢ { measureOf := measureOf✝¹, empty := empty✝¹, mono := mono✝¹, iUnion_nat := iUnion_nat✝¹ } =
    { measureOf := measureOf✝, empty := empty✝, mono := mono✝, iUnion_nat := iUnion_nat✝ }
[PROOFSTEP]
congr
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m μ₁ μ₂ : OuterMeasure α
h : ∀ (s : Set α), Set.Nonempty s → ↑μ₁ s = ↑μ₂ s
s : Set α
he : s = ∅
⊢ ↑μ₁ s = ↑μ₂ s
[PROOFSTEP]
rw [he, empty', empty']
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
⊢ ∀ {s₁ s₂ : Set α}, s₁ ⊆ s₂ → (fun x => 0) s₁ ≤ (fun x => 0) s₂
[PROOFSTEP]
intro _ _ _
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
s₁✝ s₂✝ : Set α
a✝ : s₁✝ ⊆ s₂✝
⊢ (fun x => 0) s₁✝ ≤ (fun x => 0) s₂✝
[PROOFSTEP]
exact le_refl 0
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m m₁ m₂ : OuterMeasure α
⊢ ↑m₁ ∅ + ↑m₂ ∅ = 0
[PROOFSTEP]
simp [OuterMeasure.empty]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝³ : SMul R ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : SMul R' ℝ≥0∞
inst✝ : IsScalarTower R' ℝ≥0∞ ℝ≥0∞
c : R
m : OuterMeasure α
⊢ (fun s => c • ↑m s) ∅ = 0
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝³ : SMul R ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : SMul R' ℝ≥0∞
inst✝ : IsScalarTower R' ℝ≥0∞ ℝ≥0∞
c : R
m : OuterMeasure α
⊢ c • 0 = 0
[PROOFSTEP]
rw [← smul_one_mul c]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝³ : SMul R ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : SMul R' ℝ≥0∞
inst✝ : IsScalarTower R' ℝ≥0∞ ℝ≥0∞
c : R
m : OuterMeasure α
⊢ c • 1 * 0 = 0
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝³ : SMul R ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : SMul R' ℝ≥0∞
inst✝ : IsScalarTower R' ℝ≥0∞ ℝ≥0∞
c : R
m : OuterMeasure α
s t : Set α
h : s ⊆ t
⊢ (fun s => c • ↑m s) s ≤ (fun s => c • ↑m s) t
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝³ : SMul R ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : SMul R' ℝ≥0∞
inst✝ : IsScalarTower R' ℝ≥0∞ ℝ≥0∞
c : R
m : OuterMeasure α
s t : Set α
h : s ⊆ t
⊢ c • ↑m s ≤ c • ↑m t
[PROOFSTEP]
rw [← smul_one_mul c, ← smul_one_mul c (m t)]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝³ : SMul R ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : SMul R' ℝ≥0∞
inst✝ : IsScalarTower R' ℝ≥0∞ ℝ≥0∞
c : R
m : OuterMeasure α
s t : Set α
h : s ⊆ t
⊢ c • 1 * ↑m s ≤ c • 1 * ↑m t
[PROOFSTEP]
exact ENNReal.mul_left_mono (m.mono h)
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝³ : SMul R ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : SMul R' ℝ≥0∞
inst✝ : IsScalarTower R' ℝ≥0∞ ℝ≥0∞
c : R
m : OuterMeasure α
s : ℕ → Set α
⊢ (fun s => c • ↑m s) (⋃ (i : ℕ), s i) ≤ ∑' (i : ℕ), (fun s => c • ↑m s) (s i)
[PROOFSTEP]
simp_rw [← smul_one_mul c (m _), ENNReal.tsum_mul_left]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝³ : SMul R ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : SMul R' ℝ≥0∞
inst✝ : IsScalarTower R' ℝ≥0∞ ℝ≥0∞
c : R
m : OuterMeasure α
s : ℕ → Set α
⊢ c • 1 * ↑m (⋃ (i : ℕ), s i) ≤ c • 1 * ∑' (i : ℕ), ↑m (s i)
[PROOFSTEP]
exact ENNReal.mul_left_mono (m.iUnion_nat _)
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m a : OuterMeasure α
s : Set α
⊢ ↑⊥ s ≤ ↑a s
[PROOFSTEP]
simp only [coe_zero, Pi.zero_apply, coe_bot, zero_le]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms✝ : Set (OuterMeasure α)
m✝ : OuterMeasure α
ms : Set (OuterMeasure α)
f : ℕ → Set α
m : OuterMeasure α
hm : m ∈ ms
i : ℕ
⊢ ↑m (f i) ≤ ⨆ (m : OuterMeasure α) (_ : m ∈ ms), ↑m (f i)
[PROOFSTEP]
apply le_iSup₂ m hm
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms✝ : Set (OuterMeasure α)
m✝ : OuterMeasure α
src✝ : OrderBot (OuterMeasure α) := OuterMeasure.orderBot
ms : Set (OuterMeasure α)
m : OuterMeasure α
hm : m ∈ ms
s : Set α
⊢ ↑m s ≤ ↑(sSup ms) s
[PROOFSTEP]
apply le_iSup₂ m hm
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
ι : Sort u_5
f : ι → OuterMeasure α
s : Set α
⊢ ↑(⨆ (i : ι), f i) s = ⨆ (i : ι), ↑(f i) s
[PROOFSTEP]
rw [iSup, sSup_apply, iSup_range, iSup]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
ι : Sort u_5
f : ι → OuterMeasure α
s : Set α
⊢ ↑(⨆ (i : ι), f i) s = iSup (fun i => ↑(f i)) s
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m m₁ m₂ : OuterMeasure α
s : Set α
⊢ ↑(m₁ ⊔ m₂) s = ↑m₁ s ⊔ ↑m₂ s
[PROOFSTEP]
have := iSup_apply (fun b => cond b m₁ m₂) s
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m m₁ m₂ : OuterMeasure α
s : Set α
this : ↑(⨆ (i : Bool), bif i then m₁ else m₂) s = ⨆ (i : Bool), ↑(bif i then m₁ else m₂) s
⊢ ↑(m₁ ⊔ m₂) s = ↑m₁ s ⊔ ↑m₂ s
[PROOFSTEP]
rwa [iSup_bool_eq, iSup_bool_eq] at this 
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
inst✝¹ : SMul R ℝ≥0∞
inst✝ : IsScalarTower R ℝ≥0∞ ℝ≥0∞
ι : Sort u_5
f : ι → OuterMeasure α
c : R
s : Set α
⊢ ↑(c • ⨆ (i : ι), f i) s = ↑(⨆ (i : ι), c • f i) s
[PROOFSTEP]
simp only [smul_apply, iSup_apply, ENNReal.smul_iSup]
[GOAL]
α : Type u_1
β✝ : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
β : Type ?u.69709
f : α → β
m : OuterMeasure α
s : ℕ → Set β
⊢ (fun s => ↑m (f ⁻¹' s)) (⋃ (i : ℕ), s i) ≤ ∑' (i : ℕ), (fun s => ↑m (f ⁻¹' s)) (s i)
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β✝ : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
β : Type ?u.69709
f : α → β
m : OuterMeasure α
s : ℕ → Set β
⊢ ↑m (⋃ (i : ℕ), f ⁻¹' s i) ≤ ∑' (i : ℕ), ↑m (f ⁻¹' s i)
[PROOFSTEP]
apply m.iUnion_nat fun i => f ⁻¹' s i
[GOAL]
α : Type u_1
β✝ : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
β : Type u_5
f : α → β
m m' : OuterMeasure α
s : Set β
⊢ ↑(↑(map f) (m ⊔ m')) s = ↑(↑(map f) m ⊔ ↑(map f) m') s
[PROOFSTEP]
simp only [map_apply, sup_apply]
[GOAL]
α : Type u_1
β✝ : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
β : Type u_5
ι : Sort u_6
f : α → β
m : ι → OuterMeasure α
s : Set β
⊢ ↑(↑(map f) (⨆ (i : ι), m i)) s = ↑(⨆ (i : ι), ↑(map f) (m i)) s
[PROOFSTEP]
simp only [map_apply, iSup_apply]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
⊢ LawfulFunctor OuterMeasure
[PROOFSTEP]
constructor
[GOAL]
case map_const
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
⊢ ∀ {α β : Type ?u.80543}, Functor.mapConst = Functor.map ∘ const β
[PROOFSTEP]
intros
[GOAL]
case id_map
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
⊢ ∀ {α : Type ?u.80543} (x : OuterMeasure α), id <$> x = x
[PROOFSTEP]
intros
[GOAL]
case comp_map
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
⊢ ∀ {α β γ : Type ?u.80543} (g : α → β) (h : β → γ) (x : OuterMeasure α), (h ∘ g) <$> x = h <$> g <$> x
[PROOFSTEP]
intros
[GOAL]
case map_const
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
α✝ β✝ : Type ?u.80543
⊢ Functor.mapConst = Functor.map ∘ const β✝
[PROOFSTEP]
rfl
[GOAL]
case id_map
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
α✝ : Type ?u.80543
x✝ : OuterMeasure α✝
⊢ id <$> x✝ = x✝
[PROOFSTEP]
rfl
[GOAL]
case comp_map
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
α✝ β✝ γ✝ : Type ?u.80543
g✝ : α✝ → β✝
h✝ : β✝ → γ✝
x✝ : OuterMeasure α✝
⊢ (h✝ ∘ g✝) <$> x✝ = h✝ <$> g✝ <$> x✝
[PROOFSTEP]
rfl
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
a : α
⊢ (fun s => indicator s (fun x => 1) a) ∅ = 0
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
a : α
s : ℕ → Set α
hs : ¬a ∈ ⋃ (n : ℕ), s n
⊢ (fun s => indicator s (fun x => 1) a) (⋃ (i : ℕ), s i) ≤ ∑' (i : ℕ), (fun s => indicator s (fun x => 1) a) (s i)
[PROOFSTEP]
simp only [indicator_of_not_mem hs, zero_le]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
ι : Type ?u.84633
f : ι → OuterMeasure α
⊢ (fun s => ∑' (i : ι), ↑(f i) s) ∅ = 0
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
ι : Type ?u.84633
f : ι → OuterMeasure α
s : ℕ → Set α
⊢ (fun s => ∑' (i : ι), ↑(f i) s) (⋃ (i : ℕ), s i) ≤ ∑' (i : ℕ), (fun s => ∑' (i : ι), ↑(f i) s) (s i)
[PROOFSTEP]
rw [ENNReal.tsum_comm]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
ι : Type ?u.84633
f : ι → OuterMeasure α
s : ℕ → Set α
⊢ (fun s => ∑' (i : ι), ↑(f i) s) (⋃ (i : ℕ), s i) ≤ ∑' (b : ι) (a : ℕ), ↑(f b) (s a)
[PROOFSTEP]
exact ENNReal.tsum_le_tsum fun i => (f i).iUnion_nat _
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
a : ℝ≥0∞
b : α
s : Set α
⊢ ↑(a • dirac b) s = indicator s (fun x => a) b
[PROOFSTEP]
simp only [smul_apply, smul_eq_mul, dirac_apply, ← indicator_mul_right _ fun _ => a, mul_one]
[GOAL]
α : Type u_1
β✝ : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
β : Type ?u.88170
f : α → β
m : OuterMeasure β
⊢ (fun s => ↑m (f '' s)) ∅ = 0
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β✝ : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
β : Type ?u.88170
f : α → β
m : OuterMeasure β
s : ℕ → Set α
⊢ (fun s => ↑m (f '' s)) (⋃ (i : ℕ), s i) ≤ ∑' (i : ℕ), (fun s => ↑m (f '' s)) (s i)
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β✝ : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
β : Type ?u.88170
f : α → β
m : OuterMeasure β
s : ℕ → Set α
⊢ ↑m (f '' ⋃ (i : ℕ), s i) ≤ ∑' (i : ℕ), ↑m (f '' s i)
[PROOFSTEP]
rw [image_iUnion]
[GOAL]
α : Type u_1
β✝ : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
β : Type ?u.88170
f : α → β
m : OuterMeasure β
s : ℕ → Set α
⊢ ↑m (⋃ (i : ℕ), f '' s i) ≤ ∑' (i : ℕ), ↑m (f '' s i)
[PROOFSTEP]
apply m.iUnion_nat
[GOAL]
α : Type u_1
β✝ : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
β : Type u_5
ι : Sort u_6
f : α → β
m : ι → OuterMeasure β
s : Set α
⊢ ↑(↑(comap f) (⨆ (i : ι), m i)) s = ↑(⨆ (i : ι), ↑(comap f) (m i)) s
[PROOFSTEP]
simp only [comap_apply, iSup_apply]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
s t : Set α
m : OuterMeasure α
⊢ ↑(↑(restrict s) m) t = ↑m (t ∩ s)
[PROOFSTEP]
simp [restrict]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
s t : Set α
h : s ⊆ t
m m' : OuterMeasure α
hm : m ≤ m'
u : Set α
⊢ ↑(↑(restrict s) m) u ≤ ↑(↑(restrict t) m') u
[PROOFSTEP]
simp only [restrict_apply]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
s t : Set α
h : s ⊆ t
m m' : OuterMeasure α
hm : m ≤ m'
u : Set α
⊢ ↑m (u ∩ s) ≤ ↑m' (u ∩ t)
[PROOFSTEP]
exact (hm _).trans (m'.mono <| inter_subset_inter_right _ h)
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : Set α
⊢ ↑(↑(restrict univ) m) s = ↑m s
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ m : OuterMeasure α
s : Set α
⊢ ↑(↑(restrict ∅) m) s = ↑0 s
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
ι : Sort u_5
s : Set α
m : ι → OuterMeasure α
⊢ ↑(restrict s) (⨆ (i : ι), m i) = ⨆ (i : ι), ↑(restrict s) (m i)
[PROOFSTEP]
simp [restrict]
[GOAL]
α : Type u_1
β✝ : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
β : Type u_5
f : α → β
m : OuterMeasure β
s : Set β
⊢ f '' (f ⁻¹' s) = Subtype.val '' (Subtype.val ⁻¹' s)
[PROOFSTEP]
simp only [image_preimage_eq_inter_range, Subtype.range_coe]
[GOAL]
α : Type u_1
β✝ : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
β : Type u_5
ma : OuterMeasure α
mb : OuterMeasure β
f : α → β
h : ↑(map f) ma ≤ mb
s : Set β
⊢ ↑(↑(map f) ma) s ≤ ↑(↑(restrict (range f)) mb) s
[PROOFSTEP]
simpa using h (s ∩ range f)
[GOAL]
α : Type u_1
β✝ : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
β : Type u_5
f : α → β
hf : Surjective f
m : OuterMeasure β
s : Set β
⊢ ↑(↑(map f) (↑(comap f) m)) s = ↑m s
[PROOFSTEP]
rw [map_apply, comap_apply, hf.image_preimage]
[GOAL]
α : Type u_1
β✝ : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
β : Type u_5
f : α → β
hf : Injective f
m : OuterMeasure α
s : Set α
⊢ ↑(↑(comap f) (↑(map f) m)) s = ↑m s
[PROOFSTEP]
rw [comap_apply, map_apply, hf.preimage_image]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
s : Set α
h : Set.Nonempty s
a : α
as : a ∈ s
⊢ ⊤ ≤ ↑(⊤ • dirac a) s
[PROOFSTEP]
simp [smul_dirac_apply, as]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
s : Set α
h : s = ∅
⊢ ↑⊤ s = ⨅ (_ : s = ∅), 0
[PROOFSTEP]
simp [h]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
s : Set α
h : Set.Nonempty s
⊢ ↑⊤ s = ⨅ (_ : s = ∅), 0
[PROOFSTEP]
simp [h, h.ne_empty]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
f : α → β
s : Set α
hs : Set.Nonempty s
⊢ ↑(↑(comap f) ⊤) s = ↑⊤ s
[PROOFSTEP]
rw [comap_apply, top_apply hs, top_apply (hs.image _)]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
f : α → β
s : Set β
⊢ ↑(↑(map f) ⊤) s = ↑(↑(restrict (range f)) ⊤) s
[PROOFSTEP]
rw [map_apply, restrict_apply, ← image_preimage_eq_inter_range, top_apply', top_apply', Set.image_eq_empty]
[GOAL]
α : Type u_1
β : Type u_2
R : Type u_3
R' : Type u_4
ms : Set (OuterMeasure α)
m : OuterMeasure α
f : α → β
hf : Surjective f
⊢ ↑(map f) ⊤ = ⊤
[PROOFSTEP]
rw [map_top, hf.range_eq, restrict_univ]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
⊢ ∑' (i : ℕ), m ((fun x => ∅) i) ≤ 0
[PROOFSTEP]
simp [m_empty]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
⊢ ∀ (ε : ℝ≥0), 0 < ε → ∑' (i : ℕ), μ (s i) < ⊤ → μ (⋃ (i : ℕ), s i) ≤ ∑' (i : ℕ), μ (s i) + ↑ε
[PROOFSTEP]
intro ε hε (hb : (∑' i, μ (s i)) < ∞)
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
⊢ μ (⋃ (i : ℕ), s i) ≤ ∑' (i : ℕ), μ (s i) + ↑ε
[PROOFSTEP]
rcases ENNReal.exists_pos_sum_of_countable (ENNReal.coe_pos.2 hε).ne' ℕ with ⟨ε', hε', hl⟩
[GOAL]
case intro.intro
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
⊢ μ (⋃ (i : ℕ), s i) ≤ ∑' (i : ℕ), μ (s i) + ↑ε
[PROOFSTEP]
refine' le_trans _ (add_le_add_left (le_of_lt hl) _)
[GOAL]
case intro.intro
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
⊢ μ (⋃ (i : ℕ), s i) ≤ ∑' (i : ℕ), μ (s i) + ∑' (i : ℕ), ↑(ε' i)
[PROOFSTEP]
rw [← ENNReal.tsum_add]
[GOAL]
case intro.intro
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
⊢ μ (⋃ (i : ℕ), s i) ≤ ∑' (a : ℕ), (μ (s a) + ↑(ε' a))
[PROOFSTEP]
choose f hf using
  show ∀ i, ∃ f : ℕ → Set α, (s i ⊆ ⋃ i, f i) ∧ (∑' i, m (f i)) < μ (s i) + ε' i
    by
    intro i
    have : μ (s i) < μ (s i) + ε' i :=
      ENNReal.lt_add_right (ne_top_of_le_ne_top hb.ne <| ENNReal.le_tsum _) (by simpa using (hε' i).ne')
    rcases iInf_lt_iff.mp this with ⟨t, ht⟩
    exists t
    contrapose! ht
    exact le_iInf ht
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
⊢ ∀ (i : ℕ), ∃ f, s i ⊆ ⋃ (i : ℕ), f i ∧ ∑' (i : ℕ), m (f i) < μ (s i) + ↑(ε' i)
[PROOFSTEP]
intro i
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
i : ℕ
⊢ ∃ f, s i ⊆ ⋃ (i : ℕ), f i ∧ ∑' (i : ℕ), m (f i) < μ (s i) + ↑(ε' i)
[PROOFSTEP]
have : μ (s i) < μ (s i) + ε' i :=
  ENNReal.lt_add_right (ne_top_of_le_ne_top hb.ne <| ENNReal.le_tsum _) (by simpa using (hε' i).ne')
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
i : ℕ
⊢ ↑(ε' i) ≠ 0
[PROOFSTEP]
simpa using (hε' i).ne'
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
i : ℕ
this : μ (s i) < μ (s i) + ↑(ε' i)
⊢ ∃ f, s i ⊆ ⋃ (i : ℕ), f i ∧ ∑' (i : ℕ), m (f i) < μ (s i) + ↑(ε' i)
[PROOFSTEP]
rcases iInf_lt_iff.mp this with ⟨t, ht⟩
[GOAL]
case intro
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
i : ℕ
this : μ (s i) < μ (s i) + ↑(ε' i)
t : ℕ → Set α
ht : ⨅ (_ : s i ⊆ ⋃ (i : ℕ), t i), ∑' (i : ℕ), m (t i) < μ (s i) + ↑(ε' i)
⊢ ∃ f, s i ⊆ ⋃ (i : ℕ), f i ∧ ∑' (i : ℕ), m (f i) < μ (s i) + ↑(ε' i)
[PROOFSTEP]
exists t
[GOAL]
case intro
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
i : ℕ
this : μ (s i) < μ (s i) + ↑(ε' i)
t : ℕ → Set α
ht : ⨅ (_ : s i ⊆ ⋃ (i : ℕ), t i), ∑' (i : ℕ), m (t i) < μ (s i) + ↑(ε' i)
⊢ s i ⊆ ⋃ (i : ℕ), t i ∧ ∑' (i : ℕ), m (t i) < μ (s i) + ↑(ε' i)
[PROOFSTEP]
contrapose! ht
[GOAL]
case intro
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
i : ℕ
this : μ (s i) < μ (s i) + ↑(ε' i)
t : ℕ → Set α
ht :
  s i ⊆ ⋃ (i : ℕ), t i →
    (fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)) (s i) + ↑(ε' i) ≤ ∑' (i : ℕ), m (t i)
⊢ (fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)) (s i) + ↑(ε' i) ≤
    ⨅ (_ : s i ⊆ ⋃ (i : ℕ), t i), ∑' (i : ℕ), m (t i)
[PROOFSTEP]
exact le_iInf ht
[GOAL]
case intro.intro
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
f : ℕ → ℕ → Set α
hf : ∀ (i : ℕ), s i ⊆ ⋃ (i_1 : ℕ), f i i_1 ∧ ∑' (i_1 : ℕ), m (f i i_1) < μ (s i) + ↑(ε' i)
⊢ μ (⋃ (i : ℕ), s i) ≤ ∑' (a : ℕ), (μ (s a) + ↑(ε' a))
[PROOFSTEP]
refine' le_trans _ (ENNReal.tsum_le_tsum fun i => le_of_lt (hf i).2)
[GOAL]
case intro.intro
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
f : ℕ → ℕ → Set α
hf : ∀ (i : ℕ), s i ⊆ ⋃ (i_1 : ℕ), f i i_1 ∧ ∑' (i_1 : ℕ), m (f i i_1) < μ (s i) + ↑(ε' i)
⊢ μ (⋃ (i : ℕ), s i) ≤ ∑' (a : ℕ) (i : ℕ), m (f a i)
[PROOFSTEP]
rw [← ENNReal.tsum_prod, ← Nat.pairEquiv.symm.tsum_eq]
[GOAL]
case intro.intro
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
f : ℕ → ℕ → Set α
hf : ∀ (i : ℕ), s i ⊆ ⋃ (i_1 : ℕ), f i i_1 ∧ ∑' (i_1 : ℕ), m (f i i_1) < μ (s i) + ↑(ε' i)
⊢ μ (⋃ (i : ℕ), s i) ≤ ∑' (c : ℕ), m (f (↑Nat.pairEquiv.symm c).fst (↑Nat.pairEquiv.symm c).snd)
[PROOFSTEP]
refine' iInf_le_of_le _ (iInf_le _ _)
[GOAL]
case intro.intro
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
f : ℕ → ℕ → Set α
hf : ∀ (i : ℕ), s i ⊆ ⋃ (i_1 : ℕ), f i i_1 ∧ ∑' (i_1 : ℕ), m (f i i_1) < μ (s i) + ↑(ε' i)
⊢ ⋃ (i : ℕ), s i ⊆ ⋃ (i : ℕ), f (↑Nat.pairEquiv.symm i).fst (↑Nat.pairEquiv.symm i).snd
[PROOFSTEP]
apply iUnion_subset
[GOAL]
case intro.intro.h
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
f : ℕ → ℕ → Set α
hf : ∀ (i : ℕ), s i ⊆ ⋃ (i_1 : ℕ), f i i_1 ∧ ∑' (i_1 : ℕ), m (f i i_1) < μ (s i) + ↑(ε' i)
⊢ ∀ (i : ℕ), s i ⊆ ⋃ (i : ℕ), f (↑Nat.pairEquiv.symm i).fst (↑Nat.pairEquiv.symm i).snd
[PROOFSTEP]
intro i
[GOAL]
case intro.intro.h
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
f : ℕ → ℕ → Set α
hf : ∀ (i : ℕ), s i ⊆ ⋃ (i_1 : ℕ), f i i_1 ∧ ∑' (i_1 : ℕ), m (f i i_1) < μ (s i) + ↑(ε' i)
i : ℕ
⊢ s i ⊆ ⋃ (i : ℕ), f (↑Nat.pairEquiv.symm i).fst (↑Nat.pairEquiv.symm i).snd
[PROOFSTEP]
apply Subset.trans (hf i).1
[GOAL]
case intro.intro.h
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
f : ℕ → ℕ → Set α
hf : ∀ (i : ℕ), s i ⊆ ⋃ (i_1 : ℕ), f i i_1 ∧ ∑' (i_1 : ℕ), m (f i i_1) < μ (s i) + ↑(ε' i)
i : ℕ
⊢ ⋃ (i_1 : ℕ), f i i_1 ⊆ ⋃ (i : ℕ), f (↑Nat.pairEquiv.symm i).fst (↑Nat.pairEquiv.symm i).snd
[PROOFSTEP]
apply iUnion_subset
[GOAL]
case intro.intro.h.h
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
f : ℕ → ℕ → Set α
hf : ∀ (i : ℕ), s i ⊆ ⋃ (i_1 : ℕ), f i i_1 ∧ ∑' (i_1 : ℕ), m (f i i_1) < μ (s i) + ↑(ε' i)
i : ℕ
⊢ ∀ (i_1 : ℕ), f i i_1 ⊆ ⋃ (i : ℕ), f (↑Nat.pairEquiv.symm i).fst (↑Nat.pairEquiv.symm i).snd
[PROOFSTEP]
simp
[GOAL]
case intro.intro.h.h
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
f : ℕ → ℕ → Set α
hf : ∀ (i : ℕ), s i ⊆ ⋃ (i_1 : ℕ), f i i_1 ∧ ∑' (i_1 : ℕ), m (f i i_1) < μ (s i) + ↑(ε' i)
i : ℕ
⊢ ∀ (i_1 : ℕ), f i i_1 ⊆ ⋃ (i : ℕ), f (Nat.unpair i).fst (Nat.unpair i).snd
[PROOFSTEP]
rw [iUnion_unpair]
[GOAL]
case intro.intro.h.h
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
f : ℕ → ℕ → Set α
hf : ∀ (i : ℕ), s i ⊆ ⋃ (i_1 : ℕ), f i i_1 ∧ ∑' (i_1 : ℕ), m (f i i_1) < μ (s i) + ↑(ε' i)
i : ℕ
⊢ ∀ (i_1 : ℕ), f i i_1 ⊆ ⋃ (i : ℕ) (j : ℕ), f i j
[PROOFSTEP]
intro j
[GOAL]
case intro.intro.h.h
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
μ : Set α → ℝ≥0∞ := fun s => ⨅ (f : ℕ → Set α) (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), m (f i)
s : ℕ → Set α
ε : ℝ≥0
hε : 0 < ε
hb : ∑' (i : ℕ), μ (s i) < ⊤
ε' : ℕ → ℝ≥0
hε' : ∀ (i : ℕ), 0 < ε' i
hl : ∑' (i : ℕ), ↑(ε' i) < ↑ε
f : ℕ → ℕ → Set α
hf : ∀ (i : ℕ), s i ⊆ ⋃ (i_1 : ℕ), f i i_1 ∧ ∑' (i_1 : ℕ), m (f i i_1) < μ (s i) + ↑(ε' i)
i j : ℕ
⊢ f i j ⊆ ⋃ (i : ℕ) (j : ℕ), f i j
[PROOFSTEP]
apply subset_iUnion₂ i
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s : Set α
f : ℕ → Set α := fun i => Nat.casesOn i s fun x => ∅
⊢ ∀ (b' : ℕ), b' ≠ 0 → m (f b') = 0
[PROOFSTEP]
rintro (_ | i)
[GOAL]
case zero
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s : Set α
f : ℕ → Set α := fun i => Nat.casesOn i s fun x => ∅
⊢ Nat.zero ≠ 0 → m (f Nat.zero) = 0
case succ
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s : Set α
f : ℕ → Set α := fun i => Nat.casesOn i s fun x => ∅
i : ℕ
⊢ Nat.succ i ≠ 0 → m (f (Nat.succ i)) = 0
[PROOFSTEP]
simp
[GOAL]
case succ
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s : Set α
f : ℕ → Set α := fun i => Nat.casesOn i s fun x => ∅
i : ℕ
⊢ Nat.succ i ≠ 0 → m (f (Nat.succ i)) = 0
[PROOFSTEP]
simp [m_empty]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s t : Set α
h : ∀ (u : Set α), Set.Nonempty (s ∩ u) → Set.Nonempty (t ∩ u) → m u = ⊤
⊢ ↑(OuterMeasure.ofFunction m m_empty) (s ∪ t) =
    ↑(OuterMeasure.ofFunction m m_empty) s + ↑(OuterMeasure.ofFunction m m_empty) t
[PROOFSTEP]
refine' le_antisymm (OuterMeasure.union _ _ _) (le_iInf fun f => le_iInf fun hf => _)
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s t : Set α
h : ∀ (u : Set α), Set.Nonempty (s ∩ u) → Set.Nonempty (t ∩ u) → m u = ⊤
f : ℕ → Set α
hf : s ∪ t ⊆ ⋃ (i : ℕ), f i
⊢ ↑(OuterMeasure.ofFunction m m_empty) s + ↑(OuterMeasure.ofFunction m m_empty) t ≤ ∑' (i : ℕ), m (f i)
[PROOFSTEP]
set μ := OuterMeasure.ofFunction m m_empty
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s t : Set α
h : ∀ (u : Set α), Set.Nonempty (s ∩ u) → Set.Nonempty (t ∩ u) → m u = ⊤
f : ℕ → Set α
hf : s ∪ t ⊆ ⋃ (i : ℕ), f i
μ : OuterMeasure α := OuterMeasure.ofFunction m m_empty
⊢ ↑μ s + ↑μ t ≤ ∑' (i : ℕ), m (f i)
[PROOFSTEP]
rcases Classical.em (∃ i, (s ∩ f i).Nonempty ∧ (t ∩ f i).Nonempty) with (⟨i, hs, ht⟩ | he)
[GOAL]
case inl.intro.intro
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s t : Set α
h : ∀ (u : Set α), Set.Nonempty (s ∩ u) → Set.Nonempty (t ∩ u) → m u = ⊤
f : ℕ → Set α
hf : s ∪ t ⊆ ⋃ (i : ℕ), f i
μ : OuterMeasure α := OuterMeasure.ofFunction m m_empty
i : ℕ
hs : Set.Nonempty (s ∩ f i)
ht : Set.Nonempty (t ∩ f i)
⊢ ↑μ s + ↑μ t ≤ ∑' (i : ℕ), m (f i)
[PROOFSTEP]
calc
  μ s + μ t ≤ ∞ := le_top
  _ = m (f i) := (h (f i) hs ht).symm
  _ ≤ ∑' i, m (f i) := ENNReal.le_tsum i
[GOAL]
case inr
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s t : Set α
h : ∀ (u : Set α), Set.Nonempty (s ∩ u) → Set.Nonempty (t ∩ u) → m u = ⊤
f : ℕ → Set α
hf : s ∪ t ⊆ ⋃ (i : ℕ), f i
μ : OuterMeasure α := OuterMeasure.ofFunction m m_empty
he : ¬∃ i, Set.Nonempty (s ∩ f i) ∧ Set.Nonempty (t ∩ f i)
⊢ ↑μ s + ↑μ t ≤ ∑' (i : ℕ), m (f i)
[PROOFSTEP]
set I := fun s => {i : ℕ | (s ∩ f i).Nonempty}
[GOAL]
case inr
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s t : Set α
h : ∀ (u : Set α), Set.Nonempty (s ∩ u) → Set.Nonempty (t ∩ u) → m u = ⊤
f : ℕ → Set α
hf : s ∪ t ⊆ ⋃ (i : ℕ), f i
μ : OuterMeasure α := OuterMeasure.ofFunction m m_empty
he : ¬∃ i, Set.Nonempty (s ∩ f i) ∧ Set.Nonempty (t ∩ f i)
I : Set α → Set ℕ := fun s => {i | Set.Nonempty (s ∩ f i)}
⊢ ↑μ s + ↑μ t ≤ ∑' (i : ℕ), m (f i)
[PROOFSTEP]
have hd : Disjoint (I s) (I t) := disjoint_iff_inf_le.mpr fun i hi => he ⟨i, hi⟩
[GOAL]
case inr
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s t : Set α
h : ∀ (u : Set α), Set.Nonempty (s ∩ u) → Set.Nonempty (t ∩ u) → m u = ⊤
f : ℕ → Set α
hf : s ∪ t ⊆ ⋃ (i : ℕ), f i
μ : OuterMeasure α := OuterMeasure.ofFunction m m_empty
he : ¬∃ i, Set.Nonempty (s ∩ f i) ∧ Set.Nonempty (t ∩ f i)
I : Set α → Set ℕ := fun s => {i | Set.Nonempty (s ∩ f i)}
hd : Disjoint (I s) (I t)
⊢ ↑μ s + ↑μ t ≤ ∑' (i : ℕ), m (f i)
[PROOFSTEP]
have hI : ∀ (u) (_ : u ⊆ s ∪ t), μ u ≤ ∑' i : I u, μ (f i) := fun u hu =>
  calc
    μ u ≤ μ (⋃ i : I u, f i) :=
      μ.mono fun x hx =>
        let ⟨i, hi⟩ := mem_iUnion.1 (hf (hu hx))
        mem_iUnion.2 ⟨⟨i, ⟨x, hx, hi⟩⟩, hi⟩
    _ ≤ ∑' i : I u, μ (f i) := μ.iUnion _
[GOAL]
case inr
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s t : Set α
h : ∀ (u : Set α), Set.Nonempty (s ∩ u) → Set.Nonempty (t ∩ u) → m u = ⊤
f : ℕ → Set α
hf : s ∪ t ⊆ ⋃ (i : ℕ), f i
μ : OuterMeasure α := OuterMeasure.ofFunction m m_empty
he : ¬∃ i, Set.Nonempty (s ∩ f i) ∧ Set.Nonempty (t ∩ f i)
I : Set α → Set ℕ := fun s => {i | Set.Nonempty (s ∩ f i)}
hd : Disjoint (I s) (I t)
hI : ∀ (u : Set α), u ⊆ s ∪ t → ↑μ u ≤ ∑' (i : ↑(I u)), ↑μ (f ↑i)
⊢ ↑μ s + ↑μ t ≤ ∑' (i : ℕ), m (f i)
[PROOFSTEP]
calc
  μ s + μ t ≤ (∑' i : I s, μ (f i)) + ∑' i : I t, μ (f i) :=
    add_le_add (hI _ <| subset_union_left _ _) (hI _ <| subset_union_right _ _)
  _ = ∑' i : ↑(I s ∪ I t), μ (f i) :=
    (tsum_union_disjoint (f := fun i => μ (f i)) hd ENNReal.summable ENNReal.summable).symm
  _ ≤ ∑' i, μ (f i) :=
    (tsum_le_tsum_of_inj (↑) Subtype.coe_injective (fun _ _ => zero_le _) (fun _ => le_rfl) ENNReal.summable
      ENNReal.summable)
  _ ≤ ∑' i, m (f i) := ENNReal.tsum_le_tsum fun i => ofFunction_le _
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type ?u.151391
f : β → α
h : Monotone m ∨ Surjective f
⊢ (fun s => m (f '' s)) ∅ = 0
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type ?u.151391
f : β → α
h : Monotone m ∨ Surjective f
⊢ m ∅ = 0
[PROOFSTEP]
simp [m_empty]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : β → α
h : Monotone m ∨ Surjective f
⊢ ↑(comap f) (OuterMeasure.ofFunction m m_empty) =
    OuterMeasure.ofFunction (fun s => m (f '' s)) (_ : (fun s => m (f '' s)) ∅ = 0)
[PROOFSTEP]
refine' le_antisymm (le_ofFunction.2 fun s => _) fun s => _
[GOAL]
case refine'_1
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : β → α
h : Monotone m ∨ Surjective f
s : Set β
⊢ ↑(↑(comap f) (OuterMeasure.ofFunction m m_empty)) s ≤ m (f '' s)
[PROOFSTEP]
rw [comap_apply]
[GOAL]
case refine'_1
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : β → α
h : Monotone m ∨ Surjective f
s : Set β
⊢ ↑(OuterMeasure.ofFunction m m_empty) (f '' s) ≤ m (f '' s)
[PROOFSTEP]
apply ofFunction_le
[GOAL]
case refine'_2
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : β → α
h : Monotone m ∨ Surjective f
s : Set β
⊢ ↑(OuterMeasure.ofFunction (fun s => m (f '' s)) (_ : (fun s => m (f '' s)) ∅ = 0)) s ≤
    ↑(↑(comap f) (OuterMeasure.ofFunction m m_empty)) s
[PROOFSTEP]
rw [comap_apply, ofFunction_apply, ofFunction_apply]
[GOAL]
case refine'_2
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : β → α
h : Monotone m ∨ Surjective f
s : Set β
⊢ ⨅ (t : ℕ → Set β) (_ : s ⊆ iUnion t), ∑' (n : ℕ), m (f '' t n) ≤
    ⨅ (t : ℕ → Set α) (_ : f '' s ⊆ iUnion t), ∑' (n : ℕ), m (t n)
[PROOFSTEP]
refine' iInf_mono' fun t => ⟨fun k => f ⁻¹' t k, _⟩
[GOAL]
case refine'_2
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : β → α
h : Monotone m ∨ Surjective f
s : Set β
t : ℕ → Set α
⊢ ⨅ (_ : s ⊆ ⋃ (k : ℕ), f ⁻¹' t k), ∑' (n : ℕ), m (f '' (fun k => f ⁻¹' t k) n) ≤
    ⨅ (_ : f '' s ⊆ iUnion t), ∑' (n : ℕ), m (t n)
[PROOFSTEP]
refine' iInf_mono' fun ht => _
[GOAL]
case refine'_2
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : β → α
h : Monotone m ∨ Surjective f
s : Set β
t : ℕ → Set α
ht : f '' s ⊆ iUnion t
⊢ ∃ i, ∑' (n : ℕ), m (f '' (fun k => f ⁻¹' t k) n) ≤ ∑' (n : ℕ), m (t n)
[PROOFSTEP]
rw [Set.image_subset_iff, preimage_iUnion] at ht 
[GOAL]
case refine'_2
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : β → α
h : Monotone m ∨ Surjective f
s : Set β
t : ℕ → Set α
ht : s ⊆ ⋃ (i : ℕ), f ⁻¹' t i
⊢ ∃ i, ∑' (n : ℕ), m (f '' (fun k => f ⁻¹' t k) n) ≤ ∑' (n : ℕ), m (t n)
[PROOFSTEP]
refine' ⟨ht, ENNReal.tsum_le_tsum fun n => _⟩
[GOAL]
case refine'_2
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : β → α
h : Monotone m ∨ Surjective f
s : Set β
t : ℕ → Set α
ht : s ⊆ ⋃ (i : ℕ), f ⁻¹' t i
n : ℕ
⊢ m (f '' (fun k => f ⁻¹' t k) n) ≤ m (t n)
[PROOFSTEP]
cases' h with hl hr
[GOAL]
case refine'_2.inl
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : β → α
s : Set β
t : ℕ → Set α
ht : s ⊆ ⋃ (i : ℕ), f ⁻¹' t i
n : ℕ
hl : Monotone m
⊢ m (f '' (fun k => f ⁻¹' t k) n) ≤ m (t n)
case refine'_2.inr
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : β → α
s : Set β
t : ℕ → Set α
ht : s ⊆ ⋃ (i : ℕ), f ⁻¹' t i
n : ℕ
hr : Surjective f
⊢ m (f '' (fun k => f ⁻¹' t k) n) ≤ m (t n)
[PROOFSTEP]
exacts [hl (image_preimage_subset _ _), (congr_arg m (hr.image_preimage (t n))).le]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : α → β
s : Set β
⊢ ↑(↑(map f) (OuterMeasure.ofFunction m m_empty)) s ≤ m (f ⁻¹' s)
[PROOFSTEP]
rw [map_apply]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : α → β
s : Set β
⊢ ↑(OuterMeasure.ofFunction m m_empty) (f ⁻¹' s) ≤ m (f ⁻¹' s)
[PROOFSTEP]
apply ofFunction_le
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : α → β
hf : Injective f
⊢ ↑(map f) (OuterMeasure.ofFunction m m_empty) = OuterMeasure.ofFunction (fun s => m (f ⁻¹' s)) m_empty
[PROOFSTEP]
refine' (map_ofFunction_le _).antisymm fun s => _
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : α → β
hf : Injective f
s : Set β
⊢ ↑(OuterMeasure.ofFunction (fun s => m (f ⁻¹' s)) m_empty) s ≤ ↑(↑(map f) (OuterMeasure.ofFunction m m_empty)) s
[PROOFSTEP]
simp only [ofFunction_apply, map_apply, le_iInf_iff]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : α → β
hf : Injective f
s : Set β
⊢ ∀ (i : ℕ → Set α),
    f ⁻¹' s ⊆ iUnion i → ⨅ (t : ℕ → Set β) (_ : s ⊆ iUnion t), ∑' (n : ℕ), m (f ⁻¹' t n) ≤ ∑' (n : ℕ), m (i n)
[PROOFSTEP]
intro t ht
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : α → β
hf : Injective f
s : Set β
t : ℕ → Set α
ht : f ⁻¹' s ⊆ iUnion t
⊢ ⨅ (t : ℕ → Set β) (_ : s ⊆ iUnion t), ∑' (n : ℕ), m (f ⁻¹' t n) ≤ ∑' (n : ℕ), m (t n)
[PROOFSTEP]
refine' iInf_le_of_le (fun n => (range f)ᶜ ∪ f '' t n) (iInf_le_of_le _ _)
[GOAL]
case refine'_1
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : α → β
hf : Injective f
s : Set β
t : ℕ → Set α
ht : f ⁻¹' s ⊆ iUnion t
⊢ s ⊆ ⋃ (n : ℕ), (range f)ᶜ ∪ f '' t n
[PROOFSTEP]
rw [← union_iUnion, ← inter_subset, ← image_preimage_eq_inter_range, ← image_iUnion]
[GOAL]
case refine'_1
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : α → β
hf : Injective f
s : Set β
t : ℕ → Set α
ht : f ⁻¹' s ⊆ iUnion t
⊢ f '' (f ⁻¹' s) ⊆ f '' ⋃ (i : ℕ), t i
[PROOFSTEP]
exact image_subset _ ht
[GOAL]
case refine'_2
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : α → β
hf : Injective f
s : Set β
t : ℕ → Set α
ht : f ⁻¹' s ⊆ iUnion t
⊢ ∑' (n : ℕ), m (f ⁻¹' (fun n => (range f)ᶜ ∪ f '' t n) n) ≤ ∑' (n : ℕ), m (t n)
[PROOFSTEP]
refine' ENNReal.tsum_le_tsum fun n => le_of_eq _
[GOAL]
case refine'_2
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
β : Type u_2
f : α → β
hf : Injective f
s : Set β
t : ℕ → Set α
ht : f ⁻¹' s ⊆ iUnion t
n : ℕ
⊢ m (f ⁻¹' (fun n => (range f)ᶜ ∪ f '' t n) n) = m (t n)
[PROOFSTEP]
simp [hf.preimage_image]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s : Set α
hm : Monotone m
⊢ (fun t => m (t ∩ s)) ∅ = 0
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s : Set α
hm : Monotone m
⊢ m ∅ = 0
[PROOFSTEP]
simp [m_empty]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s : Set α
hm : Monotone m
⊢ ↑(restrict s) (OuterMeasure.ofFunction m m_empty) =
    OuterMeasure.ofFunction (fun t => m (t ∩ s)) (_ : (fun t => m (t ∩ s)) ∅ = 0)
[PROOFSTEP]
rw [restrict]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s : Set α
hm : Monotone m
⊢ ↑(LinearMap.comp (map Subtype.val) (comap Subtype.val)) (OuterMeasure.ofFunction m m_empty) =
    OuterMeasure.ofFunction (fun t => m (t ∩ s)) (_ : (fun t => m (t ∩ s)) ∅ = 0)
[PROOFSTEP]
simp only [LinearMap.comp_apply]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s : Set α
hm : Monotone m
⊢ ↑(map Subtype.val) (↑(comap Subtype.val) (OuterMeasure.ofFunction m m_empty)) =
    OuterMeasure.ofFunction (fun t => m (t ∩ s)) (_ : (fun t => m (t ∩ s)) ∅ = 0)
[PROOFSTEP]
rw [comap_ofFunction _ (Or.inl hm)]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s : Set α
hm : Monotone m
⊢ ↑(map Subtype.val)
      (OuterMeasure.ofFunction (fun s_1 => m (Subtype.val '' s_1)) (_ : (fun s_1 => m (Subtype.val '' s_1)) ∅ = 0)) =
    OuterMeasure.ofFunction (fun t => m (t ∩ s)) (_ : (fun t => m (t ∩ s)) ∅ = 0)
[PROOFSTEP]
simp only [map_ofFunction Subtype.coe_injective, Subtype.image_preimage_coe]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
c : ℝ≥0∞
hc : c ≠ ⊤
⊢ (c • m) ∅ = 0
[PROOFSTEP]
simp [m_empty]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
c : ℝ≥0∞
hc : c ≠ ⊤
⊢ c • OuterMeasure.ofFunction m m_empty = OuterMeasure.ofFunction (c • m) (_ : c • m ∅ = 0)
[PROOFSTEP]
ext1 s
[GOAL]
case h
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
c : ℝ≥0∞
hc : c ≠ ⊤
s : Set α
⊢ ↑(c • OuterMeasure.ofFunction m m_empty) s = ↑(OuterMeasure.ofFunction (c • m) (_ : c • m ∅ = 0)) s
[PROOFSTEP]
haveI : Nonempty { t : ℕ → Set α // s ⊆ ⋃ i, t i } := ⟨⟨fun _ => s, subset_iUnion (fun _ => s) 0⟩⟩
[GOAL]
case h
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
c : ℝ≥0∞
hc : c ≠ ⊤
s : Set α
this : Nonempty { t // s ⊆ ⋃ (i : ℕ), t i }
⊢ ↑(c • OuterMeasure.ofFunction m m_empty) s = ↑(OuterMeasure.ofFunction (c • m) (_ : c • m ∅ = 0)) s
[PROOFSTEP]
simp only [smul_apply, ofFunction_apply, ENNReal.tsum_mul_left, Pi.smul_apply, smul_eq_mul, iInf_subtype']
[GOAL]
case h
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
c : ℝ≥0∞
hc : c ≠ ⊤
s : Set α
this : Nonempty { t // s ⊆ ⋃ (i : ℕ), t i }
⊢ c * ⨅ (x : { i // s ⊆ iUnion i }), ∑' (n : ℕ), m (↑x n) = ⨅ (x : { i // s ⊆ iUnion i }), c * ∑' (i : ℕ), m (↑x i)
[PROOFSTEP]
rw [ENNReal.iInf_mul_left fun h => (hc h).elim]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
⊢ (fun s => ⨆ (_ : Set.Nonempty s), m s) ∅ = 0
[PROOFSTEP]
simp [Set.not_nonempty_empty]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s : Set α
⊢ ↑(boundedBy m) s = ↑(OuterMeasure.ofFunction m m_empty) s
[PROOFSTEP]
have : (fun s : Set α => ⨆ _ : s.Nonempty, m s) = m := by
  ext1 t
  cases' t.eq_empty_or_nonempty with h h <;> simp [h, Set.not_nonempty_empty, m_empty]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s : Set α
⊢ (fun s => ⨆ (_ : Set.Nonempty s), m s) = m
[PROOFSTEP]
ext1 t
[GOAL]
case h
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s t : Set α
⊢ ⨆ (_ : Set.Nonempty t), m t = m t
[PROOFSTEP]
cases' t.eq_empty_or_nonempty with h h
[GOAL]
case h.inl
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s t : Set α
h : t = ∅
⊢ ⨆ (_ : Set.Nonempty t), m t = m t
[PROOFSTEP]
simp [h, Set.not_nonempty_empty, m_empty]
[GOAL]
case h.inr
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s t : Set α
h : Set.Nonempty t
⊢ ⨆ (_ : Set.Nonempty t), m t = m t
[PROOFSTEP]
simp [h, Set.not_nonempty_empty, m_empty]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
m_empty : m ∅ = 0
s : Set α
this : (fun s => ⨆ (_ : Set.Nonempty s), m s) = m
⊢ ↑(boundedBy m) s = ↑(OuterMeasure.ofFunction m m_empty) s
[PROOFSTEP]
simp [boundedBy, this]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
⊢ ↑(boundedBy m) s = ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨆ (_ : Set.Nonempty (t n)), m (t n)
[PROOFSTEP]
simp [boundedBy, ofFunction_apply]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
m_empty : m ∅ = 0
m_mono : ∀ ⦃t : Set α⦄, s ⊆ t → m s ≤ m t
m_subadd : ∀ (s : ℕ → Set α), m (⋃ (i : ℕ), s i) ≤ ∑' (i : ℕ), m (s i)
⊢ ↑(boundedBy m) s = m s
[PROOFSTEP]
rw [boundedBy_eq_ofFunction m_empty, ofFunction_eq s m_mono m_subadd]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
μ : OuterMeasure α
⊢ μ ≤ boundedBy m ↔ ∀ (s : Set α), ↑μ s ≤ m s
[PROOFSTEP]
rw [boundedBy, le_ofFunction, forall_congr']
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
μ : OuterMeasure α
⊢ ∀ (a : Set α), ↑μ a ≤ ⨆ (_ : Set.Nonempty a), m a ↔ ↑μ a ≤ m a
[PROOFSTEP]
intro s
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
μ : OuterMeasure α
s : Set α
⊢ ↑μ s ≤ ⨆ (_ : Set.Nonempty s), m s ↔ ↑μ s ≤ m s
[PROOFSTEP]
cases' s.eq_empty_or_nonempty with h h
[GOAL]
case inl
α : Type u_1
m : Set α → ℝ≥0∞
μ : OuterMeasure α
s : Set α
h : s = ∅
⊢ ↑μ s ≤ ⨆ (_ : Set.Nonempty s), m s ↔ ↑μ s ≤ m s
[PROOFSTEP]
simp [h, Set.not_nonempty_empty]
[GOAL]
case inr
α : Type u_1
m : Set α → ℝ≥0∞
μ : OuterMeasure α
s : Set α
h : Set.Nonempty s
⊢ ↑μ s ≤ ⨆ (_ : Set.Nonempty s), m s ↔ ↑μ s ≤ m s
[PROOFSTEP]
simp [h, Set.not_nonempty_empty]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
μ : OuterMeasure α
⊢ μ ≤ boundedBy m ↔ ∀ (s : Set α), Set.Nonempty s → ↑μ s ≤ m s
[PROOFSTEP]
rw [le_boundedBy, forall_congr']
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
μ : OuterMeasure α
⊢ ∀ (a : Set α), ↑μ a ≤ m a ↔ Set.Nonempty a → ↑μ a ≤ m a
[PROOFSTEP]
intro s
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
μ : OuterMeasure α
s : Set α
⊢ ↑μ s ≤ m s ↔ Set.Nonempty s → ↑μ s ≤ m s
[PROOFSTEP]
cases' s.eq_empty_or_nonempty with h h
[GOAL]
case inl
α : Type u_1
m : Set α → ℝ≥0∞
μ : OuterMeasure α
s : Set α
h : s = ∅
⊢ ↑μ s ≤ m s ↔ Set.Nonempty s → ↑μ s ≤ m s
[PROOFSTEP]
simp [h]
[GOAL]
case inr
α : Type u_1
m : Set α → ℝ≥0∞
μ : OuterMeasure α
s : Set α
h : Set.Nonempty s
⊢ ↑μ s ≤ m s ↔ Set.Nonempty s → ↑μ s ≤ m s
[PROOFSTEP]
simp [h]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
⊢ boundedBy ⊤ = ⊤
[PROOFSTEP]
rw [eq_top_iff, le_boundedBy']
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
⊢ ∀ (s : Set α), Set.Nonempty s → ↑⊤ s ≤ ⊤ s
[PROOFSTEP]
intro s hs
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
hs : Set.Nonempty s
⊢ ↑⊤ s ≤ ⊤ s
[PROOFSTEP]
rw [top_apply hs]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
hs : Set.Nonempty s
⊢ ⊤ ≤ ⊤ s
[PROOFSTEP]
exact le_rfl
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
⊢ boundedBy 0 = 0
[PROOFSTEP]
rw [← coe_bot, eq_bot_iff]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
⊢ boundedBy 0 ≤ ⊥
[PROOFSTEP]
apply boundedBy_le
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
c : ℝ≥0∞
hc : c ≠ ⊤
⊢ c • boundedBy m = boundedBy (c • m)
[PROOFSTEP]
simp only [boundedBy, smul_ofFunction hc]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
c : ℝ≥0∞
hc : c ≠ ⊤
⊢ OuterMeasure.ofFunction (c • fun s => ⨆ (_ : Set.Nonempty s), m s) (_ : c • ⨆ (_ : Set.Nonempty ∅), m ∅ = 0) =
    OuterMeasure.ofFunction (fun s => ⨆ (_ : Set.Nonempty s), (c • m) s) (_ : ⨆ (_ : Set.Nonempty ∅), (c • m) ∅ = 0)
[PROOFSTEP]
congr 1 with s : 1
[GOAL]
case e_m.h
α : Type u_1
m : Set α → ℝ≥0∞
c : ℝ≥0∞
hc : c ≠ ⊤
s : Set α
⊢ (c • fun s => ⨆ (_ : Set.Nonempty s), m s) s = ⨆ (_ : Set.Nonempty s), (c • m) s
[PROOFSTEP]
rcases s.eq_empty_or_nonempty with (rfl | hs)
[GOAL]
case e_m.h.inl
α : Type u_1
m : Set α → ℝ≥0∞
c : ℝ≥0∞
hc : c ≠ ⊤
⊢ (c • fun s => ⨆ (_ : Set.Nonempty s), m s) ∅ = ⨆ (_ : Set.Nonempty ∅), (c • m) ∅
[PROOFSTEP]
simp [*]
[GOAL]
case e_m.h.inr
α : Type u_1
m : Set α → ℝ≥0∞
c : ℝ≥0∞
hc : c ≠ ⊤
s : Set α
hs : Set.Nonempty s
⊢ (c • fun s => ⨆ (_ : Set.Nonempty s), m s) s = ⨆ (_ : Set.Nonempty s), (c • m) s
[PROOFSTEP]
simp [*]
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
β : Type u_2
f : β → α
h : (Monotone fun s => m ↑s) ∨ Surjective f
⊢ ↑(comap f) (boundedBy m) = boundedBy fun s => m (f '' s)
[PROOFSTEP]
refine' (comap_ofFunction _ _).trans _
[GOAL]
case refine'_1
α : Type u_1
m : Set α → ℝ≥0∞
β : Type u_2
f : β → α
h : (Monotone fun s => m ↑s) ∨ Surjective f
⊢ (Monotone fun s => ⨆ (_ : Set.Nonempty s), m s) ∨ Surjective f
[PROOFSTEP]
refine' h.imp (fun H s t hst => iSup_le fun hs => _) id
[GOAL]
case refine'_1
α : Type u_1
m : Set α → ℝ≥0∞
β : Type u_2
f : β → α
h : (Monotone fun s => m ↑s) ∨ Surjective f
H : Monotone fun s => m ↑s
s t : Set α
hst : s ≤ t
hs : Set.Nonempty s
⊢ m s ≤ (fun s => ⨆ (_ : Set.Nonempty s), m s) t
[PROOFSTEP]
have ht : t.Nonempty := hs.mono hst
[GOAL]
case refine'_1
α : Type u_1
m : Set α → ℝ≥0∞
β : Type u_2
f : β → α
h : (Monotone fun s => m ↑s) ∨ Surjective f
H : Monotone fun s => m ↑s
s t : Set α
hst : s ≤ t
hs : Set.Nonempty s
ht : Set.Nonempty t
⊢ m s ≤ (fun s => ⨆ (_ : Set.Nonempty s), m s) t
[PROOFSTEP]
exact (@H ⟨s, hs⟩ ⟨t, ht⟩ hst).trans (le_iSup (fun _ : t.Nonempty => m t) ht)
[GOAL]
case refine'_2
α : Type u_1
m : Set α → ℝ≥0∞
β : Type u_2
f : β → α
h : (Monotone fun s => m ↑s) ∨ Surjective f
⊢ OuterMeasure.ofFunction (fun s => ⨆ (_ : Set.Nonempty (f '' s)), m (f '' s))
      (_ : (fun s => ⨆ (_ : Set.Nonempty (f '' s)), m (f '' s)) ∅ = 0) =
    boundedBy fun s => m (f '' s)
[PROOFSTEP]
dsimp only [boundedBy]
[GOAL]
case refine'_2
α : Type u_1
m : Set α → ℝ≥0∞
β : Type u_2
f : β → α
h : (Monotone fun s => m ↑s) ∨ Surjective f
⊢ OuterMeasure.ofFunction (fun s => ⨆ (_ : Set.Nonempty (f '' s)), m (f '' s))
      (_ : ⨆ (_ : Set.Nonempty (f '' ∅)), m (f '' ∅) = 0) =
    OuterMeasure.ofFunction (fun s => ⨆ (_ : Set.Nonempty s), m (f '' s)) (_ : ⨆ (_ : Set.Nonempty ∅), m (f '' ∅) = 0)
[PROOFSTEP]
congr with s : 1
[GOAL]
case refine'_2.e_m.h
α : Type u_1
m : Set α → ℝ≥0∞
β : Type u_2
f : β → α
h : (Monotone fun s => m ↑s) ∨ Surjective f
s : Set β
⊢ ⨆ (_ : Set.Nonempty (f '' s)), m (f '' s) = ⨆ (_ : Set.Nonempty s), m (f '' s)
[PROOFSTEP]
rw [nonempty_image_iff]
[GOAL]
α : Type u
m : OuterMeasure α
s s₁ s₂ : Set α
⊢ IsCaratheodory m ∅
[PROOFSTEP]
simp [IsCaratheodory, m.empty, diff_empty]
[GOAL]
α : Type u
m : OuterMeasure α
s s₁ s₂ : Set α
⊢ IsCaratheodory m s₁ → IsCaratheodory m s₁ᶜ
[PROOFSTEP]
simp [IsCaratheodory, diff_eq, add_comm]
[GOAL]
α : Type u
m : OuterMeasure α
s s₁ s₂ : Set α
h : IsCaratheodory m sᶜ
⊢ IsCaratheodory m s
[PROOFSTEP]
simpa using isCaratheodory_compl m h
[GOAL]
α : Type u
m : OuterMeasure α
s s₁ s₂ : Set α
h₁ : IsCaratheodory m s₁
h₂ : IsCaratheodory m s₂
t : Set α
⊢ ↑m t = ↑m (t ∩ (s₁ ∪ s₂)) + ↑m (t \ (s₁ ∪ s₂))
[PROOFSTEP]
rw [h₁ t, h₂ (t ∩ s₁), h₂ (t \ s₁), h₁ (t ∩ (s₁ ∪ s₂)), inter_diff_assoc _ _ s₁, Set.inter_assoc _ _ s₁,
  inter_eq_self_of_subset_right (Set.subset_union_left _ _), union_diff_left, h₂ (t ∩ s₁)]
[GOAL]
α : Type u
m : OuterMeasure α
s s₁ s₂ : Set α
h₁ : IsCaratheodory m s₁
h₂ : IsCaratheodory m s₂
t : Set α
⊢ ↑m (t ∩ s₁ ∩ s₂) + ↑m ((t ∩ s₁) \ s₂) + (↑m (t \ s₁ ∩ s₂) + ↑m ((t \ s₁) \ s₂)) =
    ↑m (t ∩ s₁ ∩ s₂) + ↑m ((t ∩ s₁) \ s₂) + ↑m (t ∩ (s₂ \ s₁)) + ↑m (t \ (s₁ ∪ s₂))
[PROOFSTEP]
simp [diff_eq, add_assoc]
[GOAL]
α : Type u
m : OuterMeasure α
s s₁ s₂ : Set α
h : s₁ ∩ s₂ ⊆ ∅
h₁ : IsCaratheodory m s₁
t : Set α
⊢ ↑m (t ∩ (s₁ ∪ s₂)) = ↑m (t ∩ s₁) + ↑m (t ∩ s₂)
[PROOFSTEP]
rw [h₁, Set.inter_assoc, Set.union_inter_cancel_left, inter_diff_assoc, union_diff_cancel_left h]
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
x✝ : ∀ (i : ℕ), i < 0 → IsCaratheodory m (s i)
⊢ IsCaratheodory m (⋃ (i : ℕ) (_ : i < 0), s i)
[PROOFSTEP]
simp [Nat.not_lt_zero]
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
n : ℕ
h : ∀ (i : ℕ), i < n + 1 → IsCaratheodory m (s i)
⊢ IsCaratheodory m (⋃ (i : ℕ) (_ : i < n + 1), s i)
[PROOFSTEP]
rw [biUnion_lt_succ]
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
n : ℕ
h : ∀ (i : ℕ), i < n + 1 → IsCaratheodory m (s i)
⊢ IsCaratheodory m ((⋃ (k : ℕ) (_ : k < n), s k) ∪ s n)
[PROOFSTEP]
exact
  isCaratheodory_union m (isCaratheodory_iUnion_lt fun i hi => h i <| lt_of_lt_of_le hi <| Nat.le_succ _)
    (h n (le_refl (n + 1)))
[GOAL]
α : Type u
m : OuterMeasure α
s s₁ s₂ : Set α
h₁ : IsCaratheodory m s₁
h₂ : IsCaratheodory m s₂
⊢ IsCaratheodory m (s₁ ∩ s₂)
[PROOFSTEP]
rw [← isCaratheodory_compl_iff, Set.compl_inter]
[GOAL]
α : Type u
m : OuterMeasure α
s s₁ s₂ : Set α
h₁ : IsCaratheodory m s₁
h₂ : IsCaratheodory m s₂
⊢ IsCaratheodory m (s₁ᶜ ∪ s₂ᶜ)
[PROOFSTEP]
exact isCaratheodory_union _ (isCaratheodory_compl _ h₁) (isCaratheodory_compl _ h₂)
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
t : Set α
⊢ ∑ i in Finset.range 0, ↑m (t ∩ s i) = ↑m (t ∩ ⋃ (i : ℕ) (_ : i < 0), s i)
[PROOFSTEP]
simp [Nat.not_lt_zero, m.empty]
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
t : Set α
n : ℕ
⊢ ∑ i in Finset.range (Nat.succ n), ↑m (t ∩ s i) = ↑m (t ∩ ⋃ (i : ℕ) (_ : i < Nat.succ n), s i)
[PROOFSTEP]
rw [biUnion_lt_succ, Finset.sum_range_succ, Set.union_comm, isCaratheodory_sum h hd, m.measure_inter_union _ (h n),
  add_comm]
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
t : Set α
n : ℕ
⊢ s n ∩ ⋃ (k : ℕ) (_ : k < n), s k ⊆ ∅
[PROOFSTEP]
intro a
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
t : Set α
n : ℕ
a : α
⊢ a ∈ s n ∩ ⋃ (k : ℕ) (_ : k < n), s k → a ∈ ∅
[PROOFSTEP]
simpa using fun (h₁ : a ∈ s n) i (hi : i < n) h₂ => (hd (ne_of_gt hi)).le_bot ⟨h₁, h₂⟩
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
⊢ IsCaratheodory m (⋃ (i : ℕ), s i)
[PROOFSTEP]
apply (isCaratheodory_iff_le' m).mpr
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
⊢ ∀ (t : Set α), ↑m (t ∩ ⋃ (i : ℕ), s i) + ↑m (t \ ⋃ (i : ℕ), s i) ≤ ↑m t
[PROOFSTEP]
intro t
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
t : Set α
⊢ ↑m (t ∩ ⋃ (i : ℕ), s i) + ↑m (t \ ⋃ (i : ℕ), s i) ≤ ↑m t
[PROOFSTEP]
have hp : m (t ∩ ⋃ i, s i) ≤ ⨆ n, m (t ∩ ⋃ i < n, s i) :=
  by
  convert m.iUnion fun i => t ∩ s i using 1
  · simp [inter_iUnion]
  · simp [ENNReal.tsum_eq_iSup_nat, isCaratheodory_sum m h hd]
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
t : Set α
⊢ ↑m (t ∩ ⋃ (i : ℕ), s i) ≤ ⨆ (n : ℕ), ↑m (t ∩ ⋃ (i : ℕ) (_ : i < n), s i)
[PROOFSTEP]
convert m.iUnion fun i => t ∩ s i using 1
[GOAL]
case h.e'_3
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
t : Set α
⊢ ↑m (t ∩ ⋃ (i : ℕ), s i) = ↑m (⋃ (i : ℕ), t ∩ s i)
[PROOFSTEP]
simp [inter_iUnion]
[GOAL]
case h.e'_4
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
t : Set α
⊢ ⨆ (n : ℕ), ↑m (t ∩ ⋃ (i : ℕ) (_ : i < n), s i) = ∑' (i : ℕ), ↑m (t ∩ s i)
[PROOFSTEP]
simp [ENNReal.tsum_eq_iSup_nat, isCaratheodory_sum m h hd]
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
t : Set α
hp : ↑m (t ∩ ⋃ (i : ℕ), s i) ≤ ⨆ (n : ℕ), ↑m (t ∩ ⋃ (i : ℕ) (_ : i < n), s i)
⊢ ↑m (t ∩ ⋃ (i : ℕ), s i) + ↑m (t \ ⋃ (i : ℕ), s i) ≤ ↑m t
[PROOFSTEP]
refine' le_trans (add_le_add_right hp _) _
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
t : Set α
hp : ↑m (t ∩ ⋃ (i : ℕ), s i) ≤ ⨆ (n : ℕ), ↑m (t ∩ ⋃ (i : ℕ) (_ : i < n), s i)
⊢ (⨆ (n : ℕ), ↑m (t ∩ ⋃ (i : ℕ) (_ : i < n), s i)) + ↑m (t \ ⋃ (i : ℕ), s i) ≤ ↑m t
[PROOFSTEP]
rw [ENNReal.iSup_add]
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
t : Set α
hp : ↑m (t ∩ ⋃ (i : ℕ), s i) ≤ ⨆ (n : ℕ), ↑m (t ∩ ⋃ (i : ℕ) (_ : i < n), s i)
⊢ ⨆ (b : ℕ), ↑m (t ∩ ⋃ (i : ℕ) (_ : i < b), s i) + ↑m (t \ ⋃ (i : ℕ), s i) ≤ ↑m t
[PROOFSTEP]
refine' iSup_le fun n => le_trans (add_le_add_left _ _) (ge_of_eq (isCaratheodory_iUnion_lt m (fun i _ => h i) _))
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
t : Set α
hp : ↑m (t ∩ ⋃ (i : ℕ), s i) ≤ ⨆ (n : ℕ), ↑m (t ∩ ⋃ (i : ℕ) (_ : i < n), s i)
n : ℕ
⊢ ↑m (t \ ⋃ (i : ℕ), s i) ≤ ↑m (t \ ⋃ (i : ℕ) (_ : i < n), s i)
[PROOFSTEP]
refine' m.mono (diff_subset_diff_right _)
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
t : Set α
hp : ↑m (t ∩ ⋃ (i : ℕ), s i) ≤ ⨆ (n : ℕ), ↑m (t ∩ ⋃ (i : ℕ) (_ : i < n), s i)
n : ℕ
⊢ ⋃ (i : ℕ) (_ : i < n), s i ⊆ ⋃ (i : ℕ), s i
[PROOFSTEP]
exact iUnion₂_subset fun i _ => subset_iUnion _ i
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
⊢ ↑m (⋃ (i : ℕ), s i) = ∑' (i : ℕ), ↑m (s i)
[PROOFSTEP]
refine' le_antisymm (m.iUnion_nat s) _
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
⊢ ∑' (i : ℕ), ↑m (s i) ≤ ↑m (⋃ (i : ℕ), s i)
[PROOFSTEP]
rw [ENNReal.tsum_eq_iSup_nat]
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
⊢ ⨆ (i : ℕ), ∑ a in Finset.range i, ↑m (s a) ≤ ↑m (⋃ (i : ℕ), s i)
[PROOFSTEP]
refine' iSup_le fun n => _
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
n : ℕ
⊢ ∑ a in Finset.range n, ↑m (s a) ≤ ↑m (⋃ (i : ℕ), s i)
[PROOFSTEP]
have := @isCaratheodory_sum _ m _ h hd univ n
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
n : ℕ
this : ∑ i in Finset.range n, ↑m (univ ∩ s i) = ↑m (univ ∩ ⋃ (i : ℕ) (_ : i < n), s i)
⊢ ∑ a in Finset.range n, ↑m (s a) ≤ ↑m (⋃ (i : ℕ), s i)
[PROOFSTEP]
simp at this 
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
n : ℕ
this : ∑ x in Finset.range n, ↑m (s x) = ↑m (⋃ (i : ℕ) (_ : i < n), s i)
⊢ ∑ a in Finset.range n, ↑m (s a) ≤ ↑m (⋃ (i : ℕ), s i)
[PROOFSTEP]
simp [this]
[GOAL]
α : Type u
m : OuterMeasure α
s✝ s₁ s₂ : Set α
s : ℕ → Set α
h : ∀ (i : ℕ), IsCaratheodory m (s i)
hd : Pairwise (Disjoint on s)
n : ℕ
this : ∑ x in Finset.range n, ↑m (s x) = ↑m (⋃ (i : ℕ) (_ : i < n), s i)
⊢ ↑m (⋃ (i : ℕ) (_ : i < n), s i) ≤ ↑m (⋃ (i : ℕ), s i)
[PROOFSTEP]
exact m.mono (iUnion₂_subset fun i _ => subset_iUnion _ i)
[GOAL]
α : Type u
m : OuterMeasure α
s s₁ s₂ : Set α
f✝ : ℕ → Set α
f : Pairwise (Disjoint on f✝)
hf : ∀ (i : ℕ), IsCaratheodory m (f✝ i)
hn : Set α
⊢ ↑m hn = ↑m (hn ∩ ⋃ (i : ℕ), f✝ i) + ↑m (hn \ ⋃ (i : ℕ), f✝ i)
[PROOFSTEP]
apply isCaratheodory_iUnion_nat m hf f
[GOAL]
α : Type u
m : OuterMeasure α
s s₁ s₂ : Set α
⊢ MeasurableSpace α
[PROOFSTEP]
apply MeasurableSpace.DynkinSystem.toMeasurableSpace (caratheodoryDynkin m)
[GOAL]
α : Type u
m : OuterMeasure α
s s₁ s₂ : Set α
⊢ ∀ (s₁ s₂ : Set α),
    MeasurableSpace.DynkinSystem.Has (caratheodoryDynkin m) s₁ →
      MeasurableSpace.DynkinSystem.Has (caratheodoryDynkin m) s₂ →
        MeasurableSpace.DynkinSystem.Has (caratheodoryDynkin m) (s₁ ∩ s₂)
[PROOFSTEP]
intro s₁ s₂
[GOAL]
α : Type u
m : OuterMeasure α
s s₁✝ s₂✝ s₁ s₂ : Set α
⊢ MeasurableSpace.DynkinSystem.Has (caratheodoryDynkin m) s₁ →
    MeasurableSpace.DynkinSystem.Has (caratheodoryDynkin m) s₂ →
      MeasurableSpace.DynkinSystem.Has (caratheodoryDynkin m) (s₁ ∩ s₂)
[PROOFSTEP]
apply isCaratheodory_inter
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
⊢ MeasurableSet s
[PROOFSTEP]
apply (isCaratheodory_iff_le _).mpr
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
⊢ ∀ (t : Set α),
    ↑(OuterMeasure.ofFunction m h₀) (t ∩ s) + ↑(OuterMeasure.ofFunction m h₀) (t \ s) ≤
      ↑(OuterMeasure.ofFunction m h₀) t
[PROOFSTEP]
refine' fun t => le_iInf fun f => le_iInf fun hf => _
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
f : ℕ → Set α
hf : t ⊆ ⋃ (i : ℕ), f i
⊢ ↑(OuterMeasure.ofFunction m h₀) (t ∩ s) + ↑(OuterMeasure.ofFunction m h₀) (t \ s) ≤ ∑' (i : ℕ), m (f i)
[PROOFSTEP]
refine'
  le_trans
    (add_le_add ((iInf_le_of_le fun i => f i ∩ s) <| iInf_le _ _) ((iInf_le_of_le fun i => f i \ s) <| iInf_le _ _)) _
[GOAL]
case refine'_1
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
f : ℕ → Set α
hf : t ⊆ ⋃ (i : ℕ), f i
⊢ t ∩ s ⊆ ⋃ (i : ℕ), (fun i => f i ∩ s) i
[PROOFSTEP]
rw [← iUnion_inter]
[GOAL]
case refine'_1
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
f : ℕ → Set α
hf : t ⊆ ⋃ (i : ℕ), f i
⊢ t ∩ s ⊆ (⋃ (i : ℕ), f i) ∩ s
[PROOFSTEP]
exact inter_subset_inter_left _ hf
[GOAL]
case refine'_2
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
f : ℕ → Set α
hf : t ⊆ ⋃ (i : ℕ), f i
⊢ t \ s ⊆ ⋃ (i : ℕ), (fun i => f i \ s) i
[PROOFSTEP]
rw [← iUnion_diff]
[GOAL]
case refine'_2
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
f : ℕ → Set α
hf : t ⊆ ⋃ (i : ℕ), f i
⊢ t \ s ⊆ (⋃ (i : ℕ), f i) \ s
[PROOFSTEP]
exact diff_subset_diff_left hf
[GOAL]
case refine'_3
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
f : ℕ → Set α
hf : t ⊆ ⋃ (i : ℕ), f i
⊢ ∑' (i : ℕ), m ((fun i => f i ∩ s) i) + ∑' (i : ℕ), m ((fun i => f i \ s) i) ≤ ∑' (i : ℕ), m (f i)
[PROOFSTEP]
rw [← ENNReal.tsum_add]
[GOAL]
case refine'_3
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
f : ℕ → Set α
hf : t ⊆ ⋃ (i : ℕ), f i
⊢ ∑' (a : ℕ), (m ((fun i => f i ∩ s) a) + m ((fun i => f i \ s) a)) ≤ ∑' (i : ℕ), m (f i)
[PROOFSTEP]
exact ENNReal.tsum_le_tsum fun i => hs _
[GOAL]
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
⊢ MeasurableSet s
[PROOFSTEP]
apply ofFunction_caratheodory
[GOAL]
case hs
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
⊢ ∀ (t : Set α),
    (⨆ (_ : Set.Nonempty (t ∩ s)), m (t ∩ s)) + ⨆ (_ : Set.Nonempty (t \ s)), m (t \ s) ≤ ⨆ (_ : Set.Nonempty t), m t
[PROOFSTEP]
intro t
[GOAL]
case hs
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
⊢ (⨆ (_ : Set.Nonempty (t ∩ s)), m (t ∩ s)) + ⨆ (_ : Set.Nonempty (t \ s)), m (t \ s) ≤ ⨆ (_ : Set.Nonempty t), m t
[PROOFSTEP]
cases' t.eq_empty_or_nonempty with h h
[GOAL]
case hs.inl
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
h : t = ∅
⊢ (⨆ (_ : Set.Nonempty (t ∩ s)), m (t ∩ s)) + ⨆ (_ : Set.Nonempty (t \ s)), m (t \ s) ≤ ⨆ (_ : Set.Nonempty t), m t
[PROOFSTEP]
simp [h, Set.not_nonempty_empty]
[GOAL]
case hs.inr
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
h : Set.Nonempty t
⊢ (⨆ (_ : Set.Nonempty (t ∩ s)), m (t ∩ s)) + ⨆ (_ : Set.Nonempty (t \ s)), m (t \ s) ≤ ⨆ (_ : Set.Nonempty t), m t
[PROOFSTEP]
convert le_trans _ (hs t)
[GOAL]
case h.e'_4
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
h : Set.Nonempty t
⊢ ⨆ (_ : Set.Nonempty t), m t = m t
[PROOFSTEP]
simp [h]
[GOAL]
case hs.inr.convert_2
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
h : Set.Nonempty t
⊢ (⨆ (_ : Set.Nonempty (t ∩ s)), m (t ∩ s)) + ⨆ (_ : Set.Nonempty (t \ s)), m (t \ s) ≤ m (t ∩ s) + m (t \ s)
[PROOFSTEP]
exact add_le_add iSup_const_le iSup_const_le
[GOAL]
α : Type u_1
s : Set α
x✝ : MeasurableSet s
t : Set α
ht : t = ∅
⊢ ↑⊤ (t ∩ s) + ↑⊤ (t \ s) ≤ ↑⊤ t
[PROOFSTEP]
simp [ht]
[GOAL]
α : Type u_1
s : Set α
x✝ : MeasurableSet s
t : Set α
ht : Set.Nonempty t
⊢ ↑⊤ (t ∩ s) + ↑⊤ (t \ s) ≤ ↑⊤ t
[PROOFSTEP]
simp only [ht, top_apply, le_top]
[GOAL]
α : Type u_1
m₁ m₂ : OuterMeasure α
s : Set α
x✝ : MeasurableSet s
t : Set α
hs₁ : s ∈ (fun m => {t | MeasurableSet t}) (OuterMeasure.caratheodory m₁)
hs₂ : s ∈ (fun m => {t | MeasurableSet t}) (OuterMeasure.caratheodory m₂)
⊢ ↑(m₁ + m₂) t = ↑(m₁ + m₂) (t ∩ s) + ↑(m₁ + m₂) (t \ s)
[PROOFSTEP]
simp [hs₁ t, hs₂ t, add_left_comm, add_assoc]
[GOAL]
α : Type u_1
ι : Type u_2
m : ι → OuterMeasure α
s : Set α
h : MeasurableSet s
t : Set α
⊢ ↑(sum m) t = ↑(sum m) (t ∩ s) + ↑(sum m) (t \ s)
[PROOFSTEP]
simp [fun i => MeasurableSpace.measurableSet_iInf.1 h i t, ENNReal.tsum_add]
[GOAL]
α : Type u_1
a : ℝ≥0∞
m : OuterMeasure α
s : Set α
h : MeasurableSet s
t : Set α
⊢ ↑(a • m) t = ↑(a • m) (t ∩ s) + ↑(a • m) (t \ s)
[PROOFSTEP]
simp [smul_apply]
[GOAL]
α : Type u_1
a : ℝ≥0∞
m : OuterMeasure α
s : Set α
h : MeasurableSet s
t : Set α
⊢ a * ↑m t = a * ↑m (t ∩ s) + a * ↑m (t \ s)
[PROOFSTEP]
rw [(isCaratheodory_iff m).mp h t]
[GOAL]
α : Type u_1
a : ℝ≥0∞
m : OuterMeasure α
s : Set α
h : MeasurableSet s
t : Set α
⊢ a * (↑m (t ∩ s) + ↑m (t \ s)) = a * ↑m (t ∩ s) + a * ↑m (t \ s)
[PROOFSTEP]
simp [mul_add]
[GOAL]
α : Type u_1
a : α
s : Set α
x✝ : MeasurableSet s
t : Set α
⊢ ↑(dirac a) t = ↑(dirac a) (t ∩ s) + ↑(dirac a) (t \ s)
[PROOFSTEP]
by_cases ht : a ∈ t
[GOAL]
case pos
α : Type u_1
a : α
s : Set α
x✝ : MeasurableSet s
t : Set α
ht : a ∈ t
⊢ ↑(dirac a) t = ↑(dirac a) (t ∩ s) + ↑(dirac a) (t \ s)
case neg
α : Type u_1
a : α
s : Set α
x✝ : MeasurableSet s
t : Set α
ht : ¬a ∈ t
⊢ ↑(dirac a) t = ↑(dirac a) (t ∩ s) + ↑(dirac a) (t \ s)
[PROOFSTEP]
swap
[GOAL]
case neg
α : Type u_1
a : α
s : Set α
x✝ : MeasurableSet s
t : Set α
ht : ¬a ∈ t
⊢ ↑(dirac a) t = ↑(dirac a) (t ∩ s) + ↑(dirac a) (t \ s)
[PROOFSTEP]
simp [ht]
[GOAL]
case pos
α : Type u_1
a : α
s : Set α
x✝ : MeasurableSet s
t : Set α
ht : a ∈ t
⊢ ↑(dirac a) t = ↑(dirac a) (t ∩ s) + ↑(dirac a) (t \ s)
[PROOFSTEP]
by_cases hs : a ∈ s
[GOAL]
case pos
α : Type u_1
a : α
s : Set α
x✝ : MeasurableSet s
t : Set α
ht : a ∈ t
hs : a ∈ s
⊢ ↑(dirac a) t = ↑(dirac a) (t ∩ s) + ↑(dirac a) (t \ s)
[PROOFSTEP]
simp [*]
[GOAL]
case neg
α : Type u_1
a : α
s : Set α
x✝ : MeasurableSet s
t : Set α
ht : a ∈ t
hs : ¬a ∈ s
⊢ ↑(dirac a) t = ↑(dirac a) (t ∩ s) + ↑(dirac a) (t \ s)
[PROOFSTEP]
simp [*]
[GOAL]
α : Type u_1
m : Set (OuterMeasure α)
⊢ sInf m = boundedBy (sInfGen m)
[PROOFSTEP]
refine' le_antisymm _ _
[GOAL]
case refine'_1
α : Type u_1
m : Set (OuterMeasure α)
⊢ sInf m ≤ boundedBy (sInfGen m)
[PROOFSTEP]
refine' le_boundedBy.2 fun s => le_iInf₂ fun μ hμ => _
[GOAL]
case refine'_1
α : Type u_1
m : Set (OuterMeasure α)
s : Set α
μ : OuterMeasure α
hμ : μ ∈ m
⊢ ↑(sInf m) s ≤ ↑μ s
[PROOFSTEP]
apply sInf_le hμ
[GOAL]
case refine'_2
α : Type u_1
m : Set (OuterMeasure α)
⊢ boundedBy (sInfGen m) ≤ sInf m
[PROOFSTEP]
refine' le_sInf _
[GOAL]
case refine'_2
α : Type u_1
m : Set (OuterMeasure α)
⊢ ∀ (b : OuterMeasure α), b ∈ m → boundedBy (sInfGen m) ≤ b
[PROOFSTEP]
intro μ hμ t
[GOAL]
case refine'_2
α : Type u_1
m : Set (OuterMeasure α)
μ : OuterMeasure α
hμ : μ ∈ m
t : Set α
⊢ ↑(boundedBy (sInfGen m)) t ≤ ↑μ t
[PROOFSTEP]
refine' le_trans (boundedBy_le t) (iInf₂_le μ hμ)
[GOAL]
α : Type u_1
m : Set (OuterMeasure α)
h : Set.Nonempty m
t : Set α
⊢ ⨆ (_ : Set.Nonempty t), sInfGen m t = ⨅ (μ : OuterMeasure α) (_ : μ ∈ m), ↑μ t
[PROOFSTEP]
rcases t.eq_empty_or_nonempty with (rfl | ht)
[GOAL]
case inl
α : Type u_1
m : Set (OuterMeasure α)
h : Set.Nonempty m
⊢ ⨆ (_ : Set.Nonempty ∅), sInfGen m ∅ = ⨅ (μ : OuterMeasure α) (_ : μ ∈ m), ↑μ ∅
[PROOFSTEP]
rcases h with ⟨μ, hμ⟩
[GOAL]
case inl.intro
α : Type u_1
m : Set (OuterMeasure α)
μ : OuterMeasure α
hμ : μ ∈ m
⊢ ⨆ (_ : Set.Nonempty ∅), sInfGen m ∅ = ⨅ (μ : OuterMeasure α) (_ : μ ∈ m), ↑μ ∅
[PROOFSTEP]
rw [eq_false Set.not_nonempty_empty, iSup_false, eq_comm]
[GOAL]
case inl.intro
α : Type u_1
m : Set (OuterMeasure α)
μ : OuterMeasure α
hμ : μ ∈ m
⊢ ⨅ (μ : OuterMeasure α) (_ : μ ∈ m), ↑μ ∅ = ⊥
[PROOFSTEP]
simp_rw [empty']
[GOAL]
case inl.intro
α : Type u_1
m : Set (OuterMeasure α)
μ : OuterMeasure α
hμ : μ ∈ m
⊢ ⨅ (μ : OuterMeasure α) (_ : μ ∈ m), 0 = ⊥
[PROOFSTEP]
apply bot_unique
[GOAL]
case inl.intro.h
α : Type u_1
m : Set (OuterMeasure α)
μ : OuterMeasure α
hμ : μ ∈ m
⊢ ⨅ (μ : OuterMeasure α) (_ : μ ∈ m), 0 ≤ ⊥
[PROOFSTEP]
refine' iInf_le_of_le μ (iInf_le _ hμ)
[GOAL]
case inr
α : Type u_1
m : Set (OuterMeasure α)
h : Set.Nonempty m
t : Set α
ht : Set.Nonempty t
⊢ ⨆ (_ : Set.Nonempty t), sInfGen m t = ⨅ (μ : OuterMeasure α) (_ : μ ∈ m), ↑μ t
[PROOFSTEP]
simp [ht, sInfGen_def]
[GOAL]
α : Type u_1
m : Set (OuterMeasure α)
s : Set α
h : Set.Nonempty m
⊢ ↑(sInf m) s = ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (μ : OuterMeasure α) (_ : μ ∈ m), ↑μ (t n)
[PROOFSTEP]
simp_rw [sInf_eq_boundedBy_sInfGen, boundedBy_apply, iSup_sInfGen_nonempty h]
[GOAL]
α : Type u_1
m : Set (OuterMeasure α)
s : Set α
h : Set.Nonempty s
hm : m = ∅
⊢ ↑(sInf m) s = ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (μ : OuterMeasure α) (_ : μ ∈ m), ↑μ (t n)
[PROOFSTEP]
simp [hm, h]
[GOAL]
α : Type u_1
ι : Sort u_2
inst✝ : Nonempty ι
m : ι → OuterMeasure α
s : Set α
⊢ ↑(⨅ (i : ι), m i) s = ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (i : ι), ↑(m i) (t n)
[PROOFSTEP]
rw [iInf, sInf_apply (range_nonempty m)]
[GOAL]
α : Type u_1
ι : Sort u_2
inst✝ : Nonempty ι
m : ι → OuterMeasure α
s : Set α
⊢ ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (μ : OuterMeasure α) (_ : μ ∈ range m), ↑μ (t n) =
    ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (i : ι), ↑(m i) (t n)
[PROOFSTEP]
simp only [iInf_range]
[GOAL]
α : Type u_1
ι : Sort u_2
m : ι → OuterMeasure α
s : Set α
hs : Set.Nonempty s
⊢ ↑(⨅ (i : ι), m i) s = ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (i : ι), ↑(m i) (t n)
[PROOFSTEP]
rw [iInf, sInf_apply' hs]
[GOAL]
α : Type u_1
ι : Sort u_2
m : ι → OuterMeasure α
s : Set α
hs : Set.Nonempty s
⊢ ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (μ : OuterMeasure α) (_ : μ ∈ range fun i => m i), ↑μ (t n) =
    ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (i : ι), ↑(m i) (t n)
[PROOFSTEP]
simp only [iInf_range]
[GOAL]
α : Type u_1
ι : Type u_2
I : Set ι
hI : Set.Nonempty I
m : ι → OuterMeasure α
s : Set α
⊢ ↑(⨅ (i : ι) (_ : i ∈ I), m i) s =
    ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (i : ι) (_ : i ∈ I), ↑(m i) (t n)
[PROOFSTEP]
haveI := hI.to_subtype
[GOAL]
α : Type u_1
ι : Type u_2
I : Set ι
hI : Set.Nonempty I
m : ι → OuterMeasure α
s : Set α
this : Nonempty ↑I
⊢ ↑(⨅ (i : ι) (_ : i ∈ I), m i) s =
    ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (i : ι) (_ : i ∈ I), ↑(m i) (t n)
[PROOFSTEP]
simp only [← iInf_subtype'', iInf_apply]
[GOAL]
α : Type u_1
ι : Type u_2
I : Set ι
m : ι → OuterMeasure α
s : Set α
hs : Set.Nonempty s
⊢ ↑(⨅ (i : ι) (_ : i ∈ I), m i) s =
    ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (i : ι) (_ : i ∈ I), ↑(m i) (t n)
[PROOFSTEP]
simp only [← iInf_subtype'', iInf_apply' _ hs]
[GOAL]
α : Type u_1
ι : Sort u_2
β : Type u_3
f : α → β
m : ι → OuterMeasure β
⊢ ↑(comap f) (⨅ (i : ι), m i) = ⨅ (i : ι), ↑(comap f) (m i)
[PROOFSTEP]
refine' ext_nonempty fun s hs => _
[GOAL]
α : Type u_1
ι : Sort u_2
β : Type u_3
f : α → β
m : ι → OuterMeasure β
s : Set α
hs : Set.Nonempty s
⊢ ↑(↑(comap f) (⨅ (i : ι), m i)) s = ↑(⨅ (i : ι), ↑(comap f) (m i)) s
[PROOFSTEP]
refine' ((comap_mono f).map_iInf_le s).antisymm _
[GOAL]
α : Type u_1
ι : Sort u_2
β : Type u_3
f : α → β
m : ι → OuterMeasure β
s : Set α
hs : Set.Nonempty s
⊢ ↑(⨅ (i : ι), ↑(comap f) (m i)) s ≤ ↑(↑(comap f) (⨅ (i : ι), m i)) s
[PROOFSTEP]
simp only [comap_apply, iInf_apply' _ hs, iInf_apply' _ (hs.image _), le_iInf_iff, Set.image_subset_iff,
  preimage_iUnion]
[GOAL]
α : Type u_1
ι : Sort u_2
β : Type u_3
f : α → β
m : ι → OuterMeasure β
s : Set α
hs : Set.Nonempty s
⊢ ∀ (i : ℕ → Set β),
    s ⊆ ⋃ (i_1 : ℕ), f ⁻¹' i i_1 →
      ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (i : ι), ↑(m i) (f '' t n) ≤
        ∑' (n : ℕ), ⨅ (i_2 : ι), ↑(m i_2) (i n)
[PROOFSTEP]
refine' fun t ht => iInf_le_of_le _ (iInf_le_of_le ht <| ENNReal.tsum_le_tsum fun k => _)
[GOAL]
α : Type u_1
ι : Sort u_2
β : Type u_3
f : α → β
m : ι → OuterMeasure β
s : Set α
hs : Set.Nonempty s
t : ℕ → Set β
ht : s ⊆ ⋃ (i : ℕ), f ⁻¹' t i
k : ℕ
⊢ ⨅ (i : ι), ↑(m i) (f '' (f ⁻¹' t k)) ≤ ⨅ (i : ι), ↑(m i) (t k)
[PROOFSTEP]
exact iInf_mono fun i => (m i).mono (image_preimage_subset _ _)
[GOAL]
α : Type u_1
ι : Sort u_2
β : Type u_3
f : α → β
hf : Injective f
m : ι → OuterMeasure α
⊢ ↑(map f) (⨅ (i : ι), m i) = ↑(restrict (range f)) (⨅ (i : ι), ↑(map f) (m i))
[PROOFSTEP]
refine' Eq.trans _ (map_comap _ _)
[GOAL]
α : Type u_1
ι : Sort u_2
β : Type u_3
f : α → β
hf : Injective f
m : ι → OuterMeasure α
⊢ ↑(map f) (⨅ (i : ι), m i) = ↑(map f) (↑(comap f) (⨅ (i : ι), ↑(map f) (m i)))
[PROOFSTEP]
simp only [comap_iInf, comap_map hf]
[GOAL]
α : Type u_1
ι : Sort u_2
β : Type u_3
inst✝ : Nonempty ι
f : α → β
m : ι → OuterMeasure β
⊢ ↑(map f) (⨅ (i : ι), ↑(comap f) (m i)) = ⨅ (i : ι), ↑(map f) (↑(comap f) (m i))
[PROOFSTEP]
refine' (map_iInf_le _ _).antisymm fun s => _
[GOAL]
α : Type u_1
ι : Sort u_2
β : Type u_3
inst✝ : Nonempty ι
f : α → β
m : ι → OuterMeasure β
s : Set β
⊢ ↑(⨅ (i : ι), ↑(map f) (↑(comap f) (m i))) s ≤ ↑(↑(map f) (⨅ (i : ι), ↑(comap f) (m i))) s
[PROOFSTEP]
simp only [map_apply, comap_apply, iInf_apply, le_iInf_iff]
[GOAL]
α : Type u_1
ι : Sort u_2
β : Type u_3
inst✝ : Nonempty ι
f : α → β
m : ι → OuterMeasure β
s : Set β
⊢ ∀ (i : ℕ → Set α),
    f ⁻¹' s ⊆ iUnion i →
      ⨅ (t : ℕ → Set β) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (i : ι), ↑(m i) (f '' (f ⁻¹' t n)) ≤
        ∑' (n : ℕ), ⨅ (i_2 : ι), ↑(m i_2) (f '' i n)
[PROOFSTEP]
refine' fun t ht => iInf_le_of_le (fun n => f '' t n ∪ (range f)ᶜ) (iInf_le_of_le _ _)
[GOAL]
case refine'_1
α : Type u_1
ι : Sort u_2
β : Type u_3
inst✝ : Nonempty ι
f : α → β
m : ι → OuterMeasure β
s : Set β
t : ℕ → Set α
ht : f ⁻¹' s ⊆ iUnion t
⊢ s ⊆ ⋃ (n : ℕ), f '' t n ∪ (range f)ᶜ
[PROOFSTEP]
rw [← iUnion_union, Set.union_comm, ← inter_subset, ← image_iUnion, ← image_preimage_eq_inter_range]
[GOAL]
case refine'_1
α : Type u_1
ι : Sort u_2
β : Type u_3
inst✝ : Nonempty ι
f : α → β
m : ι → OuterMeasure β
s : Set β
t : ℕ → Set α
ht : f ⁻¹' s ⊆ iUnion t
⊢ f '' (f ⁻¹' s) ⊆ f '' ⋃ (i : ℕ), t i
[PROOFSTEP]
exact image_subset _ ht
[GOAL]
case refine'_2
α : Type u_1
ι : Sort u_2
β : Type u_3
inst✝ : Nonempty ι
f : α → β
m : ι → OuterMeasure β
s : Set β
t : ℕ → Set α
ht : f ⁻¹' s ⊆ iUnion t
⊢ ∑' (n : ℕ), ⨅ (i : ι), ↑(m i) (f '' (f ⁻¹' (fun n => f '' t n ∪ (range f)ᶜ) n)) ≤
    ∑' (n : ℕ), ⨅ (i : ι), ↑(m i) (f '' t n)
[PROOFSTEP]
refine' ENNReal.tsum_le_tsum fun n => iInf_mono fun i => (m i).mono _
[GOAL]
case refine'_2
α : Type u_1
ι : Sort u_2
β : Type u_3
inst✝ : Nonempty ι
f : α → β
m : ι → OuterMeasure β
s : Set β
t : ℕ → Set α
ht : f ⁻¹' s ⊆ iUnion t
n : ℕ
i : ι
⊢ f '' (f ⁻¹' (fun n => f '' t n ∪ (range f)ᶜ) n) ⊆ f '' t n
[PROOFSTEP]
simp
[GOAL]
case refine'_2
α : Type u_1
ι : Sort u_2
β : Type u_3
inst✝ : Nonempty ι
f : α → β
m : ι → OuterMeasure β
s : Set β
t : ℕ → Set α
ht : f ⁻¹' s ⊆ iUnion t
n : ℕ
i : ι
⊢ f ⁻¹' (f '' t n) ⊆ f ⁻¹' (f '' t n)
[PROOFSTEP]
exact subset_refl _
[GOAL]
α : Type u_1
ι : Type u_2
β : Type u_3
I : Set ι
hI : Set.Nonempty I
f : α → β
m : ι → OuterMeasure β
⊢ ↑(map f) (⨅ (i : ι) (_ : i ∈ I), ↑(comap f) (m i)) = ⨅ (i : ι) (_ : i ∈ I), ↑(map f) (↑(comap f) (m i))
[PROOFSTEP]
haveI := hI.to_subtype
[GOAL]
α : Type u_1
ι : Type u_2
β : Type u_3
I : Set ι
hI : Set.Nonempty I
f : α → β
m : ι → OuterMeasure β
this : Nonempty ↑I
⊢ ↑(map f) (⨅ (i : ι) (_ : i ∈ I), ↑(comap f) (m i)) = ⨅ (i : ι) (_ : i ∈ I), ↑(map f) (↑(comap f) (m i))
[PROOFSTEP]
rw [← iInf_subtype'', ← iInf_subtype'']
[GOAL]
α : Type u_1
ι : Type u_2
β : Type u_3
I : Set ι
hI : Set.Nonempty I
f : α → β
m : ι → OuterMeasure β
this : Nonempty ↑I
⊢ ↑(map f) (⨅ (i : ↑I), ↑(comap f) (m ↑i)) = ⨅ (i : ↑I), ↑(map f) (↑(comap f) (m ↑i))
[PROOFSTEP]
exact map_iInf_comap _
[GOAL]
α : Type u_1
ι : Sort u_2
s : Set α
m : ι → OuterMeasure α
⊢ ↑(restrict s) (⨅ (i : ι), ↑(restrict s) (m i)) = ↑(restrict (range Subtype.val)) (⨅ (i : ι), ↑(restrict s) (m i))
[PROOFSTEP]
rw [Subtype.range_coe]
[GOAL]
α : Type u_1
ι : Type u_2
I : Set ι
hI : Set.Nonempty I
s : Set α
m : ι → OuterMeasure α
⊢ ↑(restrict s) (⨅ (i : ι) (_ : i ∈ I), m i) = ⨅ (i : ι) (_ : i ∈ I), ↑(restrict s) (m i)
[PROOFSTEP]
haveI := hI.to_subtype
[GOAL]
α : Type u_1
ι : Type u_2
I : Set ι
hI : Set.Nonempty I
s : Set α
m : ι → OuterMeasure α
this : Nonempty ↑I
⊢ ↑(restrict s) (⨅ (i : ι) (_ : i ∈ I), m i) = ⨅ (i : ι) (_ : i ∈ I), ↑(restrict s) (m i)
[PROOFSTEP]
rw [← iInf_subtype'', ← iInf_subtype'']
[GOAL]
α : Type u_1
ι : Type u_2
I : Set ι
hI : Set.Nonempty I
s : Set α
m : ι → OuterMeasure α
this : Nonempty ↑I
⊢ ↑(restrict s) (⨅ (i : ↑I), m ↑i) = ⨅ (i : ↑I), ↑(restrict s) (m ↑i)
[PROOFSTEP]
exact restrict_iInf _ _
[GOAL]
α : Type u_1
m : Set (OuterMeasure α)
s : Set α
hm : Set.Nonempty m
⊢ ↑(restrict s) (sInf m) = sInf (↑(restrict s) '' m)
[PROOFSTEP]
simp only [sInf_eq_iInf, restrict_biInf, hm, iInf_image]
[GOAL]
α : Type u_1
P : α → Prop
m : (s : α) → P s → ℝ≥0∞
s : α
h : P s
⊢ extend m s = m s h
[PROOFSTEP]
simp [extend, h]
[GOAL]
α : Type u_1
P : α → Prop
m : (s : α) → P s → ℝ≥0∞
s : α
h : ¬P s
⊢ extend m s = ⊤
[PROOFSTEP]
simp [extend, h]
[GOAL]
α : Type u_1
P : α → Prop
m : (s : α) → P s → ℝ≥0∞
R : Type u_2
inst✝³ : Zero R
inst✝² : SMulWithZero R ℝ≥0∞
inst✝¹ : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝ : NoZeroSMulDivisors R ℝ≥0∞
c : R
hc : c ≠ 0
⊢ c • extend m = extend fun s h => c • m s h
[PROOFSTEP]
ext1 s
[GOAL]
case h
α : Type u_1
P : α → Prop
m : (s : α) → P s → ℝ≥0∞
R : Type u_2
inst✝³ : Zero R
inst✝² : SMulWithZero R ℝ≥0∞
inst✝¹ : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝ : NoZeroSMulDivisors R ℝ≥0∞
c : R
hc : c ≠ 0
s : α
⊢ (c • extend m) s = extend (fun s h => c • m s h) s
[PROOFSTEP]
dsimp [extend]
[GOAL]
case h
α : Type u_1
P : α → Prop
m : (s : α) → P s → ℝ≥0∞
R : Type u_2
inst✝³ : Zero R
inst✝² : SMulWithZero R ℝ≥0∞
inst✝¹ : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝ : NoZeroSMulDivisors R ℝ≥0∞
c : R
hc : c ≠ 0
s : α
⊢ c • ⨅ (h : P s), m s h = ⨅ (h : P s), c • m s h
[PROOFSTEP]
by_cases h : P s
[GOAL]
case pos
α : Type u_1
P : α → Prop
m : (s : α) → P s → ℝ≥0∞
R : Type u_2
inst✝³ : Zero R
inst✝² : SMulWithZero R ℝ≥0∞
inst✝¹ : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝ : NoZeroSMulDivisors R ℝ≥0∞
c : R
hc : c ≠ 0
s : α
h : P s
⊢ c • ⨅ (h : P s), m s h = ⨅ (h : P s), c • m s h
[PROOFSTEP]
simp [h]
[GOAL]
case neg
α : Type u_1
P : α → Prop
m : (s : α) → P s → ℝ≥0∞
R : Type u_2
inst✝³ : Zero R
inst✝² : SMulWithZero R ℝ≥0∞
inst✝¹ : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝ : NoZeroSMulDivisors R ℝ≥0∞
c : R
hc : c ≠ 0
s : α
h : ¬P s
⊢ c • ⨅ (h : P s), m s h = ⨅ (h : P s), c • m s h
[PROOFSTEP]
simp [h, ENNReal.smul_top, hc]
[GOAL]
α : Type u_1
P : α → Prop
m : (s : α) → P s → ℝ≥0∞
s : α
h : P s
⊢ m s h ≤ extend m s
[PROOFSTEP]
simp only [extend, le_iInf_iff]
[GOAL]
α : Type u_1
P : α → Prop
m : (s : α) → P s → ℝ≥0∞
s : α
h : P s
⊢ ∀ (i : P s), m s h ≤ m s i
[PROOFSTEP]
intro
[GOAL]
α : Type u_1
P : α → Prop
m : (s : α) → P s → ℝ≥0∞
s : α
h i✝ : P s
⊢ m s h ≤ m s i✝
[PROOFSTEP]
rfl
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
f : ℕ → Set α
hm : ∀ (i : ℕ), P (f i)
mU : m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
⊢ ∑' (i : ℕ), m (f i) (_ : P (f i)) = ∑' (i : ℕ), extend m (f i)
[PROOFSTEP]
congr with i
[GOAL]
case e_f.h
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
f : ℕ → Set α
hm : ∀ (i : ℕ), P (f i)
mU : m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
i : ℕ
⊢ m (f i) (_ : P (f i)) = extend m (f i)
[PROOFSTEP]
rw [extend_eq]
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (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)
[PROOFSTEP]
by_cases h : ∀ i, P (s i)
[GOAL]
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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (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)
[PROOFSTEP]
rw [extend_eq _ (PU h), congr_arg tsum _]
[GOAL]
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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (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)
⊢ m (⋃ (i : ℕ), s i) (_ : P (⋃ (i : ℕ), s i)) ≤ tsum ?m.289896
[PROOFSTEP]
apply msU h
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (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)
⊢ (fun i => extend m (s i)) = fun i => m (s i) (_ : P (s i))
[PROOFSTEP]
funext i
[GOAL]
case h
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (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)
i : ℕ
⊢ extend m (s i) = m (s i) (_ : P (s i))
[PROOFSTEP]
apply extend_eq _ (h i)
[GOAL]
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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (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)
[PROOFSTEP]
cases' not_forall.1 h with i hi
[GOAL]
case neg.intro
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (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)
i : ℕ
hi : ¬P (s i)
⊢ extend m (⋃ (i : ℕ), s i) ≤ ∑' (i : ℕ), extend m (s i)
[PROOFSTEP]
exact le_trans (le_iInf fun h => hi.elim h) (ENNReal.le_tsum i)
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s₁ s₂ : Set α
h₁ : P s₁
hs : s₁ ⊆ s₂
⊢ extend m s₁ ≤ extend m s₂
[PROOFSTEP]
refine' le_iInf _
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s₁ s₂ : Set α
h₁ : P s₁
hs : s₁ ⊆ s₂
⊢ ∀ (i : (fun s => P s) s₂), extend m s₁ ≤ m s₂ i
[PROOFSTEP]
intro h₂
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s₁ s₂ : Set α
h₁ : P s₁
hs : s₁ ⊆ s₂
h₂ : (fun s => P s) s₂
⊢ extend m s₁ ≤ m s₂ h₂
[PROOFSTEP]
rw [extend_eq m h₁]
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s₁ s₂ : Set α
h₁ : P s₁
hs : s₁ ⊆ s₂
h₂ : (fun s => P s) s₂
⊢ m s₁ h₁ ≤ m s₂ h₂
[PROOFSTEP]
exact m_mono h₁ h₂ hs
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
β : Type u_2
inst✝ : Countable β
f : β → Set α
hd : Pairwise (Disjoint on f)
hm : ∀ (i : β), P (f i)
⊢ extend m (⋃ (i : β), f i) = ∑' (i : β), extend m (f i)
[PROOFSTEP]
cases nonempty_encodable β
[GOAL]
case intro
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
β : Type u_2
inst✝ : Countable β
f : β → Set α
hd : Pairwise (Disjoint on f)
hm : ∀ (i : β), P (f i)
val✝ : Encodable β
⊢ extend m (⋃ (i : β), f i) = ∑' (i : β), extend m (f i)
[PROOFSTEP]
rw [← Encodable.iUnion_decode₂, ← tsum_iUnion_decode₂]
[GOAL]
case intro
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
β : Type u_2
inst✝ : Countable β
f : β → Set α
hd : Pairwise (Disjoint on f)
hm : ∀ (i : β), P (f i)
val✝ : Encodable β
⊢ extend m (⋃ (i : ℕ) (b : β) (_ : b ∈ Encodable.decode₂ β i), f b) =
    ∑' (i : ℕ), extend m (⋃ (b : β) (_ : b ∈ Encodable.decode₂ β i), f b)
[PROOFSTEP]
exact
  extend_iUnion_nat PU (fun n => Encodable.iUnion_decode₂_cases P0 hm) (mU _ (Encodable.iUnion_decode₂_disjoint_on hd))
[GOAL]
case intro.m0
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
β : Type u_2
inst✝ : Countable β
f : β → Set α
hd : Pairwise (Disjoint on f)
hm : ∀ (i : β), P (f i)
val✝ : Encodable β
⊢ extend m ∅ = 0
[PROOFSTEP]
exact extend_empty P0 m0
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s₁ s₂ : Set α
hd : Disjoint s₁ s₂
h₁ : P s₁
h₂ : P s₂
⊢ extend m (s₁ ∪ s₂) = extend m s₁ + extend m s₂
[PROOFSTEP]
rw [union_eq_iUnion, extend_iUnion P0 m0 PU mU (pairwise_disjoint_on_bool.2 hd) (Bool.forall_bool.2 ⟨h₂, h₁⟩),
  tsum_fintype]
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s₁ s₂ : Set α
hd : Disjoint s₁ s₂
h₁ : P s₁
h₂ : P s₂
⊢ ∑ b : Bool, extend m (bif b then s₁ else s₂) = extend m s₁ + extend m s₂
[PROOFSTEP]
simp
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
⊢ ↑(inducedOuterMeasure m P0 m0) s = ⨅ (t : Set α) (ht : P t) (_ : s ⊆ t), m t ht
[PROOFSTEP]
apply le_antisymm
[GOAL]
case a
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
⊢ ↑(inducedOuterMeasure m P0 m0) s ≤ ⨅ (t : Set α) (ht : P t) (_ : s ⊆ t), m t ht
[PROOFSTEP]
simp only [le_iInf_iff]
[GOAL]
case a
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
⊢ ∀ (i : Set α) (i_1 : P i), s ⊆ i → ↑(inducedOuterMeasure m P0 m0) s ≤ m i i_1
[PROOFSTEP]
intro t ht hs
[GOAL]
case a
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s t : Set α
ht : P t
hs : s ⊆ t
⊢ ↑(inducedOuterMeasure m P0 m0) s ≤ m t ht
[PROOFSTEP]
refine' le_trans (mono' _ hs) _
[GOAL]
case a
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s t : Set α
ht : P t
hs : s ⊆ t
⊢ ↑(inducedOuterMeasure m P0 m0) t ≤ m t ht
[PROOFSTEP]
exact le_of_eq (inducedOuterMeasure_eq' _ msU m_mono _)
[GOAL]
case a
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
⊢ ⨅ (t : Set α) (ht : P t) (_ : s ⊆ t), m t ht ≤ ↑(inducedOuterMeasure m P0 m0) s
[PROOFSTEP]
refine' le_iInf _
[GOAL]
case a
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
⊢ ∀ (i : ℕ → Set α),
    ⨅ (t : Set α) (ht : P t) (_ : s ⊆ t), m t ht ≤ ⨅ (_ : s ⊆ ⋃ (i_1 : ℕ), i i_1), ∑' (i_1 : ℕ), extend m (i i_1)
[PROOFSTEP]
intro f
[GOAL]
case a
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
f : ℕ → Set α
⊢ ⨅ (t : Set α) (ht : P t) (_ : s ⊆ t), m t ht ≤ ⨅ (_ : s ⊆ ⋃ (i : ℕ), f i), ∑' (i : ℕ), extend m (f i)
[PROOFSTEP]
refine' le_iInf _
[GOAL]
case a
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
f : ℕ → Set α
⊢ s ⊆ ⋃ (i : ℕ), f i → ⨅ (t : Set α) (ht : P t) (_ : s ⊆ t), m t ht ≤ ∑' (i : ℕ), extend m (f i)
[PROOFSTEP]
intro hf
[GOAL]
case a
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
f : ℕ → Set α
hf : s ⊆ ⋃ (i : ℕ), f i
⊢ ⨅ (t : Set α) (ht : P t) (_ : s ⊆ t), m t ht ≤ ∑' (i : ℕ), extend m (f i)
[PROOFSTEP]
refine' le_trans _ (extend_iUnion_le_tsum_nat' _ msU _)
[GOAL]
case a
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
f : ℕ → Set α
hf : s ⊆ ⋃ (i : ℕ), f i
⊢ ⨅ (t : Set α) (ht : P t) (_ : s ⊆ t), m t ht ≤ extend m (⋃ (i : ℕ), f i)
[PROOFSTEP]
refine' le_iInf _
[GOAL]
case a
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
f : ℕ → Set α
hf : s ⊆ ⋃ (i : ℕ), f i
⊢ ∀ (i : (fun s => P s) (⋃ (i : ℕ), f i)), ⨅ (t : Set α) (ht : P t) (_ : s ⊆ t), m t ht ≤ m (⋃ (i : ℕ), f i) i
[PROOFSTEP]
intro h2f
[GOAL]
case a
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
f : ℕ → Set α
hf : s ⊆ ⋃ (i : ℕ), f i
h2f : (fun s => P s) (⋃ (i : ℕ), f i)
⊢ ⨅ (t : Set α) (ht : P t) (_ : s ⊆ t), m t ht ≤ m (⋃ (i : ℕ), f i) h2f
[PROOFSTEP]
refine' iInf_le_of_le _ (iInf_le_of_le h2f <| iInf_le _ hf)
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
f : α ≃ α
Pm : ∀ (s : Set α), P (↑f ⁻¹' s) ↔ P s
mm : ∀ (s : Set α) (hs : P s), m (↑f ⁻¹' s) (_ : P (↑f ⁻¹' s)) = m s hs
A : Set α
⊢ ↑(inducedOuterMeasure m P0 m0) (↑f ⁻¹' A) = ↑(inducedOuterMeasure m P0 m0) A
[PROOFSTEP]
rw [inducedOuterMeasure_eq_iInf _ msU m_mono, inducedOuterMeasure_eq_iInf _ msU m_mono]
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
f : α ≃ α
Pm : ∀ (s : Set α), P (↑f ⁻¹' s) ↔ P s
mm : ∀ (s : Set α) (hs : P s), m (↑f ⁻¹' s) (_ : P (↑f ⁻¹' s)) = m s hs
A : Set α
⊢ ⨅ (t : Set α) (ht : P t) (_ : ↑f ⁻¹' A ⊆ t), m t ht = ⨅ (t : Set α) (ht : P t) (_ : A ⊆ t), m t ht
[PROOFSTEP]
symm
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
f : α ≃ α
Pm : ∀ (s : Set α), P (↑f ⁻¹' s) ↔ P s
mm : ∀ (s : Set α) (hs : P s), m (↑f ⁻¹' s) (_ : P (↑f ⁻¹' s)) = m s hs
A : Set α
⊢ ⨅ (t : Set α) (ht : P t) (_ : A ⊆ t), m t ht = ⨅ (t : Set α) (ht : P t) (_ : ↑f ⁻¹' A ⊆ t), m t ht
[PROOFSTEP]
refine' f.injective.preimage_surjective.iInf_congr (preimage f) fun s => _
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
f : α ≃ α
Pm : ∀ (s : Set α), P (↑f ⁻¹' s) ↔ P s
mm : ∀ (s : Set α) (hs : P s), m (↑f ⁻¹' s) (_ : P (↑f ⁻¹' s)) = m s hs
A s : Set α
⊢ ⨅ (ht : P (↑f ⁻¹' s)) (_ : ↑f ⁻¹' A ⊆ ↑f ⁻¹' s), m (↑f ⁻¹' s) ht = ⨅ (ht : P s) (_ : A ⊆ s), m s ht
[PROOFSTEP]
refine' iInf_congr_Prop (Pm s) _
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
f : α ≃ α
Pm : ∀ (s : Set α), P (↑f ⁻¹' s) ↔ P s
mm : ∀ (s : Set α) (hs : P s), m (↑f ⁻¹' s) (_ : P (↑f ⁻¹' s)) = m s hs
A s : Set α
⊢ ∀ (x : P s), ⨅ (_ : ↑f ⁻¹' A ⊆ ↑f ⁻¹' s), m (↑f ⁻¹' s) (_ : P (↑f ⁻¹' s)) = ⨅ (_ : A ⊆ s), m s x
[PROOFSTEP]
intro hs
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
f : α ≃ α
Pm : ∀ (s : Set α), P (↑f ⁻¹' s) ↔ P s
mm : ∀ (s : Set α) (hs : P s), m (↑f ⁻¹' s) (_ : P (↑f ⁻¹' s)) = m s hs
A s : Set α
hs : P s
⊢ ⨅ (_ : ↑f ⁻¹' A ⊆ ↑f ⁻¹' s), m (↑f ⁻¹' s) (_ : P (↑f ⁻¹' s)) = ⨅ (_ : A ⊆ s), m s hs
[PROOFSTEP]
refine' iInf_congr_Prop f.surjective.preimage_subset_preimage_iff _
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
f : α ≃ α
Pm : ∀ (s : Set α), P (↑f ⁻¹' s) ↔ P s
mm : ∀ (s : Set α) (hs : P s), m (↑f ⁻¹' s) (_ : P (↑f ⁻¹' s)) = m s hs
A s : Set α
hs : P s
⊢ A ⊆ s → m (↑f ⁻¹' s) (_ : P (↑f ⁻¹' s)) = m s hs
[PROOFSTEP]
intro _
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
f : α ≃ α
Pm : ∀ (s : Set α), P (↑f ⁻¹' s) ↔ P s
mm : ∀ (s : Set α) (hs : P s), m (↑f ⁻¹' s) (_ : P (↑f ⁻¹' s)) = m s hs
A s : Set α
hs : P s
x✝ : A ⊆ s
⊢ m (↑f ⁻¹' s) (_ : P (↑f ⁻¹' s)) = m s hs
[PROOFSTEP]
exact mm s hs
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
hs : ↑(inducedOuterMeasure m P0 m0) s ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
⊢ ∃ t _ht, s ⊆ t ∧ ↑(inducedOuterMeasure m P0 m0) t ≤ ↑(inducedOuterMeasure m P0 m0) s + ε
[PROOFSTEP]
have h := ENNReal.lt_add_right hs hε
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
hs : ↑(inducedOuterMeasure m P0 m0) s ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
h : ↑(inducedOuterMeasure m P0 m0) s < ↑(inducedOuterMeasure m P0 m0) s + ε
⊢ ∃ t _ht, s ⊆ t ∧ ↑(inducedOuterMeasure m P0 m0) t ≤ ↑(inducedOuterMeasure m P0 m0) s + ε
[PROOFSTEP]
conv at h =>
  lhs
  rw [inducedOuterMeasure_eq_iInf _ msU m_mono]
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
hs : ↑(inducedOuterMeasure m P0 m0) s ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
h : ↑(inducedOuterMeasure m P0 m0) s < ↑(inducedOuterMeasure m P0 m0) s + ε
| ↑(inducedOuterMeasure m P0 m0) s < ↑(inducedOuterMeasure m P0 m0) s + ε
[PROOFSTEP]
  lhs
  rw [inducedOuterMeasure_eq_iInf _ msU m_mono]
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
hs : ↑(inducedOuterMeasure m P0 m0) s ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
h : ↑(inducedOuterMeasure m P0 m0) s < ↑(inducedOuterMeasure m P0 m0) s + ε
| ↑(inducedOuterMeasure m P0 m0) s < ↑(inducedOuterMeasure m P0 m0) s + ε
[PROOFSTEP]
  lhs
  rw [inducedOuterMeasure_eq_iInf _ msU m_mono]
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
hs : ↑(inducedOuterMeasure m P0 m0) s ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
h : ↑(inducedOuterMeasure m P0 m0) s < ↑(inducedOuterMeasure m P0 m0) s + ε
| ↑(inducedOuterMeasure m P0 m0) s < ↑(inducedOuterMeasure m P0 m0) s + ε
[PROOFSTEP]
lhs
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
hs : ↑(inducedOuterMeasure m P0 m0) s ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
h : ↑(inducedOuterMeasure m P0 m0) s < ↑(inducedOuterMeasure m P0 m0) s + ε
| ↑(inducedOuterMeasure m P0 m0) s
[PROOFSTEP]
rw [inducedOuterMeasure_eq_iInf _ msU m_mono]
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
hs : ↑(inducedOuterMeasure m P0 m0) s ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
h : ⨅ (t : Set α) (ht : P t) (_ : s ⊆ t), m t ht < ↑(inducedOuterMeasure m P0 m0) s + ε
⊢ ∃ t _ht, s ⊆ t ∧ ↑(inducedOuterMeasure m P0 m0) t ≤ ↑(inducedOuterMeasure m P0 m0) s + ε
[PROOFSTEP]
simp only [iInf_lt_iff] at h 
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
hs : ↑(inducedOuterMeasure m P0 m0) s ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
h : ∃ i h i_1, m i (_ : P i) < ↑(inducedOuterMeasure m P0 m0) s + ε
⊢ ∃ t _ht, s ⊆ t ∧ ↑(inducedOuterMeasure m P0 m0) t ≤ ↑(inducedOuterMeasure m P0 m0) s + ε
[PROOFSTEP]
rcases h with ⟨t, h1t, h2t, h3t⟩
[GOAL]
case intro.intro.intro
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
hs : ↑(inducedOuterMeasure m P0 m0) s ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
t : Set α
h1t : P t
h2t : s ⊆ t
h3t : m t (_ : P t) < ↑(inducedOuterMeasure m P0 m0) s + ε
⊢ ∃ t _ht, s ⊆ t ∧ ↑(inducedOuterMeasure m P0 m0) t ≤ ↑(inducedOuterMeasure m P0 m0) s + ε
[PROOFSTEP]
exact ⟨t, h1t, h2t, le_trans (le_of_eq <| inducedOuterMeasure_eq' _ msU m_mono h1t) (le_of_lt h3t)⟩
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
⊢ MeasurableSet s ↔
    ∀ (t : Set α),
      P t →
        ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤
          ↑(inducedOuterMeasure m P0 m0) t
[PROOFSTEP]
rw [isCaratheodory_iff_le]
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
⊢ (∀ (t : Set α),
      ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤
        ↑(inducedOuterMeasure m P0 m0) t) ↔
    ∀ (t : Set α),
      P t →
        ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤
          ↑(inducedOuterMeasure m P0 m0) t
[PROOFSTEP]
constructor
[GOAL]
case mp
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
⊢ (∀ (t : Set α),
      ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤
        ↑(inducedOuterMeasure m P0 m0) t) →
    ∀ (t : Set α),
      P t →
        ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤
          ↑(inducedOuterMeasure m P0 m0) t
[PROOFSTEP]
intro h t _ht
[GOAL]
case mp
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
h :
  ∀ (t : Set α),
    ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤ ↑(inducedOuterMeasure m P0 m0) t
t : Set α
_ht : P t
⊢ ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤ ↑(inducedOuterMeasure m P0 m0) t
[PROOFSTEP]
exact h t
[GOAL]
case mpr
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
⊢ (∀ (t : Set α),
      P t →
        ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤
          ↑(inducedOuterMeasure m P0 m0) t) →
    ∀ (t : Set α),
      ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤ ↑(inducedOuterMeasure m P0 m0) t
[PROOFSTEP]
intro h u
[GOAL]
case mpr
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
h :
  ∀ (t : Set α),
    P t →
      ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤ ↑(inducedOuterMeasure m P0 m0) t
u : Set α
⊢ ↑(inducedOuterMeasure m P0 m0) (u ∩ s) + ↑(inducedOuterMeasure m P0 m0) (u \ s) ≤ ↑(inducedOuterMeasure m P0 m0) u
[PROOFSTEP]
conv_rhs => rw [inducedOuterMeasure_eq_iInf _ msU m_mono]
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
h :
  ∀ (t : Set α),
    P t →
      ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤ ↑(inducedOuterMeasure m P0 m0) t
u : Set α
| ↑(inducedOuterMeasure m P0 m0) u
[PROOFSTEP]
rw [inducedOuterMeasure_eq_iInf _ msU m_mono]
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
h :
  ∀ (t : Set α),
    P t →
      ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤ ↑(inducedOuterMeasure m P0 m0) t
u : Set α
| ↑(inducedOuterMeasure m P0 m0) u
[PROOFSTEP]
rw [inducedOuterMeasure_eq_iInf _ msU m_mono]
[GOAL]
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
h :
  ∀ (t : Set α),
    P t →
      ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤ ↑(inducedOuterMeasure m P0 m0) t
u : Set α
| ↑(inducedOuterMeasure m P0 m0) u
[PROOFSTEP]
rw [inducedOuterMeasure_eq_iInf _ msU m_mono]
[GOAL]
case mpr
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
h :
  ∀ (t : Set α),
    P t →
      ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤ ↑(inducedOuterMeasure m P0 m0) t
u : Set α
⊢ ↑(inducedOuterMeasure m P0 m0) (u ∩ s) + ↑(inducedOuterMeasure m P0 m0) (u \ s) ≤
    ⨅ (t : Set α) (ht : P t) (_ : u ⊆ t), m t ht
[PROOFSTEP]
refine' le_iInf _
[GOAL]
case mpr
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
h :
  ∀ (t : Set α),
    P t →
      ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤ ↑(inducedOuterMeasure m P0 m0) t
u : Set α
⊢ ∀ (i : Set α),
    ↑(inducedOuterMeasure m P0 m0) (u ∩ s) + ↑(inducedOuterMeasure m P0 m0) (u \ s) ≤ ⨅ (ht : P i) (_ : u ⊆ i), m i ht
[PROOFSTEP]
intro t
[GOAL]
case mpr
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
h :
  ∀ (t : Set α),
    P t →
      ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤ ↑(inducedOuterMeasure m P0 m0) t
u t : Set α
⊢ ↑(inducedOuterMeasure m P0 m0) (u ∩ s) + ↑(inducedOuterMeasure m P0 m0) (u \ s) ≤ ⨅ (ht : P t) (_ : u ⊆ t), m t ht
[PROOFSTEP]
refine' le_iInf _
[GOAL]
case mpr
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
h :
  ∀ (t : Set α),
    P t →
      ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤ ↑(inducedOuterMeasure m P0 m0) t
u t : Set α
⊢ ∀ (i : P t), ↑(inducedOuterMeasure m P0 m0) (u ∩ s) + ↑(inducedOuterMeasure m P0 m0) (u \ s) ≤ ⨅ (_ : u ⊆ t), m t i
[PROOFSTEP]
intro ht
[GOAL]
case mpr
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
h :
  ∀ (t : Set α),
    P t →
      ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤ ↑(inducedOuterMeasure m P0 m0) t
u t : Set α
ht : P t
⊢ ↑(inducedOuterMeasure m P0 m0) (u ∩ s) + ↑(inducedOuterMeasure m P0 m0) (u \ s) ≤ ⨅ (_ : u ⊆ t), m t ht
[PROOFSTEP]
refine' le_iInf _
[GOAL]
case mpr
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
h :
  ∀ (t : Set α),
    P t →
      ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤ ↑(inducedOuterMeasure m P0 m0) t
u t : Set α
ht : P t
⊢ u ⊆ t → ↑(inducedOuterMeasure m P0 m0) (u ∩ s) + ↑(inducedOuterMeasure m P0 m0) (u \ s) ≤ m t ht
[PROOFSTEP]
intro h2t
[GOAL]
case mpr
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
h :
  ∀ (t : Set α),
    P t →
      ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤ ↑(inducedOuterMeasure m P0 m0) t
u t : Set α
ht : P t
h2t : u ⊆ t
⊢ ↑(inducedOuterMeasure m P0 m0) (u ∩ s) + ↑(inducedOuterMeasure m P0 m0) (u \ s) ≤ m t ht
[PROOFSTEP]
refine' le_trans _ (le_trans (h t ht) <| le_of_eq <| inducedOuterMeasure_eq' _ msU m_mono ht)
[GOAL]
case mpr
α : 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) (_ : P (⋃ (i : ℕ), f i)) = ∑' (i : ℕ), m (f i) (_ : P (f i))
msU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), P (f i)),
    m (⋃ (i : ℕ), f i) (_ : P (⋃ (i : ℕ), f i)) ≤ ∑' (i : ℕ), m (f i) (_ : P (f i))
m_mono : ∀ ⦃s₁ s₂ : Set α⦄ (hs₁ : P s₁) (hs₂ : P s₂), s₁ ⊆ s₂ → m s₁ hs₁ ≤ m s₂ hs₂
s : Set α
h :
  ∀ (t : Set α),
    P t →
      ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s) ≤ ↑(inducedOuterMeasure m P0 m0) t
u t : Set α
ht : P t
h2t : u ⊆ t
⊢ ↑(inducedOuterMeasure m P0 m0) (u ∩ s) + ↑(inducedOuterMeasure m P0 m0) (u \ s) ≤
    ↑(inducedOuterMeasure m P0 m0) (t ∩ s) + ↑(inducedOuterMeasure m P0 m0) (t \ s)
[PROOFSTEP]
refine' add_le_add (mono' _ <| Set.inter_subset_inter_left _ h2t) (mono' _ <| diff_subset_diff_left h2t)
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : (s : Set α) → MeasurableSet s → ℝ≥0∞
m0 : m ∅ (_ : MeasurableSet ∅) = 0
mU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), MeasurableSet (f i)),
    Pairwise (Disjoint on f) →
      m (⋃ (i : ℕ), f i) (_ : MeasurableSet (⋃ (b : ℕ), f b)) = ∑' (i : ℕ), m (f i) (_ : MeasurableSet (f i))
s₁ s₂ : Set α
h₁ : MeasurableSet s₁
hs : s₁ ⊆ s₂
⊢ extend m s₁ ≤ extend m s₂
[PROOFSTEP]
refine' le_iInf _
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : (s : Set α) → MeasurableSet s → ℝ≥0∞
m0 : m ∅ (_ : MeasurableSet ∅) = 0
mU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), MeasurableSet (f i)),
    Pairwise (Disjoint on f) →
      m (⋃ (i : ℕ), f i) (_ : MeasurableSet (⋃ (b : ℕ), f b)) = ∑' (i : ℕ), m (f i) (_ : MeasurableSet (f i))
s₁ s₂ : Set α
h₁ : MeasurableSet s₁
hs : s₁ ⊆ s₂
⊢ ∀ (i : (fun s => MeasurableSet s) s₂), extend m s₁ ≤ m s₂ i
[PROOFSTEP]
intro h₂
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : (s : Set α) → MeasurableSet s → ℝ≥0∞
m0 : m ∅ (_ : MeasurableSet ∅) = 0
mU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), MeasurableSet (f i)),
    Pairwise (Disjoint on f) →
      m (⋃ (i : ℕ), f i) (_ : MeasurableSet (⋃ (b : ℕ), f b)) = ∑' (i : ℕ), m (f i) (_ : MeasurableSet (f i))
s₁ s₂ : Set α
h₁ : MeasurableSet s₁
hs : s₁ ⊆ s₂
h₂ : (fun s => MeasurableSet s) s₂
⊢ extend m s₁ ≤ m s₂ h₂
[PROOFSTEP]
have := extend_union MeasurableSet.empty m0 MeasurableSet.iUnion mU disjoint_sdiff_self_right h₁ (h₂.diff h₁)
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : (s : Set α) → MeasurableSet s → ℝ≥0∞
m0 : m ∅ (_ : MeasurableSet ∅) = 0
mU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), MeasurableSet (f i)),
    Pairwise (Disjoint on f) →
      m (⋃ (i : ℕ), f i) (_ : MeasurableSet (⋃ (b : ℕ), f b)) = ∑' (i : ℕ), m (f i) (_ : MeasurableSet (f i))
s₁ s₂ : Set α
h₁ : MeasurableSet s₁
hs : s₁ ⊆ s₂
h₂ : (fun s => MeasurableSet s) s₂
this : extend m (s₁ ∪ s₂ \ s₁) = extend m s₁ + extend m (s₂ \ s₁)
⊢ extend m s₁ ≤ m s₂ h₂
[PROOFSTEP]
rw [union_diff_cancel hs] at this 
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : (s : Set α) → MeasurableSet s → ℝ≥0∞
m0 : m ∅ (_ : MeasurableSet ∅) = 0
mU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), MeasurableSet (f i)),
    Pairwise (Disjoint on f) →
      m (⋃ (i : ℕ), f i) (_ : MeasurableSet (⋃ (b : ℕ), f b)) = ∑' (i : ℕ), m (f i) (_ : MeasurableSet (f i))
s₁ s₂ : Set α
h₁ : MeasurableSet s₁
hs : s₁ ⊆ s₂
h₂ : (fun s => MeasurableSet s) s₂
this : extend m s₂ = extend m s₁ + extend m (s₂ \ s₁)
⊢ extend m s₁ ≤ m s₂ h₂
[PROOFSTEP]
rw [← extend_eq m]
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : (s : Set α) → MeasurableSet s → ℝ≥0∞
m0 : m ∅ (_ : MeasurableSet ∅) = 0
mU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), MeasurableSet (f i)),
    Pairwise (Disjoint on f) →
      m (⋃ (i : ℕ), f i) (_ : MeasurableSet (⋃ (b : ℕ), f b)) = ∑' (i : ℕ), m (f i) (_ : MeasurableSet (f i))
s₁ s₂ : Set α
h₁ : MeasurableSet s₁
hs : s₁ ⊆ s₂
h₂ : (fun s => MeasurableSet s) s₂
this : extend m s₂ = extend m s₁ + extend m (s₂ \ s₁)
⊢ extend m s₁ ≤ extend m s₂
[PROOFSTEP]
exact le_iff_exists_add.2 ⟨_, this⟩
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : (s : Set α) → MeasurableSet s → ℝ≥0∞
m0 : m ∅ (_ : MeasurableSet ∅) = 0
mU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), MeasurableSet (f i)),
    Pairwise (Disjoint on f) →
      m (⋃ (i : ℕ), f i) (_ : MeasurableSet (⋃ (b : ℕ), f b)) = ∑' (i : ℕ), m (f i) (_ : MeasurableSet (f i))
⊢ ∀ (s : ℕ → Set α), extend m (⋃ (i : ℕ), s i) ≤ ∑' (i : ℕ), extend m (s i)
[PROOFSTEP]
refine' extend_iUnion_le_tsum_nat' MeasurableSet.iUnion _
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : (s : Set α) → MeasurableSet s → ℝ≥0∞
m0 : m ∅ (_ : MeasurableSet ∅) = 0
mU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), MeasurableSet (f i)),
    Pairwise (Disjoint on f) →
      m (⋃ (i : ℕ), f i) (_ : MeasurableSet (⋃ (b : ℕ), f b)) = ∑' (i : ℕ), m (f i) (_ : MeasurableSet (f i))
⊢ ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), MeasurableSet (f i)),
    m (⋃ (i : ℕ), f i) (_ : MeasurableSet (⋃ (b : ℕ), f b)) ≤ ∑' (i : ℕ), m (f i) (_ : MeasurableSet (f i))
[PROOFSTEP]
intro f h
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : (s : Set α) → MeasurableSet s → ℝ≥0∞
m0 : m ∅ (_ : MeasurableSet ∅) = 0
mU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), MeasurableSet (f i)),
    Pairwise (Disjoint on f) →
      m (⋃ (i : ℕ), f i) (_ : MeasurableSet (⋃ (b : ℕ), f b)) = ∑' (i : ℕ), m (f i) (_ : MeasurableSet (f i))
f : ℕ → Set α
h : ∀ (i : ℕ), MeasurableSet (f i)
⊢ m (⋃ (i : ℕ), f i) (_ : MeasurableSet (⋃ (b : ℕ), f b)) ≤ ∑' (i : ℕ), m (f i) (_ : ?m.320579 (f i))
[PROOFSTEP]
simp (config := { singlePass := true }) [iUnion_disjointed.symm]
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : (s : Set α) → MeasurableSet s → ℝ≥0∞
m0 : m ∅ (_ : MeasurableSet ∅) = 0
mU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), MeasurableSet (f i)),
    Pairwise (Disjoint on f) →
      m (⋃ (i : ℕ), f i) (_ : MeasurableSet (⋃ (b : ℕ), f b)) = ∑' (i : ℕ), m (f i) (_ : MeasurableSet (f i))
f : ℕ → Set α
h : ∀ (i : ℕ), MeasurableSet (f i)
⊢ m (⋃ (n : ℕ), disjointed (fun n => f n) n) (_ : MeasurableSet (⋃ (n : ℕ), disjointed (fun n => f n) n)) ≤
    ∑' (i : ℕ), m (f i) (_ : ?m.320579 (f i))
[PROOFSTEP]
rw [mU (MeasurableSet.disjointed h) (disjoint_disjointed _)]
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : (s : Set α) → MeasurableSet s → ℝ≥0∞
m0 : m ∅ (_ : MeasurableSet ∅) = 0
mU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), MeasurableSet (f i)),
    Pairwise (Disjoint on f) →
      m (⋃ (i : ℕ), f i) (_ : MeasurableSet (⋃ (b : ℕ), f b)) = ∑' (i : ℕ), m (f i) (_ : MeasurableSet (f i))
f : ℕ → Set α
h : ∀ (i : ℕ), MeasurableSet (f i)
⊢ ∑' (i : ℕ), m (disjointed (fun i => f i) i) (_ : MeasurableSet (disjointed (fun i => f i) i)) ≤
    ∑' (i : ℕ), m (f i) (_ : ?m.320579 (f i))
[PROOFSTEP]
refine' ENNReal.tsum_le_tsum fun i => _
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : (s : Set α) → MeasurableSet s → ℝ≥0∞
m0 : m ∅ (_ : MeasurableSet ∅) = 0
mU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), MeasurableSet (f i)),
    Pairwise (Disjoint on f) →
      m (⋃ (i : ℕ), f i) (_ : MeasurableSet (⋃ (b : ℕ), f b)) = ∑' (i : ℕ), m (f i) (_ : MeasurableSet (f i))
f : ℕ → Set α
h : ∀ (i : ℕ), MeasurableSet (f i)
i : ℕ
⊢ m (disjointed (fun i => f i) i) (_ : MeasurableSet (disjointed (fun i => f i) i)) ≤ m (f i) (_ : ?m.320579 (f i))
[PROOFSTEP]
rw [← extend_eq m, ← extend_eq m]
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : (s : Set α) → MeasurableSet s → ℝ≥0∞
m0 : m ∅ (_ : MeasurableSet ∅) = 0
mU :
  ∀ ⦃f : ℕ → Set α⦄ (hm : ∀ (i : ℕ), MeasurableSet (f i)),
    Pairwise (Disjoint on f) →
      m (⋃ (i : ℕ), f i) (_ : MeasurableSet (⋃ (b : ℕ), f b)) = ∑' (i : ℕ), m (f i) (_ : MeasurableSet (f i))
f : ℕ → Set α
h : ∀ (i : ℕ), MeasurableSet (f i)
i : ℕ
⊢ extend m (disjointed (fun i => f i) i) ≤ extend m (f i)
[PROOFSTEP]
exact extend_mono m0 mU (MeasurableSet.disjointed h _) (disjointed_le f _)
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : OuterMeasure α
⊢ m ≤ trim m
[PROOFSTEP]
apply le_ofFunction.mpr
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : OuterMeasure α
⊢ ∀ (s : Set α), ↑m s ≤ extend (fun s x => ↑m s) s
α : Type u_1 inst✝ : MeasurableSpace α m : OuterMeasure α ⊢ extend (fun s x => ↑m s) ∅ = 0
[PROOFSTEP]
intro s
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : OuterMeasure α
s : Set α
⊢ ↑m s ≤ extend (fun s x => ↑m s) s
α : Type u_1 inst✝ : MeasurableSpace α m : OuterMeasure α ⊢ extend (fun s x => ↑m s) ∅ = 0
[PROOFSTEP]
apply le_iInf
[GOAL]
case h
α : Type u_1
inst✝ : MeasurableSpace α
m : OuterMeasure α
s : Set α
⊢ ∀ (i : (fun s => MeasurableSet s) s), ↑m s ≤ (fun s x => ↑m s) s i
α : Type u_1 inst✝ : MeasurableSpace α m : OuterMeasure α ⊢ extend (fun s x => ↑m s) ∅ = 0
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : OuterMeasure α
⊢ extend (fun s x => ↑m s) ∅ = 0
[PROOFSTEP]
apply extend_empty
[GOAL]
case m0
α : Type u_1
inst✝ : MeasurableSpace α
m : OuterMeasure α
⊢ ↑m ∅ = 0
[PROOFSTEP]
simp
[GOAL]
case P0
α : Type u_1
inst✝ : MeasurableSpace α
m : OuterMeasure α
⊢ MeasurableSet ∅
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
H : ∀ {s : Set α}, MeasurableSet s → ↑m₁ s = ↑m₂ s
⊢ trim m₁ = trim m₂
[PROOFSTEP]
unfold trim
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
H : ∀ {s : Set α}, MeasurableSet s → ↑m₁ s = ↑m₂ s
⊢ inducedOuterMeasure (fun s x => ↑m₁ s) (_ : MeasurableSet ∅) (_ : ↑m₁ ∅ = 0) =
    inducedOuterMeasure (fun s x => ↑m₂ s) (_ : MeasurableSet ∅) (_ : ↑m₂ ∅ = 0)
[PROOFSTEP]
congr
[GOAL]
case e_m
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
H : ∀ {s : Set α}, MeasurableSet s → ↑m₁ s = ↑m₂ s
⊢ (fun s x => ↑m₁ s) = fun s x => ↑m₂ s
[PROOFSTEP]
funext s hs
[GOAL]
case e_m.h.h
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
H : ∀ {s : Set α}, MeasurableSet s → ↑m₁ s = ↑m₂ s
s : Set α
hs : MeasurableSet s
⊢ ↑m₁ s = ↑m₂ s
[PROOFSTEP]
exact H hs
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
⊢ m₁ ≤ trim m₂ ↔ ∀ (s : Set α), MeasurableSet s → ↑m₁ s ≤ ↑m₂ s
[PROOFSTEP]
let me := extend (fun s (_p : MeasurableSet s) => measureOf m₂ s)
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
me : Set α → ℝ≥0∞ := extend fun s _p => ↑m₂ s
⊢ m₁ ≤ trim m₂ ↔ ∀ (s : Set α), MeasurableSet s → ↑m₁ s ≤ ↑m₂ s
[PROOFSTEP]
have me_empty : me ∅ = 0 := by apply extend_empty; simp; simp
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
me : Set α → ℝ≥0∞ := extend fun s _p => ↑m₂ s
⊢ me ∅ = 0
[PROOFSTEP]
apply extend_empty
[GOAL]
case m0
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
me : Set α → ℝ≥0∞ := extend fun s _p => ↑m₂ s
⊢ ↑m₂ ∅ = 0
case P0
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
me : Set α → ℝ≥0∞ := extend fun s _p => ↑m₂ s
⊢ MeasurableSet ∅
[PROOFSTEP]
simp
[GOAL]
case P0
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
me : Set α → ℝ≥0∞ := extend fun s _p => ↑m₂ s
⊢ MeasurableSet ∅
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
me : Set α → ℝ≥0∞ := extend fun s _p => ↑m₂ s
me_empty : me ∅ = 0
⊢ m₁ ≤ trim m₂ ↔ ∀ (s : Set α), MeasurableSet s → ↑m₁ s ≤ ↑m₂ s
[PROOFSTEP]
have : m₁ ≤ OuterMeasure.ofFunction me me_empty ↔ (∀ (s : Set α), measureOf m₁ s ≤ me s) := le_ofFunction
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
me : Set α → ℝ≥0∞ := extend fun s _p => ↑m₂ s
me_empty : me ∅ = 0
this : m₁ ≤ OuterMeasure.ofFunction me me_empty ↔ ∀ (s : Set α), ↑m₁ s ≤ me s
⊢ m₁ ≤ trim m₂ ↔ ∀ (s : Set α), MeasurableSet s → ↑m₁ s ≤ ↑m₂ s
[PROOFSTEP]
apply this.trans
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
me : Set α → ℝ≥0∞ := extend fun s _p => ↑m₂ s
me_empty : me ∅ = 0
this : m₁ ≤ OuterMeasure.ofFunction me me_empty ↔ ∀ (s : Set α), ↑m₁ s ≤ me s
⊢ (∀ (s : Set α), ↑m₁ s ≤ me s) ↔ ∀ (s : Set α), MeasurableSet s → ↑m₁ s ≤ ↑m₂ s
[PROOFSTEP]
apply forall_congr'
[GOAL]
case h
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
me : Set α → ℝ≥0∞ := extend fun s _p => ↑m₂ s
me_empty : me ∅ = 0
this : m₁ ≤ OuterMeasure.ofFunction me me_empty ↔ ∀ (s : Set α), ↑m₁ s ≤ me s
⊢ ∀ (a : Set α), ↑m₁ a ≤ me a ↔ MeasurableSet a → ↑m₁ a ≤ ↑m₂ a
[PROOFSTEP]
intro s
[GOAL]
case h
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
me : Set α → ℝ≥0∞ := extend fun s _p => ↑m₂ s
me_empty : me ∅ = 0
this : m₁ ≤ OuterMeasure.ofFunction me me_empty ↔ ∀ (s : Set α), ↑m₁ s ≤ me s
s : Set α
⊢ ↑m₁ s ≤ me s ↔ MeasurableSet s → ↑m₁ s ≤ ↑m₂ s
[PROOFSTEP]
apply le_iInf_iff
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
s : Set α
hs : MeasurableSet s
⊢ ↑(trim m₁) s ≤ ↑m₂ s ↔ ↑m₁ s ≤ ↑m₂ s
[PROOFSTEP]
rw [trim_eq _ hs]
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
⊢ trim m₁ = trim m₂ ↔ ∀ (s : Set α), MeasurableSet s → ↑m₁ s = ↑m₂ s
[PROOFSTEP]
simp only [le_antisymm_iff, trim_le_trim_iff, forall_and]
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : OuterMeasure α
s : Set α
⊢ ↑(trim m) s = ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
[PROOFSTEP]
simp (config := { singlePass := true }) only [iInf_comm]
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : OuterMeasure α
s : Set α
⊢ ↑(trim m) s = ⨅ (t : Set α) (_ : MeasurableSet t) (_ : s ⊆ t), ↑m t
[PROOFSTEP]
exact inducedOuterMeasure_eq_iInf MeasurableSet.iUnion (fun f _ => m.iUnion_nat f) (fun _ _ _ _ h => m.mono h) s
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m : OuterMeasure α
s : Set α
⊢ ↑(trim m) s = ⨅ (t : { t // s ⊆ t ∧ MeasurableSet t }), ↑m ↑t
[PROOFSTEP]
simp [iInf_subtype, iInf_and, trim_eq_iInf]
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m✝ : OuterMeasure α
ι : Type u_2
m : ι → OuterMeasure α
s : Set α
⊢ ↑(sum fun i => trim (m i)) s ≤ ↑(trim (sum m)) s
[PROOFSTEP]
simp [trim_eq_iInf]
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m✝ : OuterMeasure α
ι : Type u_2
m : ι → OuterMeasure α
s : Set α
⊢ ∀ (i : Set α),
    s ⊆ i →
      MeasurableSet i → ∑' (i : ι), ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑(m i) t ≤ ∑' (i_3 : ι), ↑(m i_3) i
[PROOFSTEP]
exact fun t st ht => ENNReal.tsum_le_tsum fun i => iInf_le_of_le t <| iInf_le_of_le st <| iInf_le _ ht
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t = ↑(trim m) s
[PROOFSTEP]
simp only [trim_eq_iInf]
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t = ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
[PROOFSTEP]
set ms := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), m t
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t = ms
[PROOFSTEP]
by_cases hs : ms = ∞
[GOAL]
case pos
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ms = ⊤
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t = ms
[PROOFSTEP]
simp only [hs]
[GOAL]
case pos
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ms = ⊤
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t = ⊤
[PROOFSTEP]
simp only [iInf_eq_top] at hs 
[GOAL]
case pos
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ∀ (i : Set α), s ⊆ i → MeasurableSet i → ↑m i = ⊤
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t = ⊤
[PROOFSTEP]
exact ⟨univ, subset_univ s, MeasurableSet.univ, hs _ (subset_univ s) MeasurableSet.univ⟩
[GOAL]
case neg
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ¬ms = ⊤
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t = ms
[PROOFSTEP]
have : ∀ r > ms, ∃ t, s ⊆ t ∧ MeasurableSet t ∧ m t < r :=
  by
  intro r hs
  have : ∃ t, MeasurableSet t ∧ s ⊆ t ∧ measureOf m t < r := by simpa [iInf_lt_iff] using hs
  rcases this with ⟨t, hmt, hin, hlt⟩
  exists t
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ¬ms = ⊤
⊢ ∀ (r : ℝ≥0∞), r > ms → ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
[PROOFSTEP]
intro r hs
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs✝ : ¬ms = ⊤
r : ℝ≥0∞
hs : r > ms
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
[PROOFSTEP]
have : ∃ t, MeasurableSet t ∧ s ⊆ t ∧ measureOf m t < r := by simpa [iInf_lt_iff] using hs
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs✝ : ¬ms = ⊤
r : ℝ≥0∞
hs : r > ms
⊢ ∃ t, MeasurableSet t ∧ s ⊆ t ∧ ↑m t < r
[PROOFSTEP]
simpa [iInf_lt_iff] using hs
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs✝ : ¬ms = ⊤
r : ℝ≥0∞
hs : r > ms
this : ∃ t, MeasurableSet t ∧ s ⊆ t ∧ ↑m t < r
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
[PROOFSTEP]
rcases this with ⟨t, hmt, hin, hlt⟩
[GOAL]
case intro.intro.intro
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs✝ : ¬ms = ⊤
r : ℝ≥0∞
hs : r > ms
t : Set α
hmt : MeasurableSet t
hin : s ⊆ t
hlt : ↑m t < r
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
[PROOFSTEP]
exists t
[GOAL]
case neg
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ¬ms = ⊤
this : ∀ (r : ℝ≥0∞), r > ms → ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t = ms
[PROOFSTEP]
have : ∀ n : ℕ, ∃ t, s ⊆ t ∧ MeasurableSet t ∧ m t < ms + (n : ℝ≥0∞)⁻¹ :=
  by
  intro n
  refine' this _ (ENNReal.lt_add_right hs _)
  simp
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ¬ms = ⊤
this : ∀ (r : ℝ≥0∞), r > ms → ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
⊢ ∀ (n : ℕ), ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < ms + (↑n)⁻¹
[PROOFSTEP]
intro n
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ¬ms = ⊤
this : ∀ (r : ℝ≥0∞), r > ms → ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
n : ℕ
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < ms + (↑n)⁻¹
[PROOFSTEP]
refine' this _ (ENNReal.lt_add_right hs _)
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ¬ms = ⊤
this : ∀ (r : ℝ≥0∞), r > ms → ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
n : ℕ
⊢ (↑n)⁻¹ ≠ 0
[PROOFSTEP]
simp
[GOAL]
case neg
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ¬ms = ⊤
this✝ : ∀ (r : ℝ≥0∞), r > ms → ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
this : ∀ (n : ℕ), ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < ms + (↑n)⁻¹
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t = ms
[PROOFSTEP]
choose t hsub hm hm' using this
[GOAL]
case neg
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ¬ms = ⊤
this : ∀ (r : ℝ≥0∞), r > ms → ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
t : ℕ → Set α
hsub : ∀ (n : ℕ), s ⊆ t n
hm : ∀ (n : ℕ), MeasurableSet (t n)
hm' : ∀ (n : ℕ), ↑m (t n) < ms + (↑n)⁻¹
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t = ms
[PROOFSTEP]
refine' ⟨⋂ n, t n, subset_iInter hsub, MeasurableSet.iInter hm, _⟩
[GOAL]
case neg
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ¬ms = ⊤
this : ∀ (r : ℝ≥0∞), r > ms → ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
t : ℕ → Set α
hsub : ∀ (n : ℕ), s ⊆ t n
hm : ∀ (n : ℕ), MeasurableSet (t n)
hm' : ∀ (n : ℕ), ↑m (t n) < ms + (↑n)⁻¹
⊢ ↑m (⋂ (n : ℕ), t n) = ms
[PROOFSTEP]
have : Tendsto (fun n : ℕ => ms + (n : ℝ≥0∞)⁻¹) atTop (𝓝 (ms + 0)) :=
  tendsto_const_nhds.add ENNReal.tendsto_inv_nat_nhds_zero
[GOAL]
case neg
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ¬ms = ⊤
this✝ : ∀ (r : ℝ≥0∞), r > ms → ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
t : ℕ → Set α
hsub : ∀ (n : ℕ), s ⊆ t n
hm : ∀ (n : ℕ), MeasurableSet (t n)
hm' : ∀ (n : ℕ), ↑m (t n) < ms + (↑n)⁻¹
this : Tendsto (fun n => ms + (↑n)⁻¹) atTop (𝓝 (ms + 0))
⊢ ↑m (⋂ (n : ℕ), t n) = ms
[PROOFSTEP]
rw [add_zero] at this 
[GOAL]
case neg
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ¬ms = ⊤
this✝ : ∀ (r : ℝ≥0∞), r > ms → ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
t : ℕ → Set α
hsub : ∀ (n : ℕ), s ⊆ t n
hm : ∀ (n : ℕ), MeasurableSet (t n)
hm' : ∀ (n : ℕ), ↑m (t n) < ms + (↑n)⁻¹
this : Tendsto (fun n => ms + (↑n)⁻¹) atTop (𝓝 ms)
⊢ ↑m (⋂ (n : ℕ), t n) = ms
[PROOFSTEP]
refine' le_antisymm (ge_of_tendsto' this fun n => _) _
[GOAL]
case neg.refine'_1
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ¬ms = ⊤
this✝ : ∀ (r : ℝ≥0∞), r > ms → ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
t : ℕ → Set α
hsub : ∀ (n : ℕ), s ⊆ t n
hm : ∀ (n : ℕ), MeasurableSet (t n)
hm' : ∀ (n : ℕ), ↑m (t n) < ms + (↑n)⁻¹
this : Tendsto (fun n => ms + (↑n)⁻¹) atTop (𝓝 ms)
n : ℕ
⊢ ↑m (⋂ (n : ℕ), t n) ≤ ms + (↑n)⁻¹
[PROOFSTEP]
exact le_trans (m.mono' <| iInter_subset t n) (hm' n).le
[GOAL]
case neg.refine'_2
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ¬ms = ⊤
this✝ : ∀ (r : ℝ≥0∞), r > ms → ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
t : ℕ → Set α
hsub : ∀ (n : ℕ), s ⊆ t n
hm : ∀ (n : ℕ), MeasurableSet (t n)
hm' : ∀ (n : ℕ), ↑m (t n) < ms + (↑n)⁻¹
this : Tendsto (fun n => ms + (↑n)⁻¹) atTop (𝓝 ms)
⊢ ms ≤ ↑m (⋂ (n : ℕ), t n)
[PROOFSTEP]
refine' iInf_le_of_le (⋂ n, t n) _
[GOAL]
case neg.refine'_2
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ¬ms = ⊤
this✝ : ∀ (r : ℝ≥0∞), r > ms → ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
t : ℕ → Set α
hsub : ∀ (n : ℕ), s ⊆ t n
hm : ∀ (n : ℕ), MeasurableSet (t n)
hm' : ∀ (n : ℕ), ↑m (t n) < ms + (↑n)⁻¹
this : Tendsto (fun n => ms + (↑n)⁻¹) atTop (𝓝 ms)
⊢ ⨅ (_ : s ⊆ ⋂ (n : ℕ), t n) (_ : MeasurableSet (⋂ (n : ℕ), t n)), ↑m (⋂ (n : ℕ), t n) ≤ ↑m (⋂ (n : ℕ), t n)
[PROOFSTEP]
refine' iInf_le_of_le (subset_iInter hsub) _
[GOAL]
case neg.refine'_2
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
ms : ℝ≥0∞ := ⨅ (t : Set α) (_ : s ⊆ t) (_ : MeasurableSet t), ↑m t
hs : ¬ms = ⊤
this✝ : ∀ (r : ℝ≥0∞), r > ms → ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t < r
t : ℕ → Set α
hsub : ∀ (n : ℕ), s ⊆ t n
hm : ∀ (n : ℕ), MeasurableSet (t n)
hm' : ∀ (n : ℕ), ↑m (t n) < ms + (↑n)⁻¹
this : Tendsto (fun n => ms + (↑n)⁻¹) atTop (𝓝 ms)
⊢ ⨅ (_ : MeasurableSet (⋂ (n : ℕ), t n)), ↑m (⋂ (n : ℕ), t n) ≤ ↑m (⋂ (n : ℕ), t n)
[PROOFSTEP]
refine' iInf_le _ (MeasurableSet.iInter hm)
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
h : ↑(trim m) s = 0
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t = 0
[PROOFSTEP]
rcases exists_measurable_superset_eq_trim m s with ⟨t, hst, ht, hm⟩
[GOAL]
case intro.intro.intro
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
h : ↑(trim m) s = 0
t : Set α
hst : s ⊆ t
ht : MeasurableSet t
hm : ↑m t = ↑(trim m) s
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ↑m t = 0
[PROOFSTEP]
exact ⟨t, hst, ht, h ▸ hm⟩
[GOAL]
α : Type u_1
inst✝¹ : MeasurableSpace α
m : OuterMeasure α
ι : Sort u_2
inst✝ : Countable ι
μ : ι → OuterMeasure α
s : Set α
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ∀ (i : ι), ↑(μ i) t = ↑(trim (μ i)) s
[PROOFSTEP]
choose t hst ht hμt using fun i => (μ i).exists_measurable_superset_eq_trim s
[GOAL]
α : Type u_1
inst✝¹ : MeasurableSpace α
m : OuterMeasure α
ι : Sort u_2
inst✝ : Countable ι
μ : ι → OuterMeasure α
s : Set α
t : ι → Set α
hst : ∀ (i : ι), s ⊆ t i
ht : ∀ (i : ι), MeasurableSet (t i)
hμt : ∀ (i : ι), ↑(μ i) (t i) = ↑(trim (μ i)) s
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ∀ (i : ι), ↑(μ i) t = ↑(trim (μ i)) s
[PROOFSTEP]
replace hst := subset_iInter hst
[GOAL]
α : Type u_1
inst✝¹ : MeasurableSpace α
m : OuterMeasure α
ι : Sort u_2
inst✝ : Countable ι
μ : ι → OuterMeasure α
s : Set α
t : ι → Set α
ht : ∀ (i : ι), MeasurableSet (t i)
hμt : ∀ (i : ι), ↑(μ i) (t i) = ↑(trim (μ i)) s
hst : s ⊆ ⋂ (i : ι), t i
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ∀ (i : ι), ↑(μ i) t = ↑(trim (μ i)) s
[PROOFSTEP]
replace ht := MeasurableSet.iInter ht
[GOAL]
α : Type u_1
inst✝¹ : MeasurableSpace α
m : OuterMeasure α
ι : Sort u_2
inst✝ : Countable ι
μ : ι → OuterMeasure α
s : Set α
t : ι → Set α
hμt : ∀ (i : ι), ↑(μ i) (t i) = ↑(trim (μ i)) s
hst : s ⊆ ⋂ (i : ι), t i
ht : MeasurableSet (⋂ (b : ι), t b)
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ ∀ (i : ι), ↑(μ i) t = ↑(trim (μ i)) s
[PROOFSTEP]
refine' ⟨⋂ i, t i, hst, ht, fun i => le_antisymm _ _⟩
[GOAL]
case refine'_1
α : Type u_1
inst✝¹ : MeasurableSpace α
m : OuterMeasure α
ι : Sort u_2
inst✝ : Countable ι
μ : ι → OuterMeasure α
s : Set α
t : ι → Set α
hμt : ∀ (i : ι), ↑(μ i) (t i) = ↑(trim (μ i)) s
hst : s ⊆ ⋂ (i : ι), t i
ht : MeasurableSet (⋂ (b : ι), t b)
i : ι
⊢ ↑(μ i) (⋂ (i : ι), t i) ≤ ↑(trim (μ i)) s
case refine'_2
α : Type u_1
inst✝¹ : MeasurableSpace α
m : OuterMeasure α
ι : Sort u_2
inst✝ : Countable ι
μ : ι → OuterMeasure α
s : Set α
t : ι → Set α
hμt : ∀ (i : ι), ↑(μ i) (t i) = ↑(trim (μ i)) s
hst : s ⊆ ⋂ (i : ι), t i
ht : MeasurableSet (⋂ (b : ι), t b)
i : ι
⊢ ↑(trim (μ i)) s ≤ ↑(μ i) (⋂ (i : ι), t i)
[PROOFSTEP]
exacts [hμt i ▸ (μ i).mono (iInter_subset _ _), (mono' _ hst).trans_eq ((μ i).trim_eq ht)]
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ m₃ : OuterMeasure α
op : ℝ≥0∞ → ℝ≥0∞ → ℝ≥0∞
h : ∀ (s : Set α), ↑m₁ s = op (↑m₂ s) (↑m₃ s)
s : Set α
⊢ ↑(trim m₁) s = op (↑(trim m₂) s) (↑(trim m₃) s)
[PROOFSTEP]
rcases exists_measurable_superset_forall_eq_trim ![m₁, m₂, m₃] s with ⟨t, _hst, _ht, htm⟩
[GOAL]
case intro.intro.intro
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ m₃ : OuterMeasure α
op : ℝ≥0∞ → ℝ≥0∞ → ℝ≥0∞
h : ∀ (s : Set α), ↑m₁ s = op (↑m₂ s) (↑m₃ s)
s t : Set α
_hst : s ⊆ t
_ht : MeasurableSet t
htm :
  ∀ (i : Fin (Nat.succ (Nat.succ (Nat.succ 0)))),
    ↑(Matrix.vecCons m₁ ![m₂, m₃] i) t = ↑(trim (Matrix.vecCons m₁ ![m₂, m₃] i)) s
⊢ ↑(trim m₁) s = op (↑(trim m₂) s) (↑(trim m₃) s)
[PROOFSTEP]
simp only [Fin.forall_fin_succ, Matrix.cons_val_zero, Matrix.cons_val_succ] at htm 
[GOAL]
case intro.intro.intro
α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ m₃ : OuterMeasure α
op : ℝ≥0∞ → ℝ≥0∞ → ℝ≥0∞
h : ∀ (s : Set α), ↑m₁ s = op (↑m₂ s) (↑m₃ s)
s t : Set α
_hst : s ⊆ t
_ht : MeasurableSet t
htm : ↑m₁ t = ↑(trim m₁) s ∧ ↑m₂ t = ↑(trim m₂) s ∧ ↑m₃ t = ↑(trim m₃) s ∧ ∀ (i : Fin 0), ↑![] t = ↑(trim ![]) s
⊢ ↑(trim m₁) s = op (↑(trim m₂) s) (↑(trim m₃) s)
[PROOFSTEP]
rw [← htm.1, ← htm.2.1, ← htm.2.2.1, h]
[GOAL]
α : Type u_1
inst✝¹ : MeasurableSpace α
m : OuterMeasure α
ι : Sort u_2
inst✝ : Countable ι
μ : ι → OuterMeasure α
⊢ trim (⨆ (i : ι), μ i) = ⨆ (i : ι), trim (μ i)
[PROOFSTEP]
simp_rw [← @iSup_plift_down _ ι]
[GOAL]
α : Type u_1
inst✝¹ : MeasurableSpace α
m : OuterMeasure α
ι : Sort u_2
inst✝ : Countable ι
μ : ι → OuterMeasure α
⊢ trim (⨆ (i : PLift ι), μ i.down) = ⨆ (i : PLift ι), trim (μ i.down)
[PROOFSTEP]
ext1 s
[GOAL]
case h
α : Type u_1
inst✝¹ : MeasurableSpace α
m : OuterMeasure α
ι : Sort u_2
inst✝ : Countable ι
μ : ι → OuterMeasure α
s : Set α
⊢ ↑(trim (⨆ (i : PLift ι), μ i.down)) s = ↑(⨆ (i : PLift ι), trim (μ i.down)) s
[PROOFSTEP]
obtain ⟨t, _, _, hμt⟩ :=
  exists_measurable_superset_forall_eq_trim (Option.elim' (⨆ i, μ (PLift.down i)) (μ ∘ PLift.down)) s
[GOAL]
case h.intro.intro.intro
α : Type u_1
inst✝¹ : MeasurableSpace α
m : OuterMeasure α
ι : Sort u_2
inst✝ : Countable ι
μ : ι → OuterMeasure α
s t : Set α
left✝¹ : s ⊆ t
left✝ : MeasurableSet t
hμt :
  ∀ (i : Option (PLift ι)),
    ↑(Option.elim' (⨆ (i : PLift ι), μ i.down) (μ ∘ PLift.down) i) t =
      ↑(trim (Option.elim' (⨆ (i : PLift ι), μ i.down) (μ ∘ PLift.down) i)) s
⊢ ↑(trim (⨆ (i : PLift ι), μ i.down)) s = ↑(⨆ (i : PLift ι), trim (μ i.down)) s
[PROOFSTEP]
simp only [Option.forall, Option.elim'] at hμt 
[GOAL]
case h.intro.intro.intro
α : Type u_1
inst✝¹ : MeasurableSpace α
m : OuterMeasure α
ι : Sort u_2
inst✝ : Countable ι
μ : ι → OuterMeasure α
s t : Set α
left✝¹ : s ⊆ t
left✝ : MeasurableSet t
hμt :
  ↑(⨆ (i : PLift ι), μ i.down) t = ↑(trim (⨆ (i : PLift ι), μ i.down)) s ∧
    ∀ (x : PLift ι), ↑((μ ∘ PLift.down) x) t = ↑(trim ((μ ∘ PLift.down) x)) s
⊢ ↑(trim (⨆ (i : PLift ι), μ i.down)) s = ↑(⨆ (i : PLift ι), trim (μ i.down)) s
[PROOFSTEP]
simp only [iSup_apply, ← hμt.1]
[GOAL]
case h.intro.intro.intro
α : Type u_1
inst✝¹ : MeasurableSpace α
m : OuterMeasure α
ι : Sort u_2
inst✝ : Countable ι
μ : ι → OuterMeasure α
s t : Set α
left✝¹ : s ⊆ t
left✝ : MeasurableSet t
hμt :
  ↑(⨆ (i : PLift ι), μ i.down) t = ↑(trim (⨆ (i : PLift ι), μ i.down)) s ∧
    ∀ (x : PLift ι), ↑((μ ∘ PLift.down) x) t = ↑(trim ((μ ∘ PLift.down) x)) s
⊢ ⨆ (i : PLift ι), ↑(μ i.down) t = ⨆ (i : PLift ι), ↑(trim (μ i.down)) s
[PROOFSTEP]
exact iSup_congr hμt.2
[GOAL]
α : Type u_1
inst✝ : MeasurableSpace α
m μ : OuterMeasure α
s : Set α
hs : MeasurableSet s
⊢ trim (↑(restrict s) μ) = ↑(restrict s) (trim μ)
[PROOFSTEP]
refine' le_antisymm (fun t => _) (le_trim_iff.2 fun t ht => _)
[GOAL]
case refine'_1
α : Type u_1
inst✝ : MeasurableSpace α
m μ : OuterMeasure α
s : Set α
hs : MeasurableSet s
t : Set α
⊢ ↑(trim (↑(restrict s) μ)) t ≤ ↑(↑(restrict s) (trim μ)) t
[PROOFSTEP]
rw [restrict_apply]
[GOAL]
case refine'_1
α : Type u_1
inst✝ : MeasurableSpace α
m μ : OuterMeasure α
s : Set α
hs : MeasurableSet s
t : Set α
⊢ ↑(trim (↑(restrict s) μ)) t ≤ ↑(trim μ) (t ∩ s)
[PROOFSTEP]
rcases μ.exists_measurable_superset_eq_trim (t ∩ s) with ⟨t', htt', ht', hμt'⟩
[GOAL]
case refine'_1.intro.intro.intro
α : Type u_1
inst✝ : MeasurableSpace α
m μ : OuterMeasure α
s : Set α
hs : MeasurableSet s
t t' : Set α
htt' : t ∩ s ⊆ t'
ht' : MeasurableSet t'
hμt' : ↑μ t' = ↑(trim μ) (t ∩ s)
⊢ ↑(trim (↑(restrict s) μ)) t ≤ ↑(trim μ) (t ∩ s)
[PROOFSTEP]
rw [← hμt']
[GOAL]
case refine'_1.intro.intro.intro
α : Type u_1
inst✝ : MeasurableSpace α
m μ : OuterMeasure α
s : Set α
hs : MeasurableSet s
t t' : Set α
htt' : t ∩ s ⊆ t'
ht' : MeasurableSet t'
hμt' : ↑μ t' = ↑(trim μ) (t ∩ s)
⊢ ↑(trim (↑(restrict s) μ)) t ≤ ↑μ t'
[PROOFSTEP]
rw [inter_subset] at htt' 
[GOAL]
case refine'_1.intro.intro.intro
α : Type u_1
inst✝ : MeasurableSpace α
m μ : OuterMeasure α
s : Set α
hs : MeasurableSet s
t t' : Set α
htt' : t ⊆ sᶜ ∪ t'
ht' : MeasurableSet t'
hμt' : ↑μ t' = ↑(trim μ) (t ∩ s)
⊢ ↑(trim (↑(restrict s) μ)) t ≤ ↑μ t'
[PROOFSTEP]
refine' (mono' _ htt').trans _
[GOAL]
case refine'_1.intro.intro.intro
α : Type u_1
inst✝ : MeasurableSpace α
m μ : OuterMeasure α
s : Set α
hs : MeasurableSet s
t t' : Set α
htt' : t ⊆ sᶜ ∪ t'
ht' : MeasurableSet t'
hμt' : ↑μ t' = ↑(trim μ) (t ∩ s)
⊢ ↑(trim (↑(restrict s) μ)) (sᶜ ∪ t') ≤ ↑μ t'
[PROOFSTEP]
rw [trim_eq _ (hs.compl.union ht'), restrict_apply, union_inter_distrib_right, compl_inter_self, Set.empty_union]
[GOAL]
case refine'_1.intro.intro.intro
α : Type u_1
inst✝ : MeasurableSpace α
m μ : OuterMeasure α
s : Set α
hs : MeasurableSet s
t t' : Set α
htt' : t ⊆ sᶜ ∪ t'
ht' : MeasurableSet t'
hμt' : ↑μ t' = ↑(trim μ) (t ∩ s)
⊢ ↑μ (t' ∩ s) ≤ ↑μ t'
[PROOFSTEP]
exact μ.mono' (inter_subset_left _ _)
[GOAL]
case refine'_2
α : Type u_1
inst✝ : MeasurableSpace α
m μ : OuterMeasure α
s : Set α
hs : MeasurableSet s
t : Set α
ht : MeasurableSet t
⊢ ↑(↑(restrict s) (trim μ)) t ≤ ↑(↑(restrict s) μ) t
[PROOFSTEP]
rw [restrict_apply, trim_eq _ (ht.inter hs), restrict_apply]
