Theorem: MeasureTheory.MeasurablySeparable.iUnion
File: Mathlib/MeasureTheory/Constructions/Polish.lean

tactic: choose u hsu htu hu using h
state_before: α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
h : ∀ (m n : ι), MeasurablySeparable (s m) (t n)
⊢ MeasurablySeparable (⋃ n, s n) (⋃ m, t m)
state_after: α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
⊢ MeasurablySeparable (⋃ n, s n) (⋃ m, t m)

tactic: refine ⟨⋃ m, ⋂ n, u m n, ?_, ?_, ?_⟩
state_before: α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
⊢ MeasurablySeparable (⋃ n, s n) (⋃ m, t m)
state_after: case refine_1
α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
⊢ ⋃ n, s n ⊆ ⋃ m, ⋂ n, u m n

case refine_2
α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
⊢ Disjoint (⋃ m, t m) (⋃ m, ⋂ n, u m n)

case refine_3
α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
⊢ MeasurableSet (⋃ m, ⋂ n, u m n)

tactic: refine iUnion_subset fun m => subset_iUnion_of_subset m ?_
state_before: case refine_1
α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
⊢ ⋃ n, s n ⊆ ⋃ m, ⋂ n, u m n
state_after: case refine_1
α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
m : ι
⊢ s m ⊆ ⋂ n, u m n

tactic: exact subset_iInter fun n => hsu m n
state_before: case refine_1
α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
m : ι
⊢ s m ⊆ ⋂ n, u m n
state_after: no goals

tactic: simp_rw [disjoint_iUnion_left, disjoint_iUnion_right]
state_before: case refine_2
α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
⊢ Disjoint (⋃ m, t m) (⋃ m, ⋂ n, u m n)
state_after: case refine_2
α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
⊢ ∀ (i i_1 : ι), Disjoint (t i) (⋂ n, u i_1 n)

tactic: intro n m
state_before: case refine_2
α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
⊢ ∀ (i i_1 : ι), Disjoint (t i) (⋂ n, u i_1 n)
state_after: case refine_2
α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
n m : ι
⊢ Disjoint (t n) (⋂ n, u m n)

tactic: apply Disjoint.mono_right _ (htu m n)
state_before: case refine_2
α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
n m : ι
⊢ Disjoint (t n) (⋂ n, u m n)
state_after: α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
n m : ι
⊢ ⋂ n, u m n ≤ u m n

tactic: apply iInter_subset
state_before: α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
n m : ι
⊢ ⋂ n, u m n ≤ u m n
state_after: no goals

tactic: refine MeasurableSet.iUnion fun m => ?_
state_before: case refine_3
α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
⊢ MeasurableSet (⋃ m, ⋂ n, u m n)
state_after: case refine_3
α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
m : ι
⊢ MeasurableSet (⋂ n, u m n)

tactic: exact MeasurableSet.iInter fun n => hu m n
state_before: case refine_3
α✝ : Type u_1
ι : Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : Countable ι
α : Type u_3
inst✝ : MeasurableSpace α
s t : ι → Set α
u : ι → ι → Set α
hsu : ∀ (m n : ι), s m ⊆ u m n
htu : ∀ (m n : ι), Disjoint (t n) (u m n)
hu : ∀ (m n : ι), MeasurableSet (u m n)
m : ι
⊢ MeasurableSet (⋂ n, u m n)
state_after: no goals