Theorem: MeasureTheory.OuterMeasure.isCaratheodory_iUnion_nat
File: Mathlib/MeasureTheory/Measure/OuterMeasure.lean

tactic: apply (isCaratheodory_iff_le' m).mpr
state_before: α : 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)

tactic: intro t
state_before: α : 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

tactic: 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]
state_before: α : 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

tactic: refine' le_trans (add_le_add_right hp _) _
state_before: α : 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

tactic: rw [ENNReal.iSup_add]
state_before: α : 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

tactic: refine'
  iSup_le fun n =>
    le_trans (add_le_add_left _ _) (ge_of_eq (isCaratheodory_iUnion_lt m (fun i _ => h i) _))
state_before: α : 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

tactic: refine' m.mono (diff_subset_diff_right _)
state_before: α : 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)

tactic: exact iUnion₂_subset fun i _ => subset_iUnion _ i
state_before: α : 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

tactic: convert m.iUnion fun i => t ∩ s i using 1
state_before: α : 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)

tactic: . simp [inter_iUnion]
state_before: 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)

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)

tactic: . simp [ENNReal.tsum_eq_iSup_nat, isCaratheodory_sum m h hd]
state_before: 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)

tactic: simp [inter_iUnion]
state_before: 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)

tactic: simp [ENNReal.tsum_eq_iSup_nat, isCaratheodory_sum m h hd]
state_before: 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)