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_2
β : Type u_1
γ : Type ?u.32902
δ : Type ?u.32905
ι : Type ?u.32908
R : Type ?u.32911
R' : Type ?u.32914
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)

tactic: push_neg at htop
state_before: case inr
α : Type u_2
β : Type u_1
γ : Type ?u.32902
δ : Type ?u.32905
ι : Type ?u.32908
R : Type ?u.32911
R' : Type ?u.32914
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_2
β : Type u_1
γ : Type ?u.32902
δ : Type ?u.32905
ι : Type ?u.32908
R : Type ?u.32911
R' : Type ?u.32914
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: set M := toMeasurable μ
state_before: case inr
α : Type u_2
β : Type u_1
γ : Type ?u.32902
δ : Type ?u.32905
ι : Type ?u.32908
R : Type ?u.32911
R' : Type ?u.32914
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: 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_2
β : Type u_1
γ : Type ?u.32902
δ : Type ?u.32905
ι : Type ?u.32908
R : Type ?u.32911
R' : Type ?u.32914
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) =ᵐ[μ] M (t b)
⊢ ↑↑μ (⋃ (b : β), t b) ≤ ↑↑μ (⋃ (b : β), s b)

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_2
β : Type u_1
γ : Type ?u.32902
δ : Type ?u.32905
ι : Type ?u.32908
R : Type ?u.32911
R' : Type ?u.32914
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)

tactic: refine' fun b => ae_eq_of_subset_of_measure_ge (inter_subset_left _ _) _ _ _
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.32902
δ : Type ?u.32905
ι : Type ?u.32908
R : Type ?u.32911
R' : Type ?u.32914
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) =ᵐ[μ] 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_2
β : Type u_1
γ : Type ?u.32902
δ : Type ?u.32905
ι : Type ?u.32908
R : Type ?u.32911
R' : Type ?u.32914
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))

tactic: exact (measurableSet_toMeasurable _ _).inter (measurableSet_toMeasurable _ _)
state_before: case refine'_2
α : Type u_2
β : Type u_1
γ : Type ?u.32902
δ : Type ?u.32905
ι : Type ?u.32908
R : Type ?u.32911
R' : Type ?u.32914
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))

tactic: rw [measure_toMeasurable]
state_before: case refine'_3
α : Type u_2
β : Type u_1
γ : Type ?u.32902
δ : Type ?u.32905
ι : Type ?u.32908
R : Type ?u.32911
R' : Type ?u.32914
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: exact htop b
state_before: case refine'_3
α : Type u_2
β : Type u_1
γ : Type ?u.32902
δ : Type ?u.32905
ι : Type ?u.32908
R : Type ?u.32911
R' : Type ?u.32914
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) ≠ ⊤