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

Proof steps:
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: rcases Classical.em (∃ b, μ (t b) = ∞) with (⟨b, hb⟩ | 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: 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, t b) ≤ μ (⋃ b, s 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, 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: 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) ≠ ⊤
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, 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 _