Theorem: MeasureTheory.measure_iUnion_congr_of_subset
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: rcases Classical.em (∃ b, μ (t b) = ∞) with (⟨b, hb⟩ | htop)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
⊢ μ (⋃ b, s b) = μ (⋃ b, t b)
state_after: case inl.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
b : β
hb : μ (t b) = ⊤
⊢ μ (⋃ b, s b) = μ (⋃ b, t b)

case inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ¬∃ b, μ (t b) = ⊤
⊢ μ (⋃ b, s b) = μ (⋃ b, t b)

tactic: push_neg at htop
state_before: case inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ¬∃ b, μ (t b) = ⊤
⊢ μ (⋃ b, s b) = μ (⋃ b, t b)
state_after: case inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ∀ (b : β), μ (t b) ≠ ⊤
⊢ μ (⋃ b, s b) = μ (⋃ b, t b)

tactic: refine le_antisymm (measure_mono (iUnion_mono hsub)) ?_
state_before: case inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ∀ (b : β), μ (t b) ≠ ⊤
⊢ μ (⋃ b, s b) = μ (⋃ b, t b)
state_after: case inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ∀ (b : β), μ (t b) ≠ ⊤
⊢ μ (⋃ b, t b) ≤ μ (⋃ b, s b)

tactic: set M := toMeasurable μ
state_before: case inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ∀ (b : β), μ (t b) ≠ ⊤
⊢ μ (⋃ b, t b) ≤ μ (⋃ b, s b)
state_after: case inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ∀ (b : β), μ (t b) ≠ ⊤
M : Set α → Set α := toMeasurable μ
⊢ μ (⋃ b, t b) ≤ μ (⋃ b, s b)

tactic: calc
  μ (⋃ b, t b) ≤ μ (⋃ b, M (t b)) := measure_mono (iUnion_mono fun b => subset_toMeasurable _ _)
  _ = μ (⋃ b, M (t b) ∩ M (⋃ b, s b)) := measure_congr (EventuallyEq.countable_iUnion H).symm
  _ ≤ μ (M (⋃ b, s b)) := measure_mono (iUnion_subset fun b => inter_subset_right)
  _ = μ (⋃ b, s b) := measure_toMeasurable _
state_before: case inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ∀ (b : β), μ (t b) ≠ ⊤
M : Set α → Set α := toMeasurable μ
H : ∀ (b : β), M (t b) ∩ M (⋃ b, s b) =ᶠ[ae μ] M (t b)
⊢ μ (⋃ b, t b) ≤ μ (⋃ b, s b)
state_after: no goals

tactic: calc
  μ (⋃ b, s b) = ∞ := top_unique (hb ▸ (h_le b).trans <| measure_mono <| subset_iUnion _ _)
  _ = μ (⋃ b, t b) := Eq.symm <| top_unique <| hb ▸ measure_mono (subset_iUnion _ _)
state_before: case inl.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
b : β
hb : μ (t b) = ⊤
⊢ μ (⋃ b, s b) = μ (⋃ b, t b)
state_after: no goals

tactic: refine fun b => ae_eq_of_subset_of_measure_ge inter_subset_left ?_ ?_ ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ∀ (b : β), μ (t b) ≠ ⊤
M : Set α → Set α := toMeasurable μ
⊢ ∀ (b : β), M (t b) ∩ M (⋃ b, s b) =ᶠ[ae μ] M (t b)
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ∀ (b : β), μ (t b) ≠ ⊤
M : Set α → Set α := toMeasurable μ
b : β
⊢ μ (M (t b)) ≤ μ (M (t b) ∩ M (⋃ b, s b))

case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ∀ (b : β), μ (t b) ≠ ⊤
M : Set α → Set α := toMeasurable μ
b : β
⊢ MeasurableSet (M (t b) ∩ M (⋃ b, s b))

case refine_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ∀ (b : β), μ (t b) ≠ ⊤
M : Set α → Set α := toMeasurable μ
b : β
⊢ μ (M (t b)) ≠ ⊤

tactic: calc
  μ (M (t b)) = μ (t b) := measure_toMeasurable _
  _ ≤ μ (s b) := h_le b
  _ ≤ μ (M (t b) ∩ M (⋃ b, s b)) :=
    measure_mono <|
      subset_inter ((hsub b).trans <| subset_toMeasurable _ _)
        ((subset_iUnion _ _).trans <| subset_toMeasurable _ _)
state_before: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ∀ (b : β), μ (t b) ≠ ⊤
M : Set α → Set α := toMeasurable μ
b : β
⊢ μ (M (t b)) ≤ μ (M (t b) ∩ M (⋃ b, s b))
state_after: no goals

tactic: exact (measurableSet_toMeasurable _ _).inter (measurableSet_toMeasurable _ _)
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ∀ (b : β), μ (t b) ≠ ⊤
M : Set α → Set α := toMeasurable μ
b : β
⊢ MeasurableSet (M (t b) ∩ M (⋃ b, s b))
state_after: no goals

tactic: rw [measure_toMeasurable]
state_before: case refine_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ∀ (b : β), μ (t b) ≠ ⊤
M : Set α → Set α := toMeasurable μ
b : β
⊢ μ (M (t b)) ≠ ⊤
state_after: case refine_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ∀ (b : β), μ (t b) ≠ ⊤
M : Set α → Set α := toMeasurable μ
b : β
⊢ μ (t b) ≠ ⊤

tactic: exact htop b
state_before: case refine_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
inst✝ : Countable β
s t : β → Set α
hsub : ∀ (b : β), s b ⊆ t b
h_le : ∀ (b : β), μ (t b) ≤ μ (s b)
htop : ∀ (b : β), μ (t b) ≠ ⊤
M : Set α → Set α := toMeasurable μ
b : β
⊢ μ (t b) ≠ ⊤
state_after: no goals