[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
s₁ s₂ : Set (Set Ω)
h : IndepSets s₁ s₂ κ
⊢ IndepSets s₂ s₁ κ
[PROOFSTEP]
intros t1 t2 ht1 ht2
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
s₁ s₂ : Set (Set Ω)
h : IndepSets s₁ s₂ κ
t1 t2 : Set Ω
ht1 : t1 ∈ s₂
ht2 : t2 ∈ s₁
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
filter_upwards [h t2 t1 ht2 ht1] with a ha
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
s₁ s₂ : Set (Set Ω)
h : IndepSets s₁ s₂ κ
t1 t2 : Set Ω
ht1 : t1 ∈ s₂
ht2 : t2 ∈ s₁
a : α
ha : ↑↑(↑κ a) (t2 ∩ t1) = ↑↑(↑κ a) t2 * ↑↑(↑κ a) t1
⊢ ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
rwa [Set.inter_comm, mul_comm]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m' _mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
⊢ Indep m' ⊥ κ
[PROOFSTEP]
intros s t _ ht
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m' _mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s t : Set Ω
a✝ : s ∈ {s | MeasurableSet s}
ht : t ∈ {s | MeasurableSet s}
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (s ∩ t) = ↑↑(↑κ a) s * ↑↑(↑κ a) t
[PROOFSTEP]
rw [Set.mem_setOf_eq, MeasurableSpace.measurableSet_bot_iff] at ht 
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m' _mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s t : Set Ω
a✝ : s ∈ {s | MeasurableSet s}
ht : t = ∅ ∨ t = Set.univ
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (s ∩ t) = ↑↑(↑κ a) s * ↑↑(↑κ a) t
[PROOFSTEP]
refine Filter.eventually_of_forall (fun a ↦ ?_)
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m' _mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s t : Set Ω
a✝ : s ∈ {s | MeasurableSet s}
ht : t = ∅ ∨ t = Set.univ
a : α
⊢ ↑↑(↑κ a) (s ∩ t) = ↑↑(↑κ a) s * ↑↑(↑κ a) t
[PROOFSTEP]
cases' ht with ht ht
[GOAL]
case inl
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m' _mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s t : Set Ω
a✝ : s ∈ {s | MeasurableSet s}
a : α
ht : t = ∅
⊢ ↑↑(↑κ a) (s ∩ t) = ↑↑(↑κ a) s * ↑↑(↑κ a) t
[PROOFSTEP]
rw [ht, Set.inter_empty, measure_empty, mul_zero]
[GOAL]
case inr
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m' _mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s t : Set Ω
a✝ : s ∈ {s | MeasurableSet s}
a : α
ht : t = Set.univ
⊢ ↑↑(↑κ a) (s ∩ t) = ↑↑(↑κ a) s * ↑↑(↑κ a) t
[PROOFSTEP]
rw [ht, Set.inter_univ, measure_univ, mul_one]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : Set Ω
⊢ IndepSet s ∅ κ
[PROOFSTEP]
simp only [IndepSet, generateFrom_singleton_empty]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : Set Ω
⊢ Indep (generateFrom {s}) ⊥ κ
[PROOFSTEP]
exact indep_bot_right _
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s₁ s₂ s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h₁ : IndepSets s₁ s' κ
h₂ : IndepSets s₂ s' κ
⊢ IndepSets (s₁ ∪ s₂) s' κ
[PROOFSTEP]
intro t1 t2 ht1 ht2
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s₁ s₂ s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h₁ : IndepSets s₁ s' κ
h₂ : IndepSets s₂ s' κ
t1 t2 : Set Ω
ht1 : t1 ∈ s₁ ∪ s₂
ht2 : t2 ∈ s'
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
cases' (Set.mem_union _ _ _).mp ht1 with ht1₁ ht1₂
[GOAL]
case inl
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s₁ s₂ s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h₁ : IndepSets s₁ s' κ
h₂ : IndepSets s₂ s' κ
t1 t2 : Set Ω
ht1 : t1 ∈ s₁ ∪ s₂
ht2 : t2 ∈ s'
ht1₁ : t1 ∈ s₁
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
exact h₁ t1 t2 ht1₁ ht2
[GOAL]
case inr
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s₁ s₂ s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h₁ : IndepSets s₁ s' κ
h₂ : IndepSets s₂ s' κ
t1 t2 : Set Ω
ht1 : t1 ∈ s₁ ∪ s₂
ht2 : t2 ∈ s'
ht1₂ : t1 ∈ s₂
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
exact h₂ t1 t2 ht1₂ ht2
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
hyp : ∀ (n : ι), IndepSets (s n) s' κ
⊢ IndepSets (⋃ (n : ι), s n) s' κ
[PROOFSTEP]
intro t1 t2 ht1 ht2
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
hyp : ∀ (n : ι), IndepSets (s n) s' κ
t1 t2 : Set Ω
ht1 : t1 ∈ ⋃ (n : ι), s n
ht2 : t2 ∈ s'
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
rw [Set.mem_iUnion] at ht1 
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
hyp : ∀ (n : ι), IndepSets (s n) s' κ
t1 t2 : Set Ω
ht1 : ∃ i, t1 ∈ s i
ht2 : t2 ∈ s'
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
cases' ht1 with n ht1
[GOAL]
case intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
hyp : ∀ (n : ι), IndepSets (s n) s' κ
t1 t2 : Set Ω
ht2 : t2 ∈ s'
n : ι
ht1 : t1 ∈ s n
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
exact hyp n t1 t2 ht1 ht2
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
u : Set ι
hyp : ∀ (n : ι), n ∈ u → IndepSets (s n) s' κ
⊢ IndepSets (⋃ (n : ι) (_ : n ∈ u), s n) s' κ
[PROOFSTEP]
intro t1 t2 ht1 ht2
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
u : Set ι
hyp : ∀ (n : ι), n ∈ u → IndepSets (s n) s' κ
t1 t2 : Set Ω
ht1 : t1 ∈ ⋃ (n : ι) (_ : n ∈ u), s n
ht2 : t2 ∈ s'
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
simp_rw [Set.mem_iUnion] at ht1 
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
u : Set ι
hyp : ∀ (n : ι), n ∈ u → IndepSets (s n) s' κ
t1 t2 : Set Ω
ht2 : t2 ∈ s'
ht1 : ∃ i i_1, t1 ∈ s i
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
rcases ht1 with ⟨n, hpn, ht1⟩
[GOAL]
case intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
u : Set ι
hyp : ∀ (n : ι), n ∈ u → IndepSets (s n) s' κ
t1 t2 : Set Ω
ht2 : t2 ∈ s'
n : ι
hpn : n ∈ u
ht1 : t1 ∈ s n
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
exact hyp n hpn t1 t2 ht1 ht2
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h : ∃ n, IndepSets (s n) s' κ
⊢ IndepSets (⋂ (n : ι), s n) s' κ
[PROOFSTEP]
intro t1 t2 ht1 ht2
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h : ∃ n, IndepSets (s n) s' κ
t1 t2 : Set Ω
ht1 : t1 ∈ ⋂ (n : ι), s n
ht2 : t2 ∈ s'
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
cases' h with n h
[GOAL]
case intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
t1 t2 : Set Ω
ht1 : t1 ∈ ⋂ (n : ι), s n
ht2 : t2 ∈ s'
n : ι
h : IndepSets (s n) s' κ
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
exact h t1 t2 (Set.mem_iInter.mp ht1 n) ht2
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
u : Set ι
h : ∃ n, n ∈ u ∧ IndepSets (s n) s' κ
⊢ IndepSets (⋂ (n : ι) (_ : n ∈ u), s n) s' κ
[PROOFSTEP]
intro t1 t2 ht1 ht2
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
u : Set ι
h : ∃ n, n ∈ u ∧ IndepSets (s n) s' κ
t1 t2 : Set Ω
ht1 : t1 ∈ ⋂ (n : ι) (_ : n ∈ u), s n
ht2 : t2 ∈ s'
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
rcases h with ⟨n, hn, h⟩
[GOAL]
case intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
s' : Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
u : Set ι
t1 t2 : Set Ω
ht1 : t1 ∈ ⋂ (n : ι) (_ : n ∈ u), s n
ht2 : t2 ∈ s'
n : ι
hn : n ∈ u
h : IndepSets (s n) s' κ
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
exact h t1 t2 (Set.biInter_subset_of_mem hn ht1) ht2
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s t : Set Ω
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (s ∩ t) = ↑↑(↑κ a) s * ↑↑(↑κ a) t
s1 t1 : Set Ω
hs1 : s1 ∈ {s}
ht1 : t1 ∈ {t}
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (s1 ∩ t1) = ↑↑(↑κ a) s1 * ↑↑(↑κ a) t1
[PROOFSTEP]
rwa [Set.mem_singleton_iff.mp hs1, Set.mem_singleton_iff.mp ht1]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
⊢ IndepSets (s i) (s j) κ
[PROOFSTEP]
classical
intro t₁ t₂ ht₁ ht₂
have hf_m : ∀ x : ι, x ∈ ({ i, j } : Finset ι) → ite (x = i) t₁ t₂ ∈ s x :=
  by
  intro x hx
  cases' Finset.mem_insert.mp hx with hx hx
  · simp [hx, ht₁]
  · simp [Finset.mem_singleton.mp hx, hij.symm, ht₂]
have h1 : t₁ = ite (i = i) t₁ t₂ := by simp only [if_true, eq_self_iff_true]
have h2 : t₂ = ite (j = i) t₁ t₂ := by simp only [hij.symm, if_false]
have h_inter : ⋂ (t : ι) (_ : t ∈ ({ i, j } : Finset ι)), ite (t = i) t₁ t₂ = ite (i = i) t₁ t₂ ∩ ite (j = i) t₁ t₂ :=
  by simp only [Finset.set_biInter_singleton, Finset.set_biInter_insert]
filter_upwards [h_indep { i, j } hf_m] with a h_indep'
have h_prod :
  (∏ t : ι in ({ i, j } : Finset ι), κ a (ite (t = i) t₁ t₂)) = κ a (ite (i = i) t₁ t₂) * κ a (ite (j = i) t₁ t₂) := by
  simp only [hij, Finset.prod_singleton, Finset.prod_insert, not_false_iff, Finset.mem_singleton]
rw [h1]
nth_rw 2 [h2]
nth_rw 4 [h2]
rw [← h_inter, ← h_prod, h_indep']
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
⊢ IndepSets (s i) (s j) κ
[PROOFSTEP]
intro t₁ t₂ ht₁ ht₂
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t₁ ∩ t₂) = ↑↑(↑κ a) t₁ * ↑↑(↑κ a) t₂
[PROOFSTEP]
have hf_m : ∀ x : ι, x ∈ ({ i, j } : Finset ι) → ite (x = i) t₁ t₂ ∈ s x :=
  by
  intro x hx
  cases' Finset.mem_insert.mp hx with hx hx
  · simp [hx, ht₁]
  · simp [Finset.mem_singleton.mp hx, hij.symm, ht₂]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
⊢ ∀ (x : ι), x ∈ {i, j} → (if x = i then t₁ else t₂) ∈ s x
[PROOFSTEP]
intro x hx
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
x : ι
hx : x ∈ {i, j}
⊢ (if x = i then t₁ else t₂) ∈ s x
[PROOFSTEP]
cases' Finset.mem_insert.mp hx with hx hx
[GOAL]
case inl
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
x : ι
hx✝ : x ∈ {i, j}
hx : x = i
⊢ (if x = i then t₁ else t₂) ∈ s x
[PROOFSTEP]
simp [hx, ht₁]
[GOAL]
case inr
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
x : ι
hx✝ : x ∈ {i, j}
hx : x ∈ {j}
⊢ (if x = i then t₁ else t₂) ∈ s x
[PROOFSTEP]
simp [Finset.mem_singleton.mp hx, hij.symm, ht₂]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
hf_m : ∀ (x : ι), x ∈ {i, j} → (if x = i then t₁ else t₂) ∈ s x
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t₁ ∩ t₂) = ↑↑(↑κ a) t₁ * ↑↑(↑κ a) t₂
[PROOFSTEP]
have h1 : t₁ = ite (i = i) t₁ t₂ := by simp only [if_true, eq_self_iff_true]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
hf_m : ∀ (x : ι), x ∈ {i, j} → (if x = i then t₁ else t₂) ∈ s x
⊢ t₁ = if i = i then t₁ else t₂
[PROOFSTEP]
simp only [if_true, eq_self_iff_true]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
hf_m : ∀ (x : ι), x ∈ {i, j} → (if x = i then t₁ else t₂) ∈ s x
h1 : t₁ = if i = i then t₁ else t₂
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t₁ ∩ t₂) = ↑↑(↑κ a) t₁ * ↑↑(↑κ a) t₂
[PROOFSTEP]
have h2 : t₂ = ite (j = i) t₁ t₂ := by simp only [hij.symm, if_false]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
hf_m : ∀ (x : ι), x ∈ {i, j} → (if x = i then t₁ else t₂) ∈ s x
h1 : t₁ = if i = i then t₁ else t₂
⊢ t₂ = if j = i then t₁ else t₂
[PROOFSTEP]
simp only [hij.symm, if_false]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
hf_m : ∀ (x : ι), x ∈ {i, j} → (if x = i then t₁ else t₂) ∈ s x
h1 : t₁ = if i = i then t₁ else t₂
h2 : t₂ = if j = i then t₁ else t₂
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t₁ ∩ t₂) = ↑↑(↑κ a) t₁ * ↑↑(↑κ a) t₂
[PROOFSTEP]
have h_inter : ⋂ (t : ι) (_ : t ∈ ({ i, j } : Finset ι)), ite (t = i) t₁ t₂ = ite (i = i) t₁ t₂ ∩ ite (j = i) t₁ t₂ :=
  by simp only [Finset.set_biInter_singleton, Finset.set_biInter_insert]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
hf_m : ∀ (x : ι), x ∈ {i, j} → (if x = i then t₁ else t₂) ∈ s x
h1 : t₁ = if i = i then t₁ else t₂
h2 : t₂ = if j = i then t₁ else t₂
⊢ (⋂ (t : ι) (_ : t ∈ {i, j}), if t = i then t₁ else t₂) = (if i = i then t₁ else t₂) ∩ if j = i then t₁ else t₂
[PROOFSTEP]
simp only [Finset.set_biInter_singleton, Finset.set_biInter_insert]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
hf_m : ∀ (x : ι), x ∈ {i, j} → (if x = i then t₁ else t₂) ∈ s x
h1 : t₁ = if i = i then t₁ else t₂
h2 : t₂ = if j = i then t₁ else t₂
h_inter : (⋂ (t : ι) (_ : t ∈ {i, j}), if t = i then t₁ else t₂) = (if i = i then t₁ else t₂) ∩ if j = i then t₁ else t₂
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t₁ ∩ t₂) = ↑↑(↑κ a) t₁ * ↑↑(↑κ a) t₂
[PROOFSTEP]
filter_upwards [h_indep { i, j } hf_m] with a h_indep'
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
hf_m : ∀ (x : ι), x ∈ {i, j} → (if x = i then t₁ else t₂) ∈ s x
h1 : t₁ = if i = i then t₁ else t₂
h2 : t₂ = if j = i then t₁ else t₂
h_inter : (⋂ (t : ι) (_ : t ∈ {i, j}), if t = i then t₁ else t₂) = (if i = i then t₁ else t₂) ∩ if j = i then t₁ else t₂
a : α
h_indep' :
  ↑↑(↑κ a) (⋂ (i_1 : ι) (_ : i_1 ∈ {i, j}), if i_1 = i then t₁ else t₂) =
    ∏ i_1 in {i, j}, ↑↑(↑κ a) (if i_1 = i then t₁ else t₂)
⊢ ↑↑(↑κ a) (t₁ ∩ t₂) = ↑↑(↑κ a) t₁ * ↑↑(↑κ a) t₂
[PROOFSTEP]
have h_prod :
  (∏ t : ι in ({ i, j } : Finset ι), κ a (ite (t = i) t₁ t₂)) = κ a (ite (i = i) t₁ t₂) * κ a (ite (j = i) t₁ t₂) := by
  simp only [hij, Finset.prod_singleton, Finset.prod_insert, not_false_iff, Finset.mem_singleton]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
hf_m : ∀ (x : ι), x ∈ {i, j} → (if x = i then t₁ else t₂) ∈ s x
h1 : t₁ = if i = i then t₁ else t₂
h2 : t₂ = if j = i then t₁ else t₂
h_inter : (⋂ (t : ι) (_ : t ∈ {i, j}), if t = i then t₁ else t₂) = (if i = i then t₁ else t₂) ∩ if j = i then t₁ else t₂
a : α
h_indep' :
  ↑↑(↑κ a) (⋂ (i_1 : ι) (_ : i_1 ∈ {i, j}), if i_1 = i then t₁ else t₂) =
    ∏ i_1 in {i, j}, ↑↑(↑κ a) (if i_1 = i then t₁ else t₂)
⊢ ∏ t in {i, j}, ↑↑(↑κ a) (if t = i then t₁ else t₂) =
    ↑↑(↑κ a) (if i = i then t₁ else t₂) * ↑↑(↑κ a) (if j = i then t₁ else t₂)
[PROOFSTEP]
simp only [hij, Finset.prod_singleton, Finset.prod_insert, not_false_iff, Finset.mem_singleton]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
hf_m : ∀ (x : ι), x ∈ {i, j} → (if x = i then t₁ else t₂) ∈ s x
h1 : t₁ = if i = i then t₁ else t₂
h2 : t₂ = if j = i then t₁ else t₂
h_inter : (⋂ (t : ι) (_ : t ∈ {i, j}), if t = i then t₁ else t₂) = (if i = i then t₁ else t₂) ∩ if j = i then t₁ else t₂
a : α
h_indep' :
  ↑↑(↑κ a) (⋂ (i_1 : ι) (_ : i_1 ∈ {i, j}), if i_1 = i then t₁ else t₂) =
    ∏ i_1 in {i, j}, ↑↑(↑κ a) (if i_1 = i then t₁ else t₂)
h_prod :
  ∏ t in {i, j}, ↑↑(↑κ a) (if t = i then t₁ else t₂) =
    ↑↑(↑κ a) (if i = i then t₁ else t₂) * ↑↑(↑κ a) (if j = i then t₁ else t₂)
⊢ ↑↑(↑κ a) (t₁ ∩ t₂) = ↑↑(↑κ a) t₁ * ↑↑(↑κ a) t₂
[PROOFSTEP]
rw [h1]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
hf_m : ∀ (x : ι), x ∈ {i, j} → (if x = i then t₁ else t₂) ∈ s x
h1 : t₁ = if i = i then t₁ else t₂
h2 : t₂ = if j = i then t₁ else t₂
h_inter : (⋂ (t : ι) (_ : t ∈ {i, j}), if t = i then t₁ else t₂) = (if i = i then t₁ else t₂) ∩ if j = i then t₁ else t₂
a : α
h_indep' :
  ↑↑(↑κ a) (⋂ (i_1 : ι) (_ : i_1 ∈ {i, j}), if i_1 = i then t₁ else t₂) =
    ∏ i_1 in {i, j}, ↑↑(↑κ a) (if i_1 = i then t₁ else t₂)
h_prod :
  ∏ t in {i, j}, ↑↑(↑κ a) (if t = i then t₁ else t₂) =
    ↑↑(↑κ a) (if i = i then t₁ else t₂) * ↑↑(↑κ a) (if j = i then t₁ else t₂)
⊢ ↑↑(↑κ a) ((if i = i then t₁ else t₂) ∩ t₂) = ↑↑(↑κ a) (if i = i then t₁ else t₂) * ↑↑(↑κ a) t₂
[PROOFSTEP]
nth_rw 2 [h2]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
hf_m : ∀ (x : ι), x ∈ {i, j} → (if x = i then t₁ else t₂) ∈ s x
h1 : t₁ = if i = i then t₁ else t₂
h2 : t₂ = if j = i then t₁ else t₂
h_inter : (⋂ (t : ι) (_ : t ∈ {i, j}), if t = i then t₁ else t₂) = (if i = i then t₁ else t₂) ∩ if j = i then t₁ else t₂
a : α
h_indep' :
  ↑↑(↑κ a) (⋂ (i_1 : ι) (_ : i_1 ∈ {i, j}), if i_1 = i then t₁ else t₂) =
    ∏ i_1 in {i, j}, ↑↑(↑κ a) (if i_1 = i then t₁ else t₂)
h_prod :
  ∏ t in {i, j}, ↑↑(↑κ a) (if t = i then t₁ else t₂) =
    ↑↑(↑κ a) (if i = i then t₁ else t₂) * ↑↑(↑κ a) (if j = i then t₁ else t₂)
⊢ ↑↑(↑κ a) ((if i = i then t₁ else t₂) ∩ if j = i then t₁ else t₂) = ↑↑(↑κ a) (if i = i then t₁ else t₂) * ↑↑(↑κ a) t₂
[PROOFSTEP]
nth_rw 4 [h2]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → Set (Set Ω)
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndepSets s κ
i j : ι
hij : i ≠ j
t₁ t₂ : Set Ω
ht₁ : t₁ ∈ s i
ht₂ : t₂ ∈ s j
hf_m : ∀ (x : ι), x ∈ {i, j} → (if x = i then t₁ else t₂) ∈ s x
h1 : t₁ = if i = i then t₁ else t₂
h2 : t₂ = if j = i then t₁ else t₂
h_inter : (⋂ (t : ι) (_ : t ∈ {i, j}), if t = i then t₁ else t₂) = (if i = i then t₁ else t₂) ∩ if j = i then t₁ else t₂
a : α
h_indep' :
  ↑↑(↑κ a) (⋂ (i_1 : ι) (_ : i_1 ∈ {i, j}), if i_1 = i then t₁ else t₂) =
    ∏ i_1 in {i, j}, ↑↑(↑κ a) (if i_1 = i then t₁ else t₂)
h_prod :
  ∏ t in {i, j}, ↑↑(↑κ a) (if t = i then t₁ else t₂) =
    ↑↑(↑κ a) (if i = i then t₁ else t₂) * ↑↑(↑κ a) (if j = i then t₁ else t₂)
⊢ ↑↑(↑κ a) ((if i = i then t₁ else t₂) ∩ if j = i then t₁ else t₂) =
    ↑↑(↑κ a) (if i = i then t₁ else t₂) * ↑↑(↑κ a) (if j = i then t₁ else t₂)
[PROOFSTEP]
rw [← h_inter, ← h_prod, h_indep']
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m : ι → MeasurableSpace Ω
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndep m κ
i j : ι
hij : i ≠ j
⊢ Indep (m i) (m j) κ
[PROOFSTEP]
change IndepSets ((fun x => MeasurableSet[m x]) i) ((fun x => MeasurableSet[m x]) j) κ μ
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m : ι → MeasurableSpace Ω
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : iIndep m κ
i j : ι
hij : i ≠ j
⊢ IndepSets ((fun x => MeasurableSet) i) ((fun x => MeasurableSet) j) κ
[PROOFSTEP]
exact iIndepSets.indepSets h_indep hij
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
refine @induction_on_inter _ (fun t ↦ ∀ᵐ a ∂μ, κ a (t1 ∩ t) = κ a t1 * κ a t) _ m₂ hpm2 hp2 ?_ ?_ ?_ ?_ t2 ht2m
[GOAL]
case refine_1
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
⊢ (fun t => ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t) ∅
[PROOFSTEP]
simp only [Set.inter_empty, measure_empty, mul_zero, eq_self_iff_true, Filter.eventually_true]
[GOAL]
case refine_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
⊢ ∀ (t : Set Ω), t ∈ p2 → (fun t => ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t) t
[PROOFSTEP]
exact fun t ht_mem_p2 ↦ hyp t1 t ht1 ht_mem_p2
[GOAL]
case refine_3
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
⊢ ∀ (t : Set Ω),
    MeasurableSet t →
      (fun t => ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t) t →
        (fun t => ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t) tᶜ
[PROOFSTEP]
intros t ht h
[GOAL]
case refine_3
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
t : Set Ω
ht : MeasurableSet t
h : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ tᶜ) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) tᶜ
[PROOFSTEP]
filter_upwards [h] with a ha
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
t : Set Ω
ht : MeasurableSet t
h : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t
a : α
ha : ↑↑(↑κ a) (t1 ∩ t) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t
⊢ ↑↑(↑κ a) (t1 ∩ tᶜ) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) tᶜ
[PROOFSTEP]
have : t1 ∩ tᶜ = t1 \ (t1 ∩ t) := by rw [Set.diff_self_inter, Set.diff_eq_compl_inter, Set.inter_comm]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
t : Set Ω
ht : MeasurableSet t
h : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t
a : α
ha : ↑↑(↑κ a) (t1 ∩ t) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t
⊢ t1 ∩ tᶜ = t1 \ (t1 ∩ t)
[PROOFSTEP]
rw [Set.diff_self_inter, Set.diff_eq_compl_inter, Set.inter_comm]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
t : Set Ω
ht : MeasurableSet t
h : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t
a : α
ha : ↑↑(↑κ a) (t1 ∩ t) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t
this : t1 ∩ tᶜ = t1 \ (t1 ∩ t)
⊢ ↑↑(↑κ a) (t1 ∩ tᶜ) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) tᶜ
[PROOFSTEP]
rw [this, measure_diff (Set.inter_subset_left _ _) (ht1m.inter (h2 _ ht)) (measure_ne_top (κ a) _),
  measure_compl (h2 _ ht) (measure_ne_top (κ a) t), measure_univ, ENNReal.mul_sub (fun _ _ ↦ measure_ne_top (κ a) _),
  mul_one, ha]
[GOAL]
case refine_4
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
⊢ ∀ (f : ℕ → Set Ω),
    Pairwise (Disjoint on f) →
      (∀ (i : ℕ), MeasurableSet (f i)) →
        (∀ (i : ℕ), (fun t => ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t) (f i)) →
          (fun t => ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t) (⋃ (i : ℕ), f i)
[PROOFSTEP]
intros f hf_disj hf_meas h
[GOAL]
case refine_4
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ (i : ℕ), (fun t => ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t) (f i)
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ ⋃ (i : ℕ), f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (⋃ (i : ℕ), f i)
[PROOFSTEP]
rw [← ae_all_iff] at h 
[GOAL]
case refine_4
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ ⋃ (i : ℕ), f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (⋃ (i : ℕ), f i)
[PROOFSTEP]
filter_upwards [h] with a ha
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
⊢ ↑↑(↑κ a) (t1 ∩ ⋃ (i : ℕ), f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (⋃ (i : ℕ), f i)
[PROOFSTEP]
rw [Set.inter_iUnion, measure_iUnion]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
⊢ ∑' (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (⋃ (i : ℕ), f i)
[PROOFSTEP]
rw [measure_iUnion hf_disj (fun i ↦ h2 _ (hf_meas i))]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
⊢ ∑' (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ∑' (i : ℕ), ↑↑(↑κ a) (f i)
[PROOFSTEP]
rw [← ENNReal.tsum_mul_left]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
⊢ ∑' (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ∑' (i : ℕ), ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
[PROOFSTEP]
congr with i
[GOAL]
case h.e_f.h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
i : ℕ
⊢ ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
[PROOFSTEP]
rw [ha i]
[GOAL]
case h.hn
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
⊢ Pairwise (Disjoint on fun i => t1 ∩ f i)
[PROOFSTEP]
intros i j hij
[GOAL]
case h.hn
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
i j : ℕ
hij : i ≠ j
⊢ (Disjoint on fun i => t1 ∩ f i) i j
[PROOFSTEP]
rw [Function.onFun, Set.inter_comm t1, Set.inter_comm t1]
[GOAL]
case h.hn
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
i j : ℕ
hij : i ≠ j
⊢ Disjoint (f i ∩ t1) (f j ∩ t1)
[PROOFSTEP]
exact Disjoint.inter_left _ (Disjoint.inter_right _ (hf_disj hij))
[GOAL]
case h.h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m₂ m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h2 : m₂ ≤ m
hp2 : IsPiSystem p2
hpm2 : m₂ = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ p1
ht1m : MeasurableSet t1
ht2m : MeasurableSet t2
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (t1 ∩ f i) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) (f i)
⊢ ∀ (i : ℕ), MeasurableSet (t1 ∩ f i)
[PROOFSTEP]
exact fun i ↦ ht1m.inter (h2 _ (hf_meas i))
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
⊢ Indep m1 m2 κ
[PROOFSTEP]
intros t1 t2 ht1 ht2
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
refine @induction_on_inter _ (fun t ↦ ∀ᵐ (a : α) ∂μ, κ a (t ∩ t2) = κ a t * κ a t2) _ m1 hpm1 hp1 ?_ ?_ ?_ ?_ _ ht1
[GOAL]
case refine_1
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
⊢ (fun t => ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t ∩ t2) = ↑↑(↑κ a) t * ↑↑(↑κ a) t2) ∅
[PROOFSTEP]
simp only [Set.empty_inter, measure_empty, zero_mul, eq_self_iff_true, Filter.eventually_true]
[GOAL]
case refine_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
⊢ ∀ (t : Set Ω), t ∈ p1 → (fun t => ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t ∩ t2) = ↑↑(↑κ a) t * ↑↑(↑κ a) t2) t
[PROOFSTEP]
intros t ht_mem_p1
[GOAL]
case refine_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
t : Set Ω
ht_mem_p1 : t ∈ p1
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t ∩ t2) = ↑↑(↑κ a) t * ↑↑(↑κ a) t2
[PROOFSTEP]
have ht1 : MeasurableSet[m] t := by
  refine h1 _ ?_
  rw [hpm1]
  exact measurableSet_generateFrom ht_mem_p1
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
t : Set Ω
ht_mem_p1 : t ∈ p1
⊢ MeasurableSet t
[PROOFSTEP]
refine h1 _ ?_
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
t : Set Ω
ht_mem_p1 : t ∈ p1
⊢ MeasurableSet t
[PROOFSTEP]
rw [hpm1]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
t : Set Ω
ht_mem_p1 : t ∈ p1
⊢ MeasurableSet t
[PROOFSTEP]
exact measurableSet_generateFrom ht_mem_p1
[GOAL]
case refine_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1✝ : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
t : Set Ω
ht_mem_p1 : t ∈ p1
ht1 : MeasurableSet t
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t ∩ t2) = ↑↑(↑κ a) t * ↑↑(↑κ a) t2
[PROOFSTEP]
exact IndepSets.indep_aux h2 hp2 hpm2 hyp ht_mem_p1 ht1 ht2
[GOAL]
case refine_3
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
⊢ ∀ (t : Set Ω),
    MeasurableSet t →
      (fun t => ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t ∩ t2) = ↑↑(↑κ a) t * ↑↑(↑κ a) t2) t →
        (fun t => ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t ∩ t2) = ↑↑(↑κ a) t * ↑↑(↑κ a) t2) tᶜ
[PROOFSTEP]
intros t ht h
[GOAL]
case refine_3
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
t : Set Ω
ht : MeasurableSet t
h : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t ∩ t2) = ↑↑(↑κ a) t * ↑↑(↑κ a) t2
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (tᶜ ∩ t2) = ↑↑(↑κ a) tᶜ * ↑↑(↑κ a) t2
[PROOFSTEP]
filter_upwards [h] with a ha
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
t : Set Ω
ht : MeasurableSet t
h : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t ∩ t2) = ↑↑(↑κ a) t * ↑↑(↑κ a) t2
a : α
ha : ↑↑(↑κ a) (t ∩ t2) = ↑↑(↑κ a) t * ↑↑(↑κ a) t2
⊢ ↑↑(↑κ a) (tᶜ ∩ t2) = ↑↑(↑κ a) tᶜ * ↑↑(↑κ a) t2
[PROOFSTEP]
have : tᶜ ∩ t2 = t2 \ (t ∩ t2) := by rw [Set.inter_comm t, Set.diff_self_inter, Set.diff_eq_compl_inter]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
t : Set Ω
ht : MeasurableSet t
h : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t ∩ t2) = ↑↑(↑κ a) t * ↑↑(↑κ a) t2
a : α
ha : ↑↑(↑κ a) (t ∩ t2) = ↑↑(↑κ a) t * ↑↑(↑κ a) t2
⊢ tᶜ ∩ t2 = t2 \ (t ∩ t2)
[PROOFSTEP]
rw [Set.inter_comm t, Set.diff_self_inter, Set.diff_eq_compl_inter]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
t : Set Ω
ht : MeasurableSet t
h : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t ∩ t2) = ↑↑(↑κ a) t * ↑↑(↑κ a) t2
a : α
ha : ↑↑(↑κ a) (t ∩ t2) = ↑↑(↑κ a) t * ↑↑(↑κ a) t2
this : tᶜ ∩ t2 = t2 \ (t ∩ t2)
⊢ ↑↑(↑κ a) (tᶜ ∩ t2) = ↑↑(↑κ a) tᶜ * ↑↑(↑κ a) t2
[PROOFSTEP]
rw [this, Set.inter_comm t t2,
  measure_diff (Set.inter_subset_left _ _) ((h2 _ ht2).inter (h1 _ ht)) (measure_ne_top (κ a) _), Set.inter_comm, ha,
  measure_compl (h1 _ ht) (measure_ne_top (κ a) t), measure_univ, mul_comm (1 - κ a t),
  ENNReal.mul_sub (fun _ _ ↦ measure_ne_top (κ a) _), mul_one, mul_comm]
[GOAL]
case refine_4
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
⊢ ∀ (f : ℕ → Set Ω),
    Pairwise (Disjoint on f) →
      (∀ (i : ℕ), MeasurableSet (f i)) →
        (∀ (i : ℕ), (fun t => ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t ∩ t2) = ↑↑(↑κ a) t * ↑↑(↑κ a) t2) (f i)) →
          (fun t => ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t ∩ t2) = ↑↑(↑κ a) t * ↑↑(↑κ a) t2) (⋃ (i : ℕ), f i)
[PROOFSTEP]
intros f hf_disj hf_meas h
[GOAL]
case refine_4
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ (i : ℕ), (fun t => ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t ∩ t2) = ↑↑(↑κ a) t * ↑↑(↑κ a) t2) (f i)
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) ((⋃ (i : ℕ), f i) ∩ t2) = ↑↑(↑κ a) (⋃ (i : ℕ), f i) * ↑↑(↑κ a) t2
[PROOFSTEP]
rw [← ae_all_iff] at h 
[GOAL]
case refine_4
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) ((⋃ (i : ℕ), f i) ∩ t2) = ↑↑(↑κ a) (⋃ (i : ℕ), f i) * ↑↑(↑κ a) t2
[PROOFSTEP]
filter_upwards [h] with a ha
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
⊢ ↑↑(↑κ a) ((⋃ (i : ℕ), f i) ∩ t2) = ↑↑(↑κ a) (⋃ (i : ℕ), f i) * ↑↑(↑κ a) t2
[PROOFSTEP]
rw [Set.inter_comm, Set.inter_iUnion, measure_iUnion]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
⊢ ∑' (i : ℕ), ↑↑(↑κ a) (t2 ∩ f i) = ↑↑(↑κ a) (⋃ (i : ℕ), f i) * ↑↑(↑κ a) t2
[PROOFSTEP]
rw [measure_iUnion hf_disj (fun i ↦ h1 _ (hf_meas i))]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
⊢ ∑' (i : ℕ), ↑↑(↑κ a) (t2 ∩ f i) = (∑' (i : ℕ), ↑↑(↑κ a) (f i)) * ↑↑(↑κ a) t2
[PROOFSTEP]
rw [← ENNReal.tsum_mul_right]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
⊢ ∑' (i : ℕ), ↑↑(↑κ a) (t2 ∩ f i) = ∑' (i : ℕ), ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
[PROOFSTEP]
congr 1 with i
[GOAL]
case h.e_f.h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
i : ℕ
⊢ ↑↑(↑κ a) (t2 ∩ f i) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
[PROOFSTEP]
rw [Set.inter_comm t2, ha i]
[GOAL]
case h.hn
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
⊢ Pairwise (Disjoint on fun i => t2 ∩ f i)
[PROOFSTEP]
intros i j hij
[GOAL]
case h.hn
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
i j : ℕ
hij : i ≠ j
⊢ (Disjoint on fun i => t2 ∩ f i) i j
[PROOFSTEP]
rw [Function.onFun, Set.inter_comm t2, Set.inter_comm t2]
[GOAL]
case h.hn
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
i j : ℕ
hij : i ≠ j
⊢ Disjoint (f i ∩ t2) (f j ∩ t2)
[PROOFSTEP]
exact Disjoint.inter_left _ (Disjoint.inter_right _ (hf_disj hij))
[GOAL]
case h.h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
m1 m2 m : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
p1 p2 : Set (Set Ω)
h1 : m1 ≤ m
h2 : m2 ≤ m
hp1 : IsPiSystem p1
hp2 : IsPiSystem p2
hpm1 : m1 = generateFrom p1
hpm2 : m2 = generateFrom p2
hyp : IndepSets p1 p2 κ
t1 t2 : Set Ω
ht1 : t1 ∈ {s | MeasurableSet s}
ht2 : t2 ∈ {s | MeasurableSet s}
f : ℕ → Set Ω
hf_disj : Pairwise (Disjoint on f)
hf_meas : ∀ (i : ℕ), MeasurableSet (f i)
h : ∀ᵐ (a : α) ∂μ, ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
a : α
ha : ∀ (i : ℕ), ↑↑(↑κ a) (f i ∩ t2) = ↑↑(↑κ a) (f i) * ↑↑(↑κ a) t2
⊢ ∀ (i : ℕ), MeasurableSet (t2 ∩ f i)
[PROOFSTEP]
exact fun i ↦ (h2 _ ht2).inter (h1 _ (hf_meas i))
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
⊢ IndepSets (piiUnionInter s S) (piiUnionInter s T) κ
[PROOFSTEP]
rintro t1 t2 ⟨p1, hp1, f1, ht1_m, ht1_eq⟩ ⟨p2, hp2, f2, ht2_m, ht2_eq⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
classical
let g i := ite (i ∈ p1) (f1 i) Set.univ ∩ ite (i ∈ p2) (f2 i) Set.univ
have h_P_inter : ∀ᵐ a ∂μ, κ a (t1 ∩ t2) = ∏ n in p1 ∪ p2, κ a (g n) :=
  by
  have hgm : ∀ i ∈ p1 ∪ p2, g i ∈ s i := by
    intro i hi_mem_union
    rw [Finset.mem_union] at hi_mem_union 
    cases' hi_mem_union with hi1 hi2
    · have hi2 : i ∉ p2 := fun hip2 => Set.disjoint_left.mp hST (hp1 hi1) (hp2 hip2)
      simp_rw [if_pos hi1, if_neg hi2, Set.inter_univ]
      exact ht1_m i hi1
    · have hi1 : i ∉ p1 := fun hip1 => Set.disjoint_right.mp hST (hp2 hi2) (hp1 hip1)
      simp_rw [if_neg hi1, if_pos hi2, Set.univ_inter]
      exact ht2_m i hi2
  have h_p1_inter_p2 :
    ((⋂ x ∈ p1, f1 x) ∩ ⋂ x ∈ p2, f2 x) = ⋂ i ∈ p1 ∪ p2, ite (i ∈ p1) (f1 i) Set.univ ∩ ite (i ∈ p2) (f2 i) Set.univ :=
    by
    ext1 x
    simp only [Set.mem_ite_univ_right, Set.mem_inter_iff, Set.mem_iInter, Finset.mem_union]
    exact
      ⟨fun h i _ => ⟨h.1 i, h.2 i⟩, fun h => ⟨fun i hi => (h i (Or.inl hi)).1 hi, fun i hi => (h i (Or.inr hi)).2 hi⟩⟩
  filter_upwards [h_indep _ hgm] with a ha
  rw [ht1_eq, ht2_eq, h_p1_inter_p2, ← ha]
filter_upwards [h_P_inter, h_indep p1 ht1_m, h_indep p2 ht2_m] with a h_P_inter ha1 ha2
have h_μg : ∀ n, κ a (g n) = (ite (n ∈ p1) (κ a (f1 n)) 1) * (ite (n ∈ p2) (κ a (f2 n)) 1) :=
  by
  intro n
  dsimp only
  split_ifs with h1 h2
  · exact absurd rfl (Set.disjoint_iff_forall_ne.mp hST (hp1 h1) (hp2 h2))
  all_goals simp only [measure_univ, one_mul, mul_one, Set.inter_univ, Set.univ_inter]
simp_rw [h_P_inter, h_μg, Finset.prod_mul_distrib, Finset.prod_ite_mem (p1 ∪ p2) p1 (fun x ↦ κ a (f1 x)),
  Finset.union_inter_cancel_left, Finset.prod_ite_mem (p1 ∪ p2) p2 (fun x => κ a (f2 x)),
  Finset.union_inter_cancel_right, ht1_eq, ← ha1, ht2_eq, ← ha2]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
let g i := ite (i ∈ p1) (f1 i) Set.univ ∩ ite (i ∈ p2) (f2 i) Set.univ
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
have h_P_inter : ∀ᵐ a ∂μ, κ a (t1 ∩ t2) = ∏ n in p1 ∪ p2, κ a (g n) :=
  by
  have hgm : ∀ i ∈ p1 ∪ p2, g i ∈ s i := by
    intro i hi_mem_union
    rw [Finset.mem_union] at hi_mem_union 
    cases' hi_mem_union with hi1 hi2
    · have hi2 : i ∉ p2 := fun hip2 => Set.disjoint_left.mp hST (hp1 hi1) (hp2 hip2)
      simp_rw [if_pos hi1, if_neg hi2, Set.inter_univ]
      exact ht1_m i hi1
    · have hi1 : i ∉ p1 := fun hip1 => Set.disjoint_right.mp hST (hp2 hi2) (hp1 hip1)
      simp_rw [if_neg hi1, if_pos hi2, Set.univ_inter]
      exact ht2_m i hi2
  have h_p1_inter_p2 :
    ((⋂ x ∈ p1, f1 x) ∩ ⋂ x ∈ p2, f2 x) = ⋂ i ∈ p1 ∪ p2, ite (i ∈ p1) (f1 i) Set.univ ∩ ite (i ∈ p2) (f2 i) Set.univ :=
    by
    ext1 x
    simp only [Set.mem_ite_univ_right, Set.mem_inter_iff, Set.mem_iInter, Finset.mem_union]
    exact
      ⟨fun h i _ => ⟨h.1 i, h.2 i⟩, fun h => ⟨fun i hi => (h i (Or.inl hi)).1 hi, fun i hi => (h i (Or.inr hi)).2 hi⟩⟩
  filter_upwards [h_indep _ hgm] with a ha
  rw [ht1_eq, ht2_eq, h_p1_inter_p2, ← ha]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ∏ n in p1 ∪ p2, ↑↑(↑κ a) (g n)
[PROOFSTEP]
have hgm : ∀ i ∈ p1 ∪ p2, g i ∈ s i := by
  intro i hi_mem_union
  rw [Finset.mem_union] at hi_mem_union 
  cases' hi_mem_union with hi1 hi2
  · have hi2 : i ∉ p2 := fun hip2 => Set.disjoint_left.mp hST (hp1 hi1) (hp2 hip2)
    simp_rw [if_pos hi1, if_neg hi2, Set.inter_univ]
    exact ht1_m i hi1
  · have hi1 : i ∉ p1 := fun hip1 => Set.disjoint_right.mp hST (hp2 hi2) (hp1 hip1)
    simp_rw [if_neg hi1, if_pos hi2, Set.univ_inter]
    exact ht2_m i hi2
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
⊢ ∀ (i : ι), i ∈ p1 ∪ p2 → g i ∈ s i
[PROOFSTEP]
intro i hi_mem_union
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
i : ι
hi_mem_union : i ∈ p1 ∪ p2
⊢ g i ∈ s i
[PROOFSTEP]
rw [Finset.mem_union] at hi_mem_union 
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
i : ι
hi_mem_union : i ∈ p1 ∨ i ∈ p2
⊢ g i ∈ s i
[PROOFSTEP]
cases' hi_mem_union with hi1 hi2
[GOAL]
case inl
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
i : ι
hi1 : i ∈ p1
⊢ g i ∈ s i
[PROOFSTEP]
have hi2 : i ∉ p2 := fun hip2 => Set.disjoint_left.mp hST (hp1 hi1) (hp2 hip2)
[GOAL]
case inl
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
i : ι
hi1 : i ∈ p1
hi2 : ¬i ∈ p2
⊢ g i ∈ s i
[PROOFSTEP]
simp_rw [if_pos hi1, if_neg hi2, Set.inter_univ]
[GOAL]
case inl
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
i : ι
hi1 : i ∈ p1
hi2 : ¬i ∈ p2
⊢ f1 i ∈ s i
[PROOFSTEP]
exact ht1_m i hi1
[GOAL]
case inr
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
i : ι
hi2 : i ∈ p2
⊢ g i ∈ s i
[PROOFSTEP]
have hi1 : i ∉ p1 := fun hip1 => Set.disjoint_right.mp hST (hp2 hi2) (hp1 hip1)
[GOAL]
case inr
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
i : ι
hi2 : i ∈ p2
hi1 : ¬i ∈ p1
⊢ g i ∈ s i
[PROOFSTEP]
simp_rw [if_neg hi1, if_pos hi2, Set.univ_inter]
[GOAL]
case inr
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
i : ι
hi2 : i ∈ p2
hi1 : ¬i ∈ p1
⊢ f2 i ∈ s i
[PROOFSTEP]
exact ht2_m i hi2
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
hgm : ∀ (i : ι), i ∈ p1 ∪ p2 → g i ∈ s i
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ∏ n in p1 ∪ p2, ↑↑(↑κ a) (g n)
[PROOFSTEP]
have h_p1_inter_p2 :
  ((⋂ x ∈ p1, f1 x) ∩ ⋂ x ∈ p2, f2 x) = ⋂ i ∈ p1 ∪ p2, ite (i ∈ p1) (f1 i) Set.univ ∩ ite (i ∈ p2) (f2 i) Set.univ :=
  by
  ext1 x
  simp only [Set.mem_ite_univ_right, Set.mem_inter_iff, Set.mem_iInter, Finset.mem_union]
  exact ⟨fun h i _ => ⟨h.1 i, h.2 i⟩, fun h => ⟨fun i hi => (h i (Or.inl hi)).1 hi, fun i hi => (h i (Or.inr hi)).2 hi⟩⟩
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
hgm : ∀ (i : ι), i ∈ p1 ∪ p2 → g i ∈ s i
⊢ (⋂ (x : ι) (_ : x ∈ p1), f1 x) ∩ ⋂ (x : ι) (_ : x ∈ p2), f2 x =
    ⋂ (i : ι) (_ : i ∈ p1 ∪ p2), (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
[PROOFSTEP]
ext1 x
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
hgm : ∀ (i : ι), i ∈ p1 ∪ p2 → g i ∈ s i
x : Ω
⊢ x ∈ (⋂ (x : ι) (_ : x ∈ p1), f1 x) ∩ ⋂ (x : ι) (_ : x ∈ p2), f2 x ↔
    x ∈ ⋂ (i : ι) (_ : i ∈ p1 ∪ p2), (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
[PROOFSTEP]
simp only [Set.mem_ite_univ_right, Set.mem_inter_iff, Set.mem_iInter, Finset.mem_union]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
hgm : ∀ (i : ι), i ∈ p1 ∪ p2 → g i ∈ s i
x : Ω
⊢ ((∀ (i : ι), i ∈ p1 → x ∈ f1 i) ∧ ∀ (i : ι), i ∈ p2 → x ∈ f2 i) ↔
    ∀ (i : ι), i ∈ p1 ∨ i ∈ p2 → (i ∈ p1 → x ∈ f1 i) ∧ (i ∈ p2 → x ∈ f2 i)
[PROOFSTEP]
exact ⟨fun h i _ => ⟨h.1 i, h.2 i⟩, fun h => ⟨fun i hi => (h i (Or.inl hi)).1 hi, fun i hi => (h i (Or.inr hi)).2 hi⟩⟩
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
hgm : ∀ (i : ι), i ∈ p1 ∪ p2 → g i ∈ s i
h_p1_inter_p2 :
  (⋂ (x : ι) (_ : x ∈ p1), f1 x) ∩ ⋂ (x : ι) (_ : x ∈ p2), f2 x =
    ⋂ (i : ι) (_ : i ∈ p1 ∪ p2), (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ∏ n in p1 ∪ p2, ↑↑(↑κ a) (g n)
[PROOFSTEP]
filter_upwards [h_indep _ hgm] with a ha
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
hgm : ∀ (i : ι), i ∈ p1 ∪ p2 → g i ∈ s i
h_p1_inter_p2 :
  (⋂ (x : ι) (_ : x ∈ p1), f1 x) ∩ ⋂ (x : ι) (_ : x ∈ p2), f2 x =
    ⋂ (i : ι) (_ : i ∈ p1 ∪ p2), (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
a : α
ha :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p1 ∪ p2), (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ) =
    ∏ i in p1 ∪ p2, ↑↑(↑κ a) ((if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ)
⊢ ↑↑(↑κ a) (t1 ∩ t2) =
    ∏ n in p1 ∪ p2, ↑↑(↑κ a) ((if n ∈ p1 then f1 n else Set.univ) ∩ if n ∈ p2 then f2 n else Set.univ)
[PROOFSTEP]
rw [ht1_eq, ht2_eq, h_p1_inter_p2, ← ha]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
h_P_inter : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ∏ n in p1 ∪ p2, ↑↑(↑κ a) (g n)
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
filter_upwards [h_P_inter, h_indep p1 ht1_m, h_indep p2 ht2_m] with a h_P_inter ha1 ha2
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
h_P_inter✝ : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ∏ n in p1 ∪ p2, ↑↑(↑κ a) (g n)
a : α
h_P_inter :
  ↑↑(↑κ a) (t1 ∩ t2) =
    ∏ n in p1 ∪ p2, ↑↑(↑κ a) ((if n ∈ p1 then f1 n else Set.univ) ∩ if n ∈ p2 then f2 n else Set.univ)
ha1 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p1), f1 i) = ∏ i in p1, ↑↑(↑κ a) (f1 i)
ha2 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p2), f2 i) = ∏ i in p2, ↑↑(↑κ a) (f2 i)
⊢ ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
have h_μg : ∀ n, κ a (g n) = (ite (n ∈ p1) (κ a (f1 n)) 1) * (ite (n ∈ p2) (κ a (f2 n)) 1) :=
  by
  intro n
  dsimp only
  split_ifs with h1 h2
  · exact absurd rfl (Set.disjoint_iff_forall_ne.mp hST (hp1 h1) (hp2 h2))
  all_goals simp only [measure_univ, one_mul, mul_one, Set.inter_univ, Set.univ_inter]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
h_P_inter✝ : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ∏ n in p1 ∪ p2, ↑↑(↑κ a) (g n)
a : α
h_P_inter :
  ↑↑(↑κ a) (t1 ∩ t2) =
    ∏ n in p1 ∪ p2, ↑↑(↑κ a) ((if n ∈ p1 then f1 n else Set.univ) ∩ if n ∈ p2 then f2 n else Set.univ)
ha1 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p1), f1 i) = ∏ i in p1, ↑↑(↑κ a) (f1 i)
ha2 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p2), f2 i) = ∏ i in p2, ↑↑(↑κ a) (f2 i)
⊢ ∀ (n : ι), ↑↑(↑κ a) (g n) = (if n ∈ p1 then ↑↑(↑κ a) (f1 n) else 1) * if n ∈ p2 then ↑↑(↑κ a) (f2 n) else 1
[PROOFSTEP]
intro n
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
h_P_inter✝ : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ∏ n in p1 ∪ p2, ↑↑(↑κ a) (g n)
a : α
h_P_inter :
  ↑↑(↑κ a) (t1 ∩ t2) =
    ∏ n in p1 ∪ p2, ↑↑(↑κ a) ((if n ∈ p1 then f1 n else Set.univ) ∩ if n ∈ p2 then f2 n else Set.univ)
ha1 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p1), f1 i) = ∏ i in p1, ↑↑(↑κ a) (f1 i)
ha2 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p2), f2 i) = ∏ i in p2, ↑↑(↑κ a) (f2 i)
n : ι
⊢ ↑↑(↑κ a) (g n) = (if n ∈ p1 then ↑↑(↑κ a) (f1 n) else 1) * if n ∈ p2 then ↑↑(↑κ a) (f2 n) else 1
[PROOFSTEP]
dsimp only
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
h_P_inter✝ : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ∏ n in p1 ∪ p2, ↑↑(↑κ a) (g n)
a : α
h_P_inter :
  ↑↑(↑κ a) (t1 ∩ t2) =
    ∏ n in p1 ∪ p2, ↑↑(↑κ a) ((if n ∈ p1 then f1 n else Set.univ) ∩ if n ∈ p2 then f2 n else Set.univ)
ha1 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p1), f1 i) = ∏ i in p1, ↑↑(↑κ a) (f1 i)
ha2 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p2), f2 i) = ∏ i in p2, ↑↑(↑κ a) (f2 i)
n : ι
⊢ ↑↑(↑κ a) ((if n ∈ p1 then f1 n else Set.univ) ∩ if n ∈ p2 then f2 n else Set.univ) =
    (if n ∈ p1 then ↑↑(↑κ a) (f1 n) else 1) * if n ∈ p2 then ↑↑(↑κ a) (f2 n) else 1
[PROOFSTEP]
split_ifs with h1 h2
[GOAL]
case pos
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
h_P_inter✝ : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ∏ n in p1 ∪ p2, ↑↑(↑κ a) (g n)
a : α
h_P_inter :
  ↑↑(↑κ a) (t1 ∩ t2) =
    ∏ n in p1 ∪ p2, ↑↑(↑κ a) ((if n ∈ p1 then f1 n else Set.univ) ∩ if n ∈ p2 then f2 n else Set.univ)
ha1 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p1), f1 i) = ∏ i in p1, ↑↑(↑κ a) (f1 i)
ha2 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p2), f2 i) = ∏ i in p2, ↑↑(↑κ a) (f2 i)
n : ι
h1 : n ∈ p1
h2 : n ∈ p2
⊢ ↑↑(↑κ a) (f1 n ∩ f2 n) = ↑↑(↑κ a) (f1 n) * ↑↑(↑κ a) (f2 n)
[PROOFSTEP]
exact absurd rfl (Set.disjoint_iff_forall_ne.mp hST (hp1 h1) (hp2 h2))
[GOAL]
case neg
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
h_P_inter✝ : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ∏ n in p1 ∪ p2, ↑↑(↑κ a) (g n)
a : α
h_P_inter :
  ↑↑(↑κ a) (t1 ∩ t2) =
    ∏ n in p1 ∪ p2, ↑↑(↑κ a) ((if n ∈ p1 then f1 n else Set.univ) ∩ if n ∈ p2 then f2 n else Set.univ)
ha1 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p1), f1 i) = ∏ i in p1, ↑↑(↑κ a) (f1 i)
ha2 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p2), f2 i) = ∏ i in p2, ↑↑(↑κ a) (f2 i)
n : ι
h1 : n ∈ p1
h2 : ¬n ∈ p2
⊢ ↑↑(↑κ a) (f1 n ∩ Set.univ) = ↑↑(↑κ a) (f1 n) * 1
case pos
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
h_P_inter✝ : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ∏ n in p1 ∪ p2, ↑↑(↑κ a) (g n)
a : α
h_P_inter :
  ↑↑(↑κ a) (t1 ∩ t2) =
    ∏ n in p1 ∪ p2, ↑↑(↑κ a) ((if n ∈ p1 then f1 n else Set.univ) ∩ if n ∈ p2 then f2 n else Set.univ)
ha1 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p1), f1 i) = ∏ i in p1, ↑↑(↑κ a) (f1 i)
ha2 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p2), f2 i) = ∏ i in p2, ↑↑(↑κ a) (f2 i)
n : ι
h1 : ¬n ∈ p1
h✝ : n ∈ p2
⊢ ↑↑(↑κ a) (Set.univ ∩ f2 n) = 1 * ↑↑(↑κ a) (f2 n)
case neg
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
h_P_inter✝ : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ∏ n in p1 ∪ p2, ↑↑(↑κ a) (g n)
a : α
h_P_inter :
  ↑↑(↑κ a) (t1 ∩ t2) =
    ∏ n in p1 ∪ p2, ↑↑(↑κ a) ((if n ∈ p1 then f1 n else Set.univ) ∩ if n ∈ p2 then f2 n else Set.univ)
ha1 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p1), f1 i) = ∏ i in p1, ↑↑(↑κ a) (f1 i)
ha2 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p2), f2 i) = ∏ i in p2, ↑↑(↑κ a) (f2 i)
n : ι
h1 : ¬n ∈ p1
h✝ : ¬n ∈ p2
⊢ ↑↑(↑κ a) (Set.univ ∩ Set.univ) = 1 * 1
[PROOFSTEP]
all_goals simp only [measure_univ, one_mul, mul_one, Set.inter_univ, Set.univ_inter]
[GOAL]
case neg
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
h_P_inter✝ : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ∏ n in p1 ∪ p2, ↑↑(↑κ a) (g n)
a : α
h_P_inter :
  ↑↑(↑κ a) (t1 ∩ t2) =
    ∏ n in p1 ∪ p2, ↑↑(↑κ a) ((if n ∈ p1 then f1 n else Set.univ) ∩ if n ∈ p2 then f2 n else Set.univ)
ha1 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p1), f1 i) = ∏ i in p1, ↑↑(↑κ a) (f1 i)
ha2 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p2), f2 i) = ∏ i in p2, ↑↑(↑κ a) (f2 i)
n : ι
h1 : n ∈ p1
h2 : ¬n ∈ p2
⊢ ↑↑(↑κ a) (f1 n ∩ Set.univ) = ↑↑(↑κ a) (f1 n) * 1
[PROOFSTEP]
simp only [measure_univ, one_mul, mul_one, Set.inter_univ, Set.univ_inter]
[GOAL]
case pos
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
h_P_inter✝ : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ∏ n in p1 ∪ p2, ↑↑(↑κ a) (g n)
a : α
h_P_inter :
  ↑↑(↑κ a) (t1 ∩ t2) =
    ∏ n in p1 ∪ p2, ↑↑(↑κ a) ((if n ∈ p1 then f1 n else Set.univ) ∩ if n ∈ p2 then f2 n else Set.univ)
ha1 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p1), f1 i) = ∏ i in p1, ↑↑(↑κ a) (f1 i)
ha2 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p2), f2 i) = ∏ i in p2, ↑↑(↑κ a) (f2 i)
n : ι
h1 : ¬n ∈ p1
h✝ : n ∈ p2
⊢ ↑↑(↑κ a) (Set.univ ∩ f2 n) = 1 * ↑↑(↑κ a) (f2 n)
[PROOFSTEP]
simp only [measure_univ, one_mul, mul_one, Set.inter_univ, Set.univ_inter]
[GOAL]
case neg
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
h_P_inter✝ : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ∏ n in p1 ∪ p2, ↑↑(↑κ a) (g n)
a : α
h_P_inter :
  ↑↑(↑κ a) (t1 ∩ t2) =
    ∏ n in p1 ∪ p2, ↑↑(↑κ a) ((if n ∈ p1 then f1 n else Set.univ) ∩ if n ∈ p2 then f2 n else Set.univ)
ha1 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p1), f1 i) = ∏ i in p1, ↑↑(↑κ a) (f1 i)
ha2 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p2), f2 i) = ∏ i in p2, ↑↑(↑κ a) (f2 i)
n : ι
h1 : ¬n ∈ p1
h✝ : ¬n ∈ p2
⊢ ↑↑(↑κ a) (Set.univ ∩ Set.univ) = 1 * 1
[PROOFSTEP]
simp only [measure_univ, one_mul, mul_one, Set.inter_univ, Set.univ_inter]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set (Set Ω)
S T : Set ι
h_indep : iIndepSets s κ
hST : Disjoint S T
t1 t2 : Set Ω
p1 : Finset ι
hp1 : ↑p1 ⊆ S
f1 : ι → Set Ω
ht1_m : ∀ (x : ι), x ∈ p1 → f1 x ∈ s x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ p1), f1 x
p2 : Finset ι
hp2 : ↑p2 ⊆ T
f2 : ι → Set Ω
ht2_m : ∀ (x : ι), x ∈ p2 → f2 x ∈ s x
ht2_eq : t2 = ⋂ (x : ι) (_ : x ∈ p2), f2 x
g : ι → Set Ω := fun i => (if i ∈ p1 then f1 i else Set.univ) ∩ if i ∈ p2 then f2 i else Set.univ
h_P_inter✝ : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ∏ n in p1 ∪ p2, ↑↑(↑κ a) (g n)
a : α
h_P_inter :
  ↑↑(↑κ a) (t1 ∩ t2) =
    ∏ n in p1 ∪ p2, ↑↑(↑κ a) ((if n ∈ p1 then f1 n else Set.univ) ∩ if n ∈ p2 then f2 n else Set.univ)
ha1 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p1), f1 i) = ∏ i in p1, ↑↑(↑κ a) (f1 i)
ha2 : ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ p2), f2 i) = ∏ i in p2, ↑↑(↑κ a) (f2 i)
h_μg : ∀ (n : ι), ↑↑(↑κ a) (g n) = (if n ∈ p1 then ↑↑(↑κ a) (f1 n) else 1) * if n ∈ p2 then ↑↑(↑κ a) (f2 n) else 1
⊢ ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
simp_rw [h_P_inter, h_μg, Finset.prod_mul_distrib, Finset.prod_ite_mem (p1 ∪ p2) p1 (fun x ↦ κ a (f1 x)),
  Finset.union_inter_cancel_left, Finset.prod_ite_mem (p1 ∪ p2) p2 (fun x => κ a (f2 x)),
  Finset.union_inter_cancel_right, ht1_eq, ← ha1, ht2_eq, ← ha2]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set Ω
hsm : ∀ (n : ι), MeasurableSet (s n)
hs : iIndepSet s κ
S T : Set ι
hST : Disjoint S T
⊢ Indep (generateFrom {t | ∃ n, n ∈ S ∧ s n = t}) (generateFrom {t | ∃ k, k ∈ T ∧ s k = t}) κ
[PROOFSTEP]
rw [← generateFrom_piiUnionInter_singleton_left, ← generateFrom_piiUnionInter_singleton_left]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set Ω
hsm : ∀ (n : ι), MeasurableSet (s n)
hs : iIndepSet s κ
S T : Set ι
hST : Disjoint S T
⊢ Indep (generateFrom (piiUnionInter (fun k => {s k}) S)) (generateFrom (piiUnionInter (fun k => {s k}) T)) κ
[PROOFSTEP]
refine'
  IndepSets.indep' (fun t ht => generateFrom_piiUnionInter_le _ _ _ _ (measurableSet_generateFrom ht))
    (fun t ht => generateFrom_piiUnionInter_le _ _ _ _ (measurableSet_generateFrom ht)) _ _ _
[GOAL]
case refine'_1
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set Ω
hsm : ∀ (n : ι), MeasurableSet (s n)
hs : iIndepSet s κ
S T : Set ι
hST : Disjoint S T
t : Set Ω
ht : t ∈ piiUnionInter (fun k => {s k}) S
⊢ ∀ (n : ι), generateFrom {s n} ≤ _mΩ
[PROOFSTEP]
exact fun k => generateFrom_le fun t ht => (Set.mem_singleton_iff.1 ht).symm ▸ hsm k
[GOAL]
case refine'_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set Ω
hsm : ∀ (n : ι), MeasurableSet (s n)
hs : iIndepSet s κ
S T : Set ι
hST : Disjoint S T
t : Set Ω
ht : t ∈ piiUnionInter (fun k => {s k}) T
⊢ ∀ (n : ι), generateFrom {s n} ≤ _mΩ
[PROOFSTEP]
exact fun k => generateFrom_le fun t ht => (Set.mem_singleton_iff.1 ht).symm ▸ hsm k
[GOAL]
case refine'_3
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set Ω
hsm : ∀ (n : ι), MeasurableSet (s n)
hs : iIndepSet s κ
S T : Set ι
hST : Disjoint S T
⊢ IsPiSystem (piiUnionInter (fun k => {s k}) S)
[PROOFSTEP]
exact isPiSystem_piiUnionInter _ (fun k => IsPiSystem.singleton _) _
[GOAL]
case refine'_4
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set Ω
hsm : ∀ (n : ι), MeasurableSet (s n)
hs : iIndepSet s κ
S T : Set ι
hST : Disjoint S T
⊢ IsPiSystem (piiUnionInter (fun k => {s k}) T)
[PROOFSTEP]
exact isPiSystem_piiUnionInter _ (fun k => IsPiSystem.singleton _) _
[GOAL]
case refine'_5
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set Ω
hsm : ∀ (n : ι), MeasurableSet (s n)
hs : iIndepSet s κ
S T : Set ι
hST : Disjoint S T
⊢ IndepSets (piiUnionInter (fun k => {s k}) S) (piiUnionInter (fun k => {s k}) T) κ
[PROOFSTEP]
classical exact indepSets_piiUnionInter_of_disjoint (iIndep.iIndepSets (fun n => rfl) hs) hST
[GOAL]
case refine'_5
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
s : ι → Set Ω
hsm : ∀ (n : ι), MeasurableSet (s n)
hs : iIndepSet s κ
S T : Set ι
hST : Disjoint S T
⊢ IndepSets (piiUnionInter (fun k => {s k}) S) (piiUnionInter (fun k => {s k}) T) κ
[PROOFSTEP]
exact indepSets_piiUnionInter_of_disjoint (iIndep.iIndepSets (fun n => rfl) hs) hST
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
h_indep : iIndep m κ
S T : Set ι
hST : Disjoint S T
⊢ Indep (⨆ (i : ι) (_ : i ∈ S), m i) (⨆ (i : ι) (_ : i ∈ T), m i) κ
[PROOFSTEP]
refine'
  IndepSets.indep (iSup₂_le fun i _ => h_le i) (iSup₂_le fun i _ => h_le i) _ _
    (generateFrom_piiUnionInter_measurableSet m S).symm (generateFrom_piiUnionInter_measurableSet m T).symm _
[GOAL]
case refine'_1
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
h_indep : iIndep m κ
S T : Set ι
hST : Disjoint S T
⊢ IsPiSystem (piiUnionInter (fun n => {s | MeasurableSet s}) S)
[PROOFSTEP]
exact isPiSystem_piiUnionInter _ (fun n => @isPiSystem_measurableSet Ω (m n)) _
[GOAL]
case refine'_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
h_indep : iIndep m κ
S T : Set ι
hST : Disjoint S T
⊢ IsPiSystem (piiUnionInter (fun n => {s | MeasurableSet s}) T)
[PROOFSTEP]
exact isPiSystem_piiUnionInter _ (fun n => @isPiSystem_measurableSet Ω (m n)) _
[GOAL]
case refine'_3
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
h_indep : iIndep m κ
S T : Set ι
hST : Disjoint S T
⊢ IndepSets (piiUnionInter (fun n => {s | MeasurableSet s}) S) (piiUnionInter (fun n => {s | MeasurableSet s}) T) κ
[PROOFSTEP]
classical exact indepSets_piiUnionInter_of_disjoint h_indep hST
[GOAL]
case refine'_3
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
h_indep : iIndep m κ
S T : Set ι
hST : Disjoint S T
⊢ IndepSets (piiUnionInter (fun n => {s | MeasurableSet s}) S) (piiUnionInter (fun n => {s | MeasurableSet s}) T) κ
[PROOFSTEP]
exact indepSets_piiUnionInter_of_disjoint h_indep hST
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_indep : ∀ (i : ι), Indep (m i) m' κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
⊢ Indep (⨆ (i : ι), m i) m' κ
[PROOFSTEP]
let p : ι → Set (Set Ω) := fun n => {t | MeasurableSet[m n] t}
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_indep : ∀ (i : ι), Indep (m i) m' κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
p : ι → Set (Set Ω) := fun n => {t | MeasurableSet t}
⊢ Indep (⨆ (i : ι), m i) m' κ
[PROOFSTEP]
have hp : ∀ n, IsPiSystem (p n) := fun n => @isPiSystem_measurableSet Ω (m n)
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_indep : ∀ (i : ι), Indep (m i) m' κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
p : ι → Set (Set Ω) := fun n => {t | MeasurableSet t}
hp : ∀ (n : ι), IsPiSystem (p n)
⊢ Indep (⨆ (i : ι), m i) m' κ
[PROOFSTEP]
have h_gen_n : ∀ n, m n = generateFrom (p n) := fun n => (@generateFrom_measurableSet Ω (m n)).symm
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_indep : ∀ (i : ι), Indep (m i) m' κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
p : ι → Set (Set Ω) := fun n => {t | MeasurableSet t}
hp : ∀ (n : ι), IsPiSystem (p n)
h_gen_n : ∀ (n : ι), m n = generateFrom (p n)
⊢ Indep (⨆ (i : ι), m i) m' κ
[PROOFSTEP]
have hp_supr_pi : IsPiSystem (⋃ n, p n) := isPiSystem_iUnion_of_directed_le p hp hm
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_indep : ∀ (i : ι), Indep (m i) m' κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
p : ι → Set (Set Ω) := fun n => {t | MeasurableSet t}
hp : ∀ (n : ι), IsPiSystem (p n)
h_gen_n : ∀ (n : ι), m n = generateFrom (p n)
hp_supr_pi : IsPiSystem (⋃ (n : ι), p n)
⊢ Indep (⨆ (i : ι), m i) m' κ
[PROOFSTEP]
let p' := {t : Set Ω | MeasurableSet[m'] t}
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_indep : ∀ (i : ι), Indep (m i) m' κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
p : ι → Set (Set Ω) := fun n => {t | MeasurableSet t}
hp : ∀ (n : ι), IsPiSystem (p n)
h_gen_n : ∀ (n : ι), m n = generateFrom (p n)
hp_supr_pi : IsPiSystem (⋃ (n : ι), p n)
p' : Set (Set Ω) := {t | MeasurableSet t}
⊢ Indep (⨆ (i : ι), m i) m' κ
[PROOFSTEP]
have hp'_pi : IsPiSystem p' := @isPiSystem_measurableSet Ω m'
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_indep : ∀ (i : ι), Indep (m i) m' κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
p : ι → Set (Set Ω) := fun n => {t | MeasurableSet t}
hp : ∀ (n : ι), IsPiSystem (p n)
h_gen_n : ∀ (n : ι), m n = generateFrom (p n)
hp_supr_pi : IsPiSystem (⋃ (n : ι), p n)
p' : Set (Set Ω) := {t | MeasurableSet t}
hp'_pi : IsPiSystem p'
⊢ Indep (⨆ (i : ι), m i) m' κ
[PROOFSTEP]
have h_gen' : m' = generateFrom p' := (@generateFrom_measurableSet Ω m').symm
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_indep : ∀ (i : ι), Indep (m i) m' κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
p : ι → Set (Set Ω) := fun n => {t | MeasurableSet t}
hp : ∀ (n : ι), IsPiSystem (p n)
h_gen_n : ∀ (n : ι), m n = generateFrom (p n)
hp_supr_pi : IsPiSystem (⋃ (n : ι), p n)
p' : Set (Set Ω) := {t | MeasurableSet t}
hp'_pi : IsPiSystem p'
h_gen' : m' = generateFrom p'
⊢ Indep (⨆ (i : ι), m i) m' κ
[PROOFSTEP]
have h_pi_system_indep : IndepSets (⋃ n, p n) p' κ μ :=
  by
  refine IndepSets.iUnion ?_
  conv at h_indep =>
    intro i
    rw [h_gen_n i, h_gen']
  exact fun n => (h_indep n).indepSets
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_indep : ∀ (i : ι), Indep (m i) m' κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
p : ι → Set (Set Ω) := fun n => {t | MeasurableSet t}
hp : ∀ (n : ι), IsPiSystem (p n)
h_gen_n : ∀ (n : ι), m n = generateFrom (p n)
hp_supr_pi : IsPiSystem (⋃ (n : ι), p n)
p' : Set (Set Ω) := {t | MeasurableSet t}
hp'_pi : IsPiSystem p'
h_gen' : m' = generateFrom p'
⊢ IndepSets (⋃ (n : ι), p n) p' κ
[PROOFSTEP]
refine IndepSets.iUnion ?_
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_indep : ∀ (i : ι), Indep (m i) m' κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
p : ι → Set (Set Ω) := fun n => {t | MeasurableSet t}
hp : ∀ (n : ι), IsPiSystem (p n)
h_gen_n : ∀ (n : ι), m n = generateFrom (p n)
hp_supr_pi : IsPiSystem (⋃ (n : ι), p n)
p' : Set (Set Ω) := {t | MeasurableSet t}
hp'_pi : IsPiSystem p'
h_gen' : m' = generateFrom p'
⊢ ∀ (n : ι), IndepSets (p n) p' κ
[PROOFSTEP]
conv at h_indep =>
  intro i
  rw [h_gen_n i, h_gen']
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_indep : ∀ (i : ι), Indep (m i) m' κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
p : ι → Set (Set Ω) := fun n => {t | MeasurableSet t}
hp : ∀ (n : ι), IsPiSystem (p n)
h_gen_n : ∀ (n : ι), m n = generateFrom (p n)
hp_supr_pi : IsPiSystem (⋃ (n : ι), p n)
p' : Set (Set Ω) := {t | MeasurableSet t}
hp'_pi : IsPiSystem p'
h_gen' : m' = generateFrom p'
| ∀ (i : ι), Indep (m i) m' κ
[PROOFSTEP]
  intro i
  rw [h_gen_n i, h_gen']
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_indep : ∀ (i : ι), Indep (m i) m' κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
p : ι → Set (Set Ω) := fun n => {t | MeasurableSet t}
hp : ∀ (n : ι), IsPiSystem (p n)
h_gen_n : ∀ (n : ι), m n = generateFrom (p n)
hp_supr_pi : IsPiSystem (⋃ (n : ι), p n)
p' : Set (Set Ω) := {t | MeasurableSet t}
hp'_pi : IsPiSystem p'
h_gen' : m' = generateFrom p'
| ∀ (i : ι), Indep (m i) m' κ
[PROOFSTEP]
  intro i
  rw [h_gen_n i, h_gen']
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_indep : ∀ (i : ι), Indep (m i) m' κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
p : ι → Set (Set Ω) := fun n => {t | MeasurableSet t}
hp : ∀ (n : ι), IsPiSystem (p n)
h_gen_n : ∀ (n : ι), m n = generateFrom (p n)
hp_supr_pi : IsPiSystem (⋃ (n : ι), p n)
p' : Set (Set Ω) := {t | MeasurableSet t}
hp'_pi : IsPiSystem p'
h_gen' : m' = generateFrom p'
| ∀ (i : ι), Indep (m i) m' κ
[PROOFSTEP]
intro i
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_indep : ∀ (i : ι), Indep (m i) m' κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
p : ι → Set (Set Ω) := fun n => {t | MeasurableSet t}
hp : ∀ (n : ι), IsPiSystem (p n)
h_gen_n : ∀ (n : ι), m n = generateFrom (p n)
hp_supr_pi : IsPiSystem (⋃ (n : ι), p n)
p' : Set (Set Ω) := {t | MeasurableSet t}
hp'_pi : IsPiSystem p'
h_gen' : m' = generateFrom p'
i : ι
| Indep (m i) m' κ
[PROOFSTEP]
rw [h_gen_n i, h_gen']
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
p : ι → Set (Set Ω) := fun n => {t | MeasurableSet t}
hp : ∀ (n : ι), IsPiSystem (p n)
h_gen_n : ∀ (n : ι), m n = generateFrom (p n)
hp_supr_pi : IsPiSystem (⋃ (n : ι), p n)
p' : Set (Set Ω) := {t | MeasurableSet t}
h_indep : ∀ (i : ι), Indep (generateFrom (p i)) (generateFrom p') κ
hp'_pi : IsPiSystem p'
h_gen' : m' = generateFrom p'
⊢ ∀ (n : ι), IndepSets (p n) p' κ
[PROOFSTEP]
exact fun n => (h_indep n).indepSets
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_indep : ∀ (i : ι), Indep (m i) m' κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
p : ι → Set (Set Ω) := fun n => {t | MeasurableSet t}
hp : ∀ (n : ι), IsPiSystem (p n)
h_gen_n : ∀ (n : ι), m n = generateFrom (p n)
hp_supr_pi : IsPiSystem (⋃ (n : ι), p n)
p' : Set (Set Ω) := {t | MeasurableSet t}
hp'_pi : IsPiSystem p'
h_gen' : m' = generateFrom p'
h_pi_system_indep : IndepSets (⋃ (n : ι), p n) p' κ
⊢ Indep (⨆ (i : ι), m i) m' κ
[PROOFSTEP]
refine' IndepSets.indep (iSup_le h_le) h_le' hp_supr_pi hp'_pi _ h_gen' h_pi_system_indep
[GOAL]
α : Type u_1
Ω✝ : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω✝
κ✝ : { x // x ∈ kernel α Ω✝ }
μ✝ : Measure α
Ω : Type u_4
m : ι → MeasurableSpace Ω
m' m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h_indep : ∀ (i : ι), Indep (m i) m' κ
h_le : ∀ (i : ι), m i ≤ m0
h_le' : m' ≤ m0
hm : Directed (fun x x_1 => x ≤ x_1) m
p : ι → Set (Set Ω) := fun n => {t | MeasurableSet t}
hp : ∀ (n : ι), IsPiSystem (p n)
h_gen_n : ∀ (n : ι), m n = generateFrom (p n)
hp_supr_pi : IsPiSystem (⋃ (n : ι), p n)
p' : Set (Set Ω) := {t | MeasurableSet t}
hp'_pi : IsPiSystem p'
h_gen' : m' = generateFrom p'
h_pi_system_indep : IndepSets (⋃ (n : ι), p n) p' κ
⊢ ⨆ (i : ι), m i = generateFrom (⋃ (n : ι), p n)
[PROOFSTEP]
exact (generateFrom_iUnion_measurableSet _).symm
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝¹ : Preorder ι
inst✝ : IsMarkovKernel κ
s : ι → Set Ω
hsm : ∀ (n : ι), MeasurableSet (s n)
hs : iIndepSet s κ
i : ι
⊢ Indep (generateFrom {s i}) (generateFrom {t | ∃ j, j < i ∧ s j = t}) κ
[PROOFSTEP]
convert
  iIndepSet.indep_generateFrom_of_disjoint hsm hs { i } {j | j < i} (Set.disjoint_singleton_left.mpr (lt_irrefl _))
[GOAL]
case h.e'_4.h.e'_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝¹ : Preorder ι
inst✝ : IsMarkovKernel κ
s : ι → Set Ω
hsm : ∀ (n : ι), MeasurableSet (s n)
hs : iIndepSet s κ
i : ι
⊢ {s i} = {t | ∃ n, n ∈ {i} ∧ s n = t}
[PROOFSTEP]
simp only [Set.mem_singleton_iff, exists_prop, exists_eq_left, Set.setOf_eq_eq_singleton']
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝¹ : LinearOrder ι
inst✝ : IsMarkovKernel κ
s : ι → Set Ω
hsm : ∀ (n : ι), MeasurableSet (s n)
hs : iIndepSet s κ
i k : ι
hk : i < k
⊢ Indep (generateFrom {s k}) (generateFrom {t | ∃ j, j ≤ i ∧ s j = t}) κ
[PROOFSTEP]
convert iIndepSet.indep_generateFrom_of_disjoint hsm hs { k } {j | j ≤ i} (Set.disjoint_singleton_left.mpr hk.not_le)
[GOAL]
case h.e'_4.h.e'_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝¹ : LinearOrder ι
inst✝ : IsMarkovKernel κ
s : ι → Set Ω
hsm : ∀ (n : ι), MeasurableSet (s n)
hs : iIndepSet s κ
i k : ι
hk : i < k
⊢ {s k} = {t | ∃ n, n ∈ {k} ∧ s n = t}
[PROOFSTEP]
simp only [Set.mem_singleton_iff, exists_prop, exists_eq_left, Set.setOf_eq_eq_singleton']
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
⊢ IndepSets (piiUnionInter π ↑S) (π a) κ
[PROOFSTEP]
rintro t1 t2 ⟨s, hs_mem, ft1, hft1_mem, ht1_eq⟩ ht2_mem_pia
[GOAL]
case intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : ↑s ⊆ ↑S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
rw [Finset.coe_subset] at hs_mem 
[GOAL]
case intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
classical
let f := fun n => ite (n = a) t2 (ite (n ∈ s) (ft1 n) Set.univ)
have h_f_mem : ∀ n ∈ insert a s, f n ∈ π n := by
  intro n hn_mem_insert
  dsimp only
  cases' Finset.mem_insert.mp hn_mem_insert with hn_mem hn_mem
  · simp [hn_mem, ht2_mem_pia]
  · have hn_ne_a : n ≠ a := by rintro rfl; exact haS (hs_mem hn_mem)
    simp [hn_ne_a, hn_mem, hft1_mem n hn_mem]
have h_f_mem_pi : ∀ n ∈ s, f n ∈ π n := fun x hxS => h_f_mem x (by simp [hxS])
have h_t1 : t1 = ⋂ n ∈ s, f n := by
  suffices h_forall : ∀ n ∈ s, f n = ft1 n
  · rw [ht1_eq]
    ext x
    simp_rw [Set.mem_iInter]
    conv => lhs; intro i hns; rw [← h_forall i hns]
  intro n hnS
  have hn_ne_a : n ≠ a := by rintro rfl; exact haS (hs_mem hnS)
  simp_rw [if_pos hnS, if_neg hn_ne_a]
have h_μ_t1 : ∀ᵐ a' ∂μ, κ a' t1 = ∏ n in s, κ a' (f n) :=
  by
  filter_upwards [hp_ind s h_f_mem_pi] with a' ha'
  rw [h_t1, ← ha']
have h_t2 : t2 = f a := by simp
have h_μ_inter : ∀ᵐ a' ∂μ, κ a' (t1 ∩ t2) = ∏ n in insert a s, κ a' (f n) :=
  by
  have h_t1_inter_t2 : t1 ∩ t2 = ⋂ n ∈ insert a s, f n := by rw [h_t1, h_t2, Finset.set_biInter_insert, Set.inter_comm]
  filter_upwards [hp_ind (insert a s) h_f_mem] with a' ha'
  rw [h_t1_inter_t2, ← ha']
have has : a ∉ s := fun has_mem => haS (hs_mem has_mem)
filter_upwards [h_μ_t1, h_μ_inter] with a' ha1 ha2
rw [ha2, Finset.prod_insert has, h_t2, mul_comm, ha1]
simp only [ite_true]
[GOAL]
case intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
let f := fun n => ite (n = a) t2 (ite (n ∈ s) (ft1 n) Set.univ)
[GOAL]
case intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
have h_f_mem : ∀ n ∈ insert a s, f n ∈ π n := by
  intro n hn_mem_insert
  dsimp only
  cases' Finset.mem_insert.mp hn_mem_insert with hn_mem hn_mem
  · simp [hn_mem, ht2_mem_pia]
  · have hn_ne_a : n ≠ a := by rintro rfl; exact haS (hs_mem hn_mem)
    simp [hn_ne_a, hn_mem, hft1_mem n hn_mem]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
⊢ ∀ (n : ι), n ∈ insert a s → f n ∈ π n
[PROOFSTEP]
intro n hn_mem_insert
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
n : ι
hn_mem_insert : n ∈ insert a s
⊢ f n ∈ π n
[PROOFSTEP]
dsimp only
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
n : ι
hn_mem_insert : n ∈ insert a s
⊢ (if n = a then t2 else if n ∈ s then ft1 n else Set.univ) ∈ π n
[PROOFSTEP]
cases' Finset.mem_insert.mp hn_mem_insert with hn_mem hn_mem
[GOAL]
case inl
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
n : ι
hn_mem_insert : n ∈ insert a s
hn_mem : n = a
⊢ (if n = a then t2 else if n ∈ s then ft1 n else Set.univ) ∈ π n
[PROOFSTEP]
simp [hn_mem, ht2_mem_pia]
[GOAL]
case inr
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
n : ι
hn_mem_insert : n ∈ insert a s
hn_mem : n ∈ s
⊢ (if n = a then t2 else if n ∈ s then ft1 n else Set.univ) ∈ π n
[PROOFSTEP]
have hn_ne_a : n ≠ a := by rintro rfl; exact haS (hs_mem hn_mem)
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
n : ι
hn_mem_insert : n ∈ insert a s
hn_mem : n ∈ s
⊢ n ≠ a
[PROOFSTEP]
rintro rfl
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
S : Finset ι
hp_ind : iIndepSets π κ
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
n : ι
hn_mem : n ∈ s
haS : ¬n ∈ S
ht2_mem_pia : t2 ∈ π n
f : ι → Set Ω := fun n_1 => if n_1 = n then t2 else if n_1 ∈ s then ft1 n_1 else Set.univ
hn_mem_insert : n ∈ insert n s
⊢ False
[PROOFSTEP]
exact haS (hs_mem hn_mem)
[GOAL]
case inr
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
n : ι
hn_mem_insert : n ∈ insert a s
hn_mem : n ∈ s
hn_ne_a : n ≠ a
⊢ (if n = a then t2 else if n ∈ s then ft1 n else Set.univ) ∈ π n
[PROOFSTEP]
simp [hn_ne_a, hn_mem, hft1_mem n hn_mem]
[GOAL]
case intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
have h_f_mem_pi : ∀ n ∈ s, f n ∈ π n := fun x hxS => h_f_mem x (by simp [hxS])
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
x : ι
hxS : x ∈ s
⊢ x ∈ insert a s
[PROOFSTEP]
simp [hxS]
[GOAL]
case intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
have h_t1 : t1 = ⋂ n ∈ s, f n := by
  suffices h_forall : ∀ n ∈ s, f n = ft1 n
  · rw [ht1_eq]
    ext x
    simp_rw [Set.mem_iInter]
    conv => lhs; intro i hns; rw [← h_forall i hns]
  intro n hnS
  have hn_ne_a : n ≠ a := by rintro rfl; exact haS (hs_mem hnS)
  simp_rw [if_pos hnS, if_neg hn_ne_a]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
⊢ t1 = ⋂ (n : ι) (_ : n ∈ s), f n
[PROOFSTEP]
suffices h_forall : ∀ n ∈ s, f n = ft1 n
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_forall : ∀ (n : ι), n ∈ s → f n = ft1 n
⊢ t1 = ⋂ (n : ι) (_ : n ∈ s), f n
[PROOFSTEP]
rw [ht1_eq]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_forall : ∀ (n : ι), n ∈ s → f n = ft1 n
⊢ ⋂ (x : ι) (_ : x ∈ s), ft1 x = ⋂ (n : ι) (_ : n ∈ s), f n
[PROOFSTEP]
ext x
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_forall : ∀ (n : ι), n ∈ s → f n = ft1 n
x : Ω
⊢ x ∈ ⋂ (x : ι) (_ : x ∈ s), ft1 x ↔ x ∈ ⋂ (n : ι) (_ : n ∈ s), f n
[PROOFSTEP]
simp_rw [Set.mem_iInter]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_forall : ∀ (n : ι), n ∈ s → f n = ft1 n
x : Ω
⊢ (∀ (i : ι), i ∈ s → x ∈ ft1 i) ↔ ∀ (i : ι), i ∈ s → x ∈ if i = a then t2 else if i ∈ s then ft1 i else Set.univ
[PROOFSTEP]
conv => lhs; intro i hns; rw [← h_forall i hns]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_forall : ∀ (n : ι), n ∈ s → f n = ft1 n
x : Ω
| (∀ (i : ι), i ∈ s → x ∈ ft1 i) ↔ ∀ (i : ι), i ∈ s → x ∈ if i = a then t2 else if i ∈ s then ft1 i else Set.univ
[PROOFSTEP]
lhs; intro i hns; rw [← h_forall i hns]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_forall : ∀ (n : ι), n ∈ s → f n = ft1 n
x : Ω
| (∀ (i : ι), i ∈ s → x ∈ ft1 i) ↔ ∀ (i : ι), i ∈ s → x ∈ if i = a then t2 else if i ∈ s then ft1 i else Set.univ
[PROOFSTEP]
lhs; intro i hns; rw [← h_forall i hns]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_forall : ∀ (n : ι), n ∈ s → f n = ft1 n
x : Ω
| (∀ (i : ι), i ∈ s → x ∈ ft1 i) ↔ ∀ (i : ι), i ∈ s → x ∈ if i = a then t2 else if i ∈ s then ft1 i else Set.univ
[PROOFSTEP]
lhs
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_forall : ∀ (n : ι), n ∈ s → f n = ft1 n
x : Ω
| ∀ (i : ι), i ∈ s → x ∈ ft1 i
[PROOFSTEP]
intro i hns
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_forall : ∀ (n : ι), n ∈ s → f n = ft1 n
x : Ω
i : ι
hns : i ∈ s
| x ∈ ft1 i
[PROOFSTEP]
rw [← h_forall i hns]
[GOAL]
case h_forall
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
⊢ ∀ (n : ι), n ∈ s → f n = ft1 n
[PROOFSTEP]
intro n hnS
[GOAL]
case h_forall
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
n : ι
hnS : n ∈ s
⊢ f n = ft1 n
[PROOFSTEP]
have hn_ne_a : n ≠ a := by rintro rfl; exact haS (hs_mem hnS)
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
n : ι
hnS : n ∈ s
⊢ n ≠ a
[PROOFSTEP]
rintro rfl
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
S : Finset ι
hp_ind : iIndepSets π κ
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
n : ι
hnS : n ∈ s
haS : ¬n ∈ S
ht2_mem_pia : t2 ∈ π n
f : ι → Set Ω := fun n_1 => if n_1 = n then t2 else if n_1 ∈ s then ft1 n_1 else Set.univ
h_f_mem : ∀ (n_1 : ι), n_1 ∈ insert n s → f n_1 ∈ π n_1
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
⊢ False
[PROOFSTEP]
exact haS (hs_mem hnS)
[GOAL]
case h_forall
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
n : ι
hnS : n ∈ s
hn_ne_a : n ≠ a
⊢ f n = ft1 n
[PROOFSTEP]
simp_rw [if_pos hnS, if_neg hn_ne_a]
[GOAL]
case intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_t1 : t1 = ⋂ (n : ι) (_ : n ∈ s), f n
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
have h_μ_t1 : ∀ᵐ a' ∂μ, κ a' t1 = ∏ n in s, κ a' (f n) :=
  by
  filter_upwards [hp_ind s h_f_mem_pi] with a' ha'
  rw [h_t1, ← ha']
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_t1 : t1 = ⋂ (n : ι) (_ : n ∈ s), f n
⊢ ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') t1 = ∏ n in s, ↑↑(↑κ a') (f n)
[PROOFSTEP]
filter_upwards [hp_ind s h_f_mem_pi] with a' ha'
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_t1 : t1 = ⋂ (n : ι) (_ : n ∈ s), f n
a' : α
ha' :
  ↑↑(↑κ a') (⋂ (i : ι) (_ : i ∈ s), if i = a then t2 else if i ∈ s then ft1 i else Set.univ) =
    ∏ i in s, ↑↑(↑κ a') (if i = a then t2 else if i ∈ s then ft1 i else Set.univ)
⊢ ↑↑(↑κ a') t1 = ∏ n in s, ↑↑(↑κ a') (if n = a then t2 else if n ∈ s then ft1 n else Set.univ)
[PROOFSTEP]
rw [h_t1, ← ha']
[GOAL]
case intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_t1 : t1 = ⋂ (n : ι) (_ : n ∈ s), f n
h_μ_t1 : ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') t1 = ∏ n in s, ↑↑(↑κ a') (f n)
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
have h_t2 : t2 = f a := by simp
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_t1 : t1 = ⋂ (n : ι) (_ : n ∈ s), f n
h_μ_t1 : ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') t1 = ∏ n in s, ↑↑(↑κ a') (f n)
⊢ t2 = f a
[PROOFSTEP]
simp
[GOAL]
case intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_t1 : t1 = ⋂ (n : ι) (_ : n ∈ s), f n
h_μ_t1 : ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') t1 = ∏ n in s, ↑↑(↑κ a') (f n)
h_t2 : t2 = f a
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
have h_μ_inter : ∀ᵐ a' ∂μ, κ a' (t1 ∩ t2) = ∏ n in insert a s, κ a' (f n) :=
  by
  have h_t1_inter_t2 : t1 ∩ t2 = ⋂ n ∈ insert a s, f n := by rw [h_t1, h_t2, Finset.set_biInter_insert, Set.inter_comm]
  filter_upwards [hp_ind (insert a s) h_f_mem] with a' ha'
  rw [h_t1_inter_t2, ← ha']
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_t1 : t1 = ⋂ (n : ι) (_ : n ∈ s), f n
h_μ_t1 : ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') t1 = ∏ n in s, ↑↑(↑κ a') (f n)
h_t2 : t2 = f a
⊢ ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') (t1 ∩ t2) = ∏ n in insert a s, ↑↑(↑κ a') (f n)
[PROOFSTEP]
have h_t1_inter_t2 : t1 ∩ t2 = ⋂ n ∈ insert a s, f n := by rw [h_t1, h_t2, Finset.set_biInter_insert, Set.inter_comm]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_t1 : t1 = ⋂ (n : ι) (_ : n ∈ s), f n
h_μ_t1 : ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') t1 = ∏ n in s, ↑↑(↑κ a') (f n)
h_t2 : t2 = f a
⊢ t1 ∩ t2 = ⋂ (n : ι) (_ : n ∈ insert a s), f n
[PROOFSTEP]
rw [h_t1, h_t2, Finset.set_biInter_insert, Set.inter_comm]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_t1 : t1 = ⋂ (n : ι) (_ : n ∈ s), f n
h_μ_t1 : ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') t1 = ∏ n in s, ↑↑(↑κ a') (f n)
h_t2 : t2 = f a
h_t1_inter_t2 : t1 ∩ t2 = ⋂ (n : ι) (_ : n ∈ insert a s), f n
⊢ ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') (t1 ∩ t2) = ∏ n in insert a s, ↑↑(↑κ a') (f n)
[PROOFSTEP]
filter_upwards [hp_ind (insert a s) h_f_mem] with a' ha'
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_t1 : t1 = ⋂ (n : ι) (_ : n ∈ s), f n
h_μ_t1 : ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') t1 = ∏ n in s, ↑↑(↑κ a') (f n)
h_t2 : t2 = f a
h_t1_inter_t2 : t1 ∩ t2 = ⋂ (n : ι) (_ : n ∈ insert a s), f n
a' : α
ha' :
  ↑↑(↑κ a') (⋂ (i : ι) (_ : i ∈ insert a s), if i = a then t2 else if i ∈ s then ft1 i else Set.univ) =
    ∏ i in insert a s, ↑↑(↑κ a') (if i = a then t2 else if i ∈ s then ft1 i else Set.univ)
⊢ ↑↑(↑κ a') (t1 ∩ t2) = ∏ n in insert a s, ↑↑(↑κ a') (if n = a then t2 else if n ∈ s then ft1 n else Set.univ)
[PROOFSTEP]
rw [h_t1_inter_t2, ← ha']
[GOAL]
case intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_t1 : t1 = ⋂ (n : ι) (_ : n ∈ s), f n
h_μ_t1 : ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') t1 = ∏ n in s, ↑↑(↑κ a') (f n)
h_t2 : t2 = f a
h_μ_inter : ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') (t1 ∩ t2) = ∏ n in insert a s, ↑↑(↑κ a') (f n)
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
have has : a ∉ s := fun has_mem => haS (hs_mem has_mem)
[GOAL]
case intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_t1 : t1 = ⋂ (n : ι) (_ : n ∈ s), f n
h_μ_t1 : ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') t1 = ∏ n in s, ↑↑(↑κ a') (f n)
h_t2 : t2 = f a
h_μ_inter : ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') (t1 ∩ t2) = ∏ n in insert a s, ↑↑(↑κ a') (f n)
has : ¬a ∈ s
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (t1 ∩ t2) = ↑↑(↑κ a) t1 * ↑↑(↑κ a) t2
[PROOFSTEP]
filter_upwards [h_μ_t1, h_μ_inter] with a' ha1 ha2
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_t1 : t1 = ⋂ (n : ι) (_ : n ∈ s), f n
h_μ_t1 : ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') t1 = ∏ n in s, ↑↑(↑κ a') (f n)
h_t2 : t2 = f a
h_μ_inter : ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') (t1 ∩ t2) = ∏ n in insert a s, ↑↑(↑κ a') (f n)
has : ¬a ∈ s
a' : α
ha1 : ↑↑(↑κ a') t1 = ∏ n in s, ↑↑(↑κ a') (if n = a then t2 else if n ∈ s then ft1 n else Set.univ)
ha2 : ↑↑(↑κ a') (t1 ∩ t2) = ∏ n in insert a s, ↑↑(↑κ a') (if n = a then t2 else if n ∈ s then ft1 n else Set.univ)
⊢ ↑↑(↑κ a') (t1 ∩ t2) = ↑↑(↑κ a') t1 * ↑↑(↑κ a') t2
[PROOFSTEP]
rw [ha2, Finset.prod_insert has, h_t2, mul_comm, ha1]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
π : ι → Set (Set Ω)
a : ι
S : Finset ι
hp_ind : iIndepSets π κ
haS : ¬a ∈ S
t1 t2 : Set Ω
s : Finset ι
hs_mem : s ⊆ S
ft1 : ι → Set Ω
hft1_mem : ∀ (x : ι), x ∈ s → ft1 x ∈ π x
ht1_eq : t1 = ⋂ (x : ι) (_ : x ∈ s), ft1 x
ht2_mem_pia : t2 ∈ π a
f : ι → Set Ω := fun n => if n = a then t2 else if n ∈ s then ft1 n else Set.univ
h_f_mem : ∀ (n : ι), n ∈ insert a s → f n ∈ π n
h_f_mem_pi : ∀ (n : ι), n ∈ s → f n ∈ π n
h_t1 : t1 = ⋂ (n : ι) (_ : n ∈ s), f n
h_μ_t1 : ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') t1 = ∏ n in s, ↑↑(↑κ a') (f n)
h_t2 : t2 = f a
h_μ_inter : ∀ᵐ (a' : α) ∂μ, ↑↑(↑κ a') (t1 ∩ t2) = ∏ n in insert a s, ↑↑(↑κ a') (f n)
has : ¬a ∈ s
a' : α
ha1 : ↑↑(↑κ a') t1 = ∏ n in s, ↑↑(↑κ a') (if n = a then t2 else if n ∈ s then ft1 n else Set.univ)
ha2 : ↑↑(↑κ a') (t1 ∩ t2) = ∏ n in insert a s, ↑↑(↑κ a') (if n = a then t2 else if n ∈ s then ft1 n else Set.univ)
⊢ (∏ x in s, ↑↑(↑κ a') (if x = a then f a else if x ∈ s then ft1 x else Set.univ)) *
      ↑↑(↑κ a') (if a = a then f a else if a ∈ s then ft1 a else Set.univ) =
    (∏ n in s, ↑↑(↑κ a') (if n = a then t2 else if n ∈ s then ft1 n else Set.univ)) * ↑↑(↑κ a') (f a)
[PROOFSTEP]
simp only [ite_true]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
⊢ kernel.iIndep m κ
[PROOFSTEP]
classical
intro s f
refine Finset.induction ?_ ?_ s
·
  simp only [Finset.not_mem_empty, Set.mem_setOf_eq, IsEmpty.forall_iff, implies_true, Set.iInter_of_empty,
    Set.iInter_univ, measure_univ, Finset.prod_empty, Filter.eventually_true, forall_true_left]
· intro a S ha_notin_S h_rec hf_m
  have hf_m_S : ∀ x ∈ S, MeasurableSet[m x] (f x) := fun x hx => hf_m x (by simp [hx])
  let p := piiUnionInter π S
  set m_p := generateFrom p with hS_eq_generate
  have h_indep : Indep m_p (m a) κ μ :=
    by
    have hp : IsPiSystem p := isPiSystem_piiUnionInter π h_pi S
    have h_le' : ∀ i, generateFrom (π i) ≤ _mΩ := fun i ↦ (h_generate i).symm.trans_le (h_le i)
    have hm_p : m_p ≤ _mΩ := generateFrom_piiUnionInter_le π h_le' S
    exact
      IndepSets.indep hm_p (h_le a) hp (h_pi a) hS_eq_generate (h_generate a)
        (iIndepSets.piiUnionInter_of_not_mem h_ind ha_notin_S)
  have h := h_indep.symm (f a) (⋂ n ∈ S, f n) (hf_m a (Finset.mem_insert_self a S)) ?_
  · filter_upwards [h_rec hf_m_S, h] with a' ha' h'
    rwa [Finset.set_biInter_insert, Finset.prod_insert ha_notin_S, ← ha']
  · have h_le_p : ∀ i ∈ S, m i ≤ m_p := by
      intros n hn
      rw [hS_eq_generate, h_generate n]
      refine le_generateFrom_piiUnionInter (S : Set ι) hn
    have h_S_f : ∀ i ∈ S, MeasurableSet[m_p] (f i) := fun i hi ↦ (h_le_p i hi) (f i) (hf_m_S i hi)
    exact S.measurableSet_biInter h_S_f
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
⊢ kernel.iIndep m κ
[PROOFSTEP]
intro s f
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
⊢ (∀ (i : ι), i ∈ s → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ s), f i) = ∏ i in s, ↑↑(↑κ a) (f i)
[PROOFSTEP]
refine Finset.induction ?_ ?_ s
[GOAL]
case refine_1
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
⊢ (∀ (i : ι), i ∈ ∅ → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ ∅), f i) = ∏ i in ∅, ↑↑(↑κ a) (f i)
[PROOFSTEP]
simp only [Finset.not_mem_empty, Set.mem_setOf_eq, IsEmpty.forall_iff, implies_true, Set.iInter_of_empty,
  Set.iInter_univ, measure_univ, Finset.prod_empty, Filter.eventually_true, forall_true_left]
[GOAL]
case refine_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
⊢ ∀ ⦃a : ι⦄ {s : Finset ι},
    ¬a ∈ s →
      ((∀ (i : ι), i ∈ s → f i ∈ (fun x => {s | MeasurableSet s}) i) →
          ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ s), f i) = ∏ i in s, ↑↑(↑κ a) (f i)) →
        (∀ (i : ι), i ∈ insert a s → f i ∈ (fun x => {s | MeasurableSet s}) i) →
          ∀ᵐ (a_3 : α) ∂μ, ↑↑(↑κ a_3) (⋂ (i : ι) (_ : i ∈ insert a s), f i) = ∏ i in insert a s, ↑↑(↑κ a_3) (f i)
[PROOFSTEP]
intro a S ha_notin_S h_rec hf_m
[GOAL]
case refine_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
⊢ ∀ᵐ (a_1 : α) ∂μ, ↑↑(↑κ a_1) (⋂ (i : ι) (_ : i ∈ insert a S), f i) = ∏ i in insert a S, ↑↑(↑κ a_1) (f i)
[PROOFSTEP]
have hf_m_S : ∀ x ∈ S, MeasurableSet[m x] (f x) := fun x hx => hf_m x (by simp [hx])
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
x : ι
hx : x ∈ S
⊢ x ∈ insert a S
[PROOFSTEP]
simp [hx]
[GOAL]
case refine_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
hf_m_S : ∀ (x : ι), x ∈ S → MeasurableSet (f x)
⊢ ∀ᵐ (a_1 : α) ∂μ, ↑↑(↑κ a_1) (⋂ (i : ι) (_ : i ∈ insert a S), f i) = ∏ i in insert a S, ↑↑(↑κ a_1) (f i)
[PROOFSTEP]
let p := piiUnionInter π S
[GOAL]
case refine_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
hf_m_S : ∀ (x : ι), x ∈ S → MeasurableSet (f x)
p : Set (Set Ω) := piiUnionInter π ↑S
⊢ ∀ᵐ (a_1 : α) ∂μ, ↑↑(↑κ a_1) (⋂ (i : ι) (_ : i ∈ insert a S), f i) = ∏ i in insert a S, ↑↑(↑κ a_1) (f i)
[PROOFSTEP]
set m_p := generateFrom p with hS_eq_generate
[GOAL]
case refine_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
hf_m_S : ∀ (x : ι), x ∈ S → MeasurableSet (f x)
p : Set (Set Ω) := piiUnionInter π ↑S
m_p : MeasurableSpace Ω := generateFrom p
hS_eq_generate : m_p = generateFrom p
⊢ ∀ᵐ (a_1 : α) ∂μ, ↑↑(↑κ a_1) (⋂ (i : ι) (_ : i ∈ insert a S), f i) = ∏ i in insert a S, ↑↑(↑κ a_1) (f i)
[PROOFSTEP]
have h_indep : Indep m_p (m a) κ μ :=
  by
  have hp : IsPiSystem p := isPiSystem_piiUnionInter π h_pi S
  have h_le' : ∀ i, generateFrom (π i) ≤ _mΩ := fun i ↦ (h_generate i).symm.trans_le (h_le i)
  have hm_p : m_p ≤ _mΩ := generateFrom_piiUnionInter_le π h_le' S
  exact
    IndepSets.indep hm_p (h_le a) hp (h_pi a) hS_eq_generate (h_generate a)
      (iIndepSets.piiUnionInter_of_not_mem h_ind ha_notin_S)
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
hf_m_S : ∀ (x : ι), x ∈ S → MeasurableSet (f x)
p : Set (Set Ω) := piiUnionInter π ↑S
m_p : MeasurableSpace Ω := generateFrom p
hS_eq_generate : m_p = generateFrom p
⊢ Indep m_p (m a) κ
[PROOFSTEP]
have hp : IsPiSystem p := isPiSystem_piiUnionInter π h_pi S
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
hf_m_S : ∀ (x : ι), x ∈ S → MeasurableSet (f x)
p : Set (Set Ω) := piiUnionInter π ↑S
m_p : MeasurableSpace Ω := generateFrom p
hS_eq_generate : m_p = generateFrom p
hp : IsPiSystem p
⊢ Indep m_p (m a) κ
[PROOFSTEP]
have h_le' : ∀ i, generateFrom (π i) ≤ _mΩ := fun i ↦ (h_generate i).symm.trans_le (h_le i)
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
hf_m_S : ∀ (x : ι), x ∈ S → MeasurableSet (f x)
p : Set (Set Ω) := piiUnionInter π ↑S
m_p : MeasurableSpace Ω := generateFrom p
hS_eq_generate : m_p = generateFrom p
hp : IsPiSystem p
h_le' : ∀ (i : ι), generateFrom (π i) ≤ _mΩ
⊢ Indep m_p (m a) κ
[PROOFSTEP]
have hm_p : m_p ≤ _mΩ := generateFrom_piiUnionInter_le π h_le' S
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
hf_m_S : ∀ (x : ι), x ∈ S → MeasurableSet (f x)
p : Set (Set Ω) := piiUnionInter π ↑S
m_p : MeasurableSpace Ω := generateFrom p
hS_eq_generate : m_p = generateFrom p
hp : IsPiSystem p
h_le' : ∀ (i : ι), generateFrom (π i) ≤ _mΩ
hm_p : m_p ≤ _mΩ
⊢ Indep m_p (m a) κ
[PROOFSTEP]
exact
  IndepSets.indep hm_p (h_le a) hp (h_pi a) hS_eq_generate (h_generate a)
    (iIndepSets.piiUnionInter_of_not_mem h_ind ha_notin_S)
[GOAL]
case refine_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
hf_m_S : ∀ (x : ι), x ∈ S → MeasurableSet (f x)
p : Set (Set Ω) := piiUnionInter π ↑S
m_p : MeasurableSpace Ω := generateFrom p
hS_eq_generate : m_p = generateFrom p
h_indep : Indep m_p (m a) κ
⊢ ∀ᵐ (a_1 : α) ∂μ, ↑↑(↑κ a_1) (⋂ (i : ι) (_ : i ∈ insert a S), f i) = ∏ i in insert a S, ↑↑(↑κ a_1) (f i)
[PROOFSTEP]
have h := h_indep.symm (f a) (⋂ n ∈ S, f n) (hf_m a (Finset.mem_insert_self a S)) ?_
[GOAL]
case refine_2.refine_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
hf_m_S : ∀ (x : ι), x ∈ S → MeasurableSet (f x)
p : Set (Set Ω) := piiUnionInter π ↑S
m_p : MeasurableSpace Ω := generateFrom p
hS_eq_generate : m_p = generateFrom p
h_indep : Indep m_p (m a) κ
h :
  ∀ᵐ (a_1 : α) ∂μ,
    ↑↑(↑κ a_1) (f a ∩ ⋂ (n : ι) (_ : n ∈ S), f n) = ↑↑(↑κ a_1) (f a) * ↑↑(↑κ a_1) (⋂ (n : ι) (_ : n ∈ S), f n)
⊢ ∀ᵐ (a_1 : α) ∂μ, ↑↑(↑κ a_1) (⋂ (i : ι) (_ : i ∈ insert a S), f i) = ∏ i in insert a S, ↑↑(↑κ a_1) (f i)
[PROOFSTEP]
filter_upwards [h_rec hf_m_S, h] with a' ha' h'
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
hf_m_S : ∀ (x : ι), x ∈ S → MeasurableSet (f x)
p : Set (Set Ω) := piiUnionInter π ↑S
m_p : MeasurableSpace Ω := generateFrom p
hS_eq_generate : m_p = generateFrom p
h_indep : Indep m_p (m a) κ
h :
  ∀ᵐ (a_1 : α) ∂μ,
    ↑↑(↑κ a_1) (f a ∩ ⋂ (n : ι) (_ : n ∈ S), f n) = ↑↑(↑κ a_1) (f a) * ↑↑(↑κ a_1) (⋂ (n : ι) (_ : n ∈ S), f n)
a' : α
ha' : ↑↑(↑κ a') (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a') (f i)
h' : ↑↑(↑κ a') (f a ∩ ⋂ (n : ι) (_ : n ∈ S), f n) = ↑↑(↑κ a') (f a) * ↑↑(↑κ a') (⋂ (n : ι) (_ : n ∈ S), f n)
⊢ ↑↑(↑κ a') (⋂ (i : ι) (_ : i ∈ insert a S), f i) = ∏ i in insert a S, ↑↑(↑κ a') (f i)
[PROOFSTEP]
rwa [Finset.set_biInter_insert, Finset.prod_insert ha_notin_S, ← ha']
[GOAL]
case refine_2.refine_1
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
hf_m_S : ∀ (x : ι), x ∈ S → MeasurableSet (f x)
p : Set (Set Ω) := piiUnionInter π ↑S
m_p : MeasurableSpace Ω := generateFrom p
hS_eq_generate : m_p = generateFrom p
h_indep : Indep m_p (m a) κ
⊢ ⋂ (n : ι) (_ : n ∈ S), f n ∈ {s | MeasurableSet s}
[PROOFSTEP]
have h_le_p : ∀ i ∈ S, m i ≤ m_p := by
  intros n hn
  rw [hS_eq_generate, h_generate n]
  refine le_generateFrom_piiUnionInter (S : Set ι) hn
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
hf_m_S : ∀ (x : ι), x ∈ S → MeasurableSet (f x)
p : Set (Set Ω) := piiUnionInter π ↑S
m_p : MeasurableSpace Ω := generateFrom p
hS_eq_generate : m_p = generateFrom p
h_indep : Indep m_p (m a) κ
⊢ ∀ (i : ι), i ∈ S → m i ≤ m_p
[PROOFSTEP]
intros n hn
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
hf_m_S : ∀ (x : ι), x ∈ S → MeasurableSet (f x)
p : Set (Set Ω) := piiUnionInter π ↑S
m_p : MeasurableSpace Ω := generateFrom p
hS_eq_generate : m_p = generateFrom p
h_indep : Indep m_p (m a) κ
n : ι
hn : n ∈ S
⊢ m n ≤ m_p
[PROOFSTEP]
rw [hS_eq_generate, h_generate n]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
hf_m_S : ∀ (x : ι), x ∈ S → MeasurableSet (f x)
p : Set (Set Ω) := piiUnionInter π ↑S
m_p : MeasurableSpace Ω := generateFrom p
hS_eq_generate : m_p = generateFrom p
h_indep : Indep m_p (m a) κ
n : ι
hn : n ∈ S
⊢ generateFrom (π n) ≤ generateFrom p
[PROOFSTEP]
refine le_generateFrom_piiUnionInter (S : Set ι) hn
[GOAL]
case refine_2.refine_1
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
hf_m_S : ∀ (x : ι), x ∈ S → MeasurableSet (f x)
p : Set (Set Ω) := piiUnionInter π ↑S
m_p : MeasurableSpace Ω := generateFrom p
hS_eq_generate : m_p = generateFrom p
h_indep : Indep m_p (m a) κ
h_le_p : ∀ (i : ι), i ∈ S → m i ≤ m_p
⊢ ⋂ (n : ι) (_ : n ∈ S), f n ∈ {s | MeasurableSet s}
[PROOFSTEP]
have h_S_f : ∀ i ∈ S, MeasurableSet[m_p] (f i) := fun i hi ↦ (h_le_p i hi) (f i) (hf_m_S i hi)
[GOAL]
case refine_2.refine_1
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
m : ι → MeasurableSpace Ω
h_le : ∀ (i : ι), m i ≤ _mΩ
π : ι → Set (Set Ω)
h_pi : ∀ (n : ι), IsPiSystem (π n)
h_generate : ∀ (i : ι), m i = generateFrom (π i)
h_ind : iIndepSets π κ
s : Finset ι
f : ι → Set Ω
a : ι
S : Finset ι
ha_notin_S : ¬a ∈ S
h_rec :
  (∀ (i : ι), i ∈ S → f i ∈ (fun x => {s | MeasurableSet s}) i) →
    ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i) = ∏ i in S, ↑↑(↑κ a) (f i)
hf_m : ∀ (i : ι), i ∈ insert a S → f i ∈ (fun x => {s | MeasurableSet s}) i
hf_m_S : ∀ (x : ι), x ∈ S → MeasurableSet (f x)
p : Set (Set Ω) := piiUnionInter π ↑S
m_p : MeasurableSpace Ω := generateFrom p
hS_eq_generate : m_p = generateFrom p
h_indep : Indep m_p (m a) κ
h_le_p : ∀ (i : ι), i ∈ S → m i ≤ m_p
h_S_f : ∀ (i : ι), i ∈ S → MeasurableSet (f i)
⊢ ⋂ (n : ι) (_ : n ∈ S), f n ∈ {s | MeasurableSet s}
[PROOFSTEP]
exact S.measurableSet_biInter h_S_f
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
s t : Set Ω
S T : Set (Set Ω)
_mα : MeasurableSpace α
m0 : MeasurableSpace Ω
hs_meas : MeasurableSet s
ht_meas : MeasurableSet t
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h : IndepSets {s} {t} κ
u : Set Ω
hu : u ∈ {s}
⊢ MeasurableSet u
[PROOFSTEP]
rwa [Set.mem_singleton_iff.mp hu]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
s t : Set Ω
S T : Set (Set Ω)
_mα : MeasurableSpace α
m0 : MeasurableSpace Ω
hs_meas : MeasurableSet s
ht_meas : MeasurableSet t
κ : { x // x ∈ kernel α Ω }
μ : Measure α
inst✝ : IsMarkovKernel κ
h : IndepSets {s} {t} κ
u : Set Ω
hu : u ∈ {t}
⊢ MeasurableSet u
[PROOFSTEP]
rwa [Set.mem_singleton_iff.mp hu]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
s✝ t✝ : Set Ω
S T : Set (Set Ω)
_mα : MeasurableSpace α
m₁ m₂ m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : Indep m₁ m₂ κ
s t : Set Ω
hs : MeasurableSet s
ht : MeasurableSet t
⊢ IndepSet s t κ
[PROOFSTEP]
refine fun s' t' hs' ht' => h_indep s' t' ?_ ?_
[GOAL]
case refine_1
α : Type u_1
Ω : Type u_2
ι : Type u_3
s✝ t✝ : Set Ω
S T : Set (Set Ω)
_mα : MeasurableSpace α
m₁ m₂ m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : Indep m₁ m₂ κ
s t : Set Ω
hs : MeasurableSet s
ht : MeasurableSet t
s' t' : Set Ω
hs' : s' ∈ {s_1 | MeasurableSet s_1}
ht' : t' ∈ {s | MeasurableSet s}
⊢ s' ∈ {s | MeasurableSet s}
[PROOFSTEP]
refine @generateFrom_induction _ (fun u => MeasurableSet[m₁] u) { s } ?_ ?_ ?_ ?_ _ hs'
[GOAL]
case refine_1.refine_1
α : Type u_1
Ω : Type u_2
ι : Type u_3
s✝ t✝ : Set Ω
S T : Set (Set Ω)
_mα : MeasurableSpace α
m₁ m₂ m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : Indep m₁ m₂ κ
s t : Set Ω
hs : MeasurableSet s
ht : MeasurableSet t
s' t' : Set Ω
hs' : s' ∈ {s_1 | MeasurableSet s_1}
ht' : t' ∈ {s | MeasurableSet s}
⊢ ∀ (t : Set Ω), t ∈ {s} → (fun u => MeasurableSet u) t
[PROOFSTEP]
simp only [Set.mem_singleton_iff, forall_eq, hs]
[GOAL]
case refine_1.refine_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
s✝ t✝ : Set Ω
S T : Set (Set Ω)
_mα : MeasurableSpace α
m₁ m₂ m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : Indep m₁ m₂ κ
s t : Set Ω
hs : MeasurableSet s
ht : MeasurableSet t
s' t' : Set Ω
hs' : s' ∈ {s_1 | MeasurableSet s_1}
ht' : t' ∈ {s | MeasurableSet s}
⊢ (fun u => MeasurableSet u) ∅
[PROOFSTEP]
exact @MeasurableSet.empty _ m₁
[GOAL]
case refine_1.refine_3
α : Type u_1
Ω : Type u_2
ι : Type u_3
s✝ t✝ : Set Ω
S T : Set (Set Ω)
_mα : MeasurableSpace α
m₁ m₂ m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : Indep m₁ m₂ κ
s t : Set Ω
hs : MeasurableSet s
ht : MeasurableSet t
s' t' : Set Ω
hs' : s' ∈ {s_1 | MeasurableSet s_1}
ht' : t' ∈ {s | MeasurableSet s}
⊢ ∀ (t : Set Ω), (fun u => MeasurableSet u) t → (fun u => MeasurableSet u) tᶜ
[PROOFSTEP]
exact fun u hu => hu.compl
[GOAL]
case refine_1.refine_4
α : Type u_1
Ω : Type u_2
ι : Type u_3
s✝ t✝ : Set Ω
S T : Set (Set Ω)
_mα : MeasurableSpace α
m₁ m₂ m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : Indep m₁ m₂ κ
s t : Set Ω
hs : MeasurableSet s
ht : MeasurableSet t
s' t' : Set Ω
hs' : s' ∈ {s_1 | MeasurableSet s_1}
ht' : t' ∈ {s | MeasurableSet s}
⊢ ∀ (f : ℕ → Set Ω), (∀ (n : ℕ), (fun u => MeasurableSet u) (f n)) → (fun u => MeasurableSet u) (⋃ (i : ℕ), f i)
[PROOFSTEP]
exact fun f hf => MeasurableSet.iUnion hf
[GOAL]
case refine_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
s✝ t✝ : Set Ω
S T : Set (Set Ω)
_mα : MeasurableSpace α
m₁ m₂ m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : Indep m₁ m₂ κ
s t : Set Ω
hs : MeasurableSet s
ht : MeasurableSet t
s' t' : Set Ω
hs' : s' ∈ {s_1 | MeasurableSet s_1}
ht' : t' ∈ {s | MeasurableSet s}
⊢ t' ∈ {s | MeasurableSet s}
[PROOFSTEP]
refine @generateFrom_induction _ (fun u => MeasurableSet[m₂] u) { t } ?_ ?_ ?_ ?_ _ ht'
[GOAL]
case refine_2.refine_1
α : Type u_1
Ω : Type u_2
ι : Type u_3
s✝ t✝ : Set Ω
S T : Set (Set Ω)
_mα : MeasurableSpace α
m₁ m₂ m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : Indep m₁ m₂ κ
s t : Set Ω
hs : MeasurableSet s
ht : MeasurableSet t
s' t' : Set Ω
hs' : s' ∈ {s_1 | MeasurableSet s_1}
ht' : t' ∈ {s | MeasurableSet s}
⊢ ∀ (t_1 : Set Ω), t_1 ∈ {t} → (fun u => MeasurableSet u) t_1
[PROOFSTEP]
simp only [Set.mem_singleton_iff, forall_eq, ht]
[GOAL]
case refine_2.refine_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
s✝ t✝ : Set Ω
S T : Set (Set Ω)
_mα : MeasurableSpace α
m₁ m₂ m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : Indep m₁ m₂ κ
s t : Set Ω
hs : MeasurableSet s
ht : MeasurableSet t
s' t' : Set Ω
hs' : s' ∈ {s_1 | MeasurableSet s_1}
ht' : t' ∈ {s | MeasurableSet s}
⊢ (fun u => MeasurableSet u) ∅
[PROOFSTEP]
exact @MeasurableSet.empty _ m₂
[GOAL]
case refine_2.refine_3
α : Type u_1
Ω : Type u_2
ι : Type u_3
s✝ t✝ : Set Ω
S T : Set (Set Ω)
_mα : MeasurableSpace α
m₁ m₂ m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : Indep m₁ m₂ κ
s t : Set Ω
hs : MeasurableSet s
ht : MeasurableSet t
s' t' : Set Ω
hs' : s' ∈ {s_1 | MeasurableSet s_1}
ht' : t' ∈ {s | MeasurableSet s}
⊢ ∀ (t : Set Ω), (fun u => MeasurableSet u) t → (fun u => MeasurableSet u) tᶜ
[PROOFSTEP]
exact fun u hu => hu.compl
[GOAL]
case refine_2.refine_4
α : Type u_1
Ω : Type u_2
ι : Type u_3
s✝ t✝ : Set Ω
S T : Set (Set Ω)
_mα : MeasurableSpace α
m₁ m₂ m0 : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
h_indep : Indep m₁ m₂ κ
s t : Set Ω
hs : MeasurableSet s
ht : MeasurableSet t
s' t' : Set Ω
hs' : s' ∈ {s_1 | MeasurableSet s_1}
ht' : t' ∈ {s | MeasurableSet s}
⊢ ∀ (f : ℕ → Set Ω), (∀ (n : ℕ), (fun u => MeasurableSet u) (f n)) → (fun u => MeasurableSet u) (⋃ (i : ℕ), f i)
[PROOFSTEP]
exact fun f hf => MeasurableSet.iUnion hf
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
⊢ IndepFun f g κ ↔
    ∀ (s : Set β) (t : Set β'),
      MeasurableSet s →
        MeasurableSet t → ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑(↑κ a) (f ⁻¹' s) * ↑↑(↑κ a) (g ⁻¹' t)
[PROOFSTEP]
constructor
[GOAL]
case mp
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
⊢ IndepFun f g κ →
    ∀ (s : Set β) (t : Set β'),
      MeasurableSet s →
        MeasurableSet t → ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑(↑κ a) (f ⁻¹' s) * ↑↑(↑κ a) (g ⁻¹' t)
[PROOFSTEP]
intro h
[GOAL]
case mpr
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
⊢ (∀ (s : Set β) (t : Set β'),
      MeasurableSet s →
        MeasurableSet t → ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑(↑κ a) (f ⁻¹' s) * ↑↑(↑κ a) (g ⁻¹' t)) →
    IndepFun f g κ
[PROOFSTEP]
intro h
[GOAL]
case mp
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
h : IndepFun f g κ
⊢ ∀ (s : Set β) (t : Set β'),
    MeasurableSet s →
      MeasurableSet t → ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑(↑κ a) (f ⁻¹' s) * ↑↑(↑κ a) (g ⁻¹' t)
[PROOFSTEP]
refine' fun s t hs ht => h (f ⁻¹' s) (g ⁻¹' t) ⟨s, hs, rfl⟩ ⟨t, ht, rfl⟩
[GOAL]
case mpr
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
h :
  ∀ (s : Set β) (t : Set β'),
    MeasurableSet s →
      MeasurableSet t → ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑(↑κ a) (f ⁻¹' s) * ↑↑(↑κ a) (g ⁻¹' t)
⊢ IndepFun f g κ
[PROOFSTEP]
rintro _ _ ⟨s, hs, rfl⟩ ⟨t, ht, rfl⟩
[GOAL]
case mpr.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
h :
  ∀ (s : Set β) (t : Set β'),
    MeasurableSet s →
      MeasurableSet t → ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑(↑κ a) (f ⁻¹' s) * ↑↑(↑κ a) (g ⁻¹' t)
s : Set β
hs : MeasurableSet s
t : Set β'
ht : MeasurableSet t
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑(↑κ a) (f ⁻¹' s) * ↑↑(↑κ a) (g ⁻¹' t)
[PROOFSTEP]
exact h s t hs ht
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
⊢ iIndepFun m f κ ↔
    ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
      (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
        ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
[PROOFSTEP]
refine' ⟨fun h S sets h_meas => h _ fun i hi_mem => ⟨sets i, h_meas i hi_mem, rfl⟩, _⟩
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
⊢ (∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
      (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
        ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)) →
    iIndepFun m f κ
[PROOFSTEP]
intro h S setsΩ h_meas
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), setsΩ i) = ∏ i in S, ↑↑(↑κ a) (setsΩ i)
[PROOFSTEP]
classical
let setsβ : ∀ i : ι, Set (β i) := fun i => dite (i ∈ S) (fun hi_mem => (h_meas i hi_mem).choose) fun _ => Set.univ
have h_measβ : ∀ i ∈ S, MeasurableSet[m i] (setsβ i) :=
  by
  intro i hi_mem
  simp_rw [dif_pos hi_mem]
  exact (h_meas i hi_mem).choose_spec.1
have h_preim : ∀ i ∈ S, setsΩ i = f i ⁻¹' setsβ i :=
  by
  intro i hi_mem
  simp_rw [dif_pos hi_mem]
  exact (h_meas i hi_mem).choose_spec.2.symm
have h_left_eq : ∀ a, κ a (⋂ i ∈ S, setsΩ i) = κ a (⋂ i ∈ S, (f i) ⁻¹' (setsβ i)) :=
  by
  intro a
  congr with x
  simp_rw [Set.mem_iInter]
  constructor <;> intro h i hi_mem <;> specialize h i hi_mem
  · rwa [h_preim i hi_mem] at h 
  · rwa [h_preim i hi_mem]
have h_right_eq : ∀ a, (∏ i in S, κ a (setsΩ i)) = ∏ i in S, κ a ((f i) ⁻¹' (setsβ i)) :=
  by
  refine' fun a ↦ Finset.prod_congr rfl fun i hi_mem => _
  rw [h_preim i hi_mem]
filter_upwards [h S h_measβ] with a ha
rw [h_left_eq a, h_right_eq a, ha]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), setsΩ i) = ∏ i in S, ↑↑(↑κ a) (setsΩ i)
[PROOFSTEP]
let setsβ : ∀ i : ι, Set (β i) := fun i => dite (i ∈ S) (fun hi_mem => (h_meas i hi_mem).choose) fun _ => Set.univ
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), setsΩ i) = ∏ i in S, ↑↑(↑κ a) (setsΩ i)
[PROOFSTEP]
have h_measβ : ∀ i ∈ S, MeasurableSet[m i] (setsβ i) :=
  by
  intro i hi_mem
  simp_rw [dif_pos hi_mem]
  exact (h_meas i hi_mem).choose_spec.1
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
⊢ ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
[PROOFSTEP]
intro i hi_mem
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
i : ι
hi_mem : i ∈ S
⊢ MeasurableSet (setsβ i)
[PROOFSTEP]
simp_rw [dif_pos hi_mem]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
i : ι
hi_mem : i ∈ S
⊢ MeasurableSet (Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i))
[PROOFSTEP]
exact (h_meas i hi_mem).choose_spec.1
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), setsΩ i) = ∏ i in S, ↑↑(↑κ a) (setsΩ i)
[PROOFSTEP]
have h_preim : ∀ i ∈ S, setsΩ i = f i ⁻¹' setsβ i :=
  by
  intro i hi_mem
  simp_rw [dif_pos hi_mem]
  exact (h_meas i hi_mem).choose_spec.2.symm
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
⊢ ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
[PROOFSTEP]
intro i hi_mem
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
i : ι
hi_mem : i ∈ S
⊢ setsΩ i = f i ⁻¹' setsβ i
[PROOFSTEP]
simp_rw [dif_pos hi_mem]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
i : ι
hi_mem : i ∈ S
⊢ setsΩ i = f i ⁻¹' Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i)
[PROOFSTEP]
exact (h_meas i hi_mem).choose_spec.2.symm
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
h_preim : ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), setsΩ i) = ∏ i in S, ↑↑(↑κ a) (setsΩ i)
[PROOFSTEP]
have h_left_eq : ∀ a, κ a (⋂ i ∈ S, setsΩ i) = κ a (⋂ i ∈ S, (f i) ⁻¹' (setsβ i)) :=
  by
  intro a
  congr with x
  simp_rw [Set.mem_iInter]
  constructor <;> intro h i hi_mem <;> specialize h i hi_mem
  · rwa [h_preim i hi_mem] at h 
  · rwa [h_preim i hi_mem]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
h_preim : ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
⊢ ∀ (a : α), ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), setsΩ i) = ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' setsβ i)
[PROOFSTEP]
intro a
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
h_preim : ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
a : α
⊢ ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), setsΩ i) = ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' setsβ i)
[PROOFSTEP]
congr with x
[GOAL]
case e_a.h
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
h_preim : ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
a : α
x : Ω
⊢ x ∈ ⋂ (i : ι) (_ : i ∈ S), setsΩ i ↔ x ∈ ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' setsβ i
[PROOFSTEP]
simp_rw [Set.mem_iInter]
[GOAL]
case e_a.h
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
h_preim : ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
a : α
x : Ω
⊢ (∀ (i : ι), i ∈ S → x ∈ setsΩ i) ↔
    ∀ (i : ι),
      i ∈ S →
        x ∈ f i ⁻¹' if h : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
[PROOFSTEP]
constructor
[GOAL]
case e_a.h.mp
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
h_preim : ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
a : α
x : Ω
⊢ (∀ (i : ι), i ∈ S → x ∈ setsΩ i) →
    ∀ (i : ι),
      i ∈ S →
        x ∈ f i ⁻¹' if h : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
[PROOFSTEP]
intro h i hi_mem
[GOAL]
case e_a.h.mpr
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
h_preim : ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
a : α
x : Ω
⊢ (∀ (i : ι),
      i ∈ S →
        x ∈ f i ⁻¹' if h : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ) →
    ∀ (i : ι), i ∈ S → x ∈ setsΩ i
[PROOFSTEP]
intro h i hi_mem
[GOAL]
case e_a.h.mp
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h✝ :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
h_preim : ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
a : α
x : Ω
h : ∀ (i : ι), i ∈ S → x ∈ setsΩ i
i : ι
hi_mem : i ∈ S
⊢ x ∈ f i ⁻¹' if h : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
[PROOFSTEP]
specialize h i hi_mem
[GOAL]
case e_a.h.mpr
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h✝ :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
h_preim : ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
a : α
x : Ω
h :
  ∀ (i : ι),
    i ∈ S → x ∈ f i ⁻¹' if h : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
i : ι
hi_mem : i ∈ S
⊢ x ∈ setsΩ i
[PROOFSTEP]
specialize h i hi_mem
[GOAL]
case e_a.h.mp
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h✝ :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
h_preim : ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
a : α
x : Ω
i : ι
hi_mem : i ∈ S
h : x ∈ setsΩ i
⊢ x ∈ f i ⁻¹' if h : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
[PROOFSTEP]
rwa [h_preim i hi_mem] at h 
[GOAL]
case e_a.h.mpr
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h✝ :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
h_preim : ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
a : α
x : Ω
i : ι
hi_mem : i ∈ S
h : x ∈ f i ⁻¹' if h : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
⊢ x ∈ setsΩ i
[PROOFSTEP]
rwa [h_preim i hi_mem]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
h_preim : ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
h_left_eq : ∀ (a : α), ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), setsΩ i) = ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' setsβ i)
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), setsΩ i) = ∏ i in S, ↑↑(↑κ a) (setsΩ i)
[PROOFSTEP]
have h_right_eq : ∀ a, (∏ i in S, κ a (setsΩ i)) = ∏ i in S, κ a ((f i) ⁻¹' (setsβ i)) :=
  by
  refine' fun a ↦ Finset.prod_congr rfl fun i hi_mem => _
  rw [h_preim i hi_mem]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
h_preim : ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
h_left_eq : ∀ (a : α), ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), setsΩ i) = ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' setsβ i)
⊢ ∀ (a : α), ∏ i in S, ↑↑(↑κ a) (setsΩ i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' setsβ i)
[PROOFSTEP]
refine' fun a ↦ Finset.prod_congr rfl fun i hi_mem => _
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
h_preim : ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
h_left_eq : ∀ (a : α), ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), setsΩ i) = ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' setsβ i)
a : α
i : ι
hi_mem : i ∈ S
⊢ ↑↑(↑κ a) (setsΩ i) = ↑↑(↑κ a) (f i ⁻¹' setsβ i)
[PROOFSTEP]
rw [h_preim i hi_mem]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
h_preim : ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
h_left_eq : ∀ (a : α), ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), setsΩ i) = ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' setsβ i)
h_right_eq : ∀ (a : α), ∏ i in S, ↑↑(↑κ a) (setsΩ i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' setsβ i)
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), setsΩ i) = ∏ i in S, ↑↑(↑κ a) (setsΩ i)
[PROOFSTEP]
filter_upwards [h S h_measβ] with a ha
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_8
β : ι → Type u_9
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
h :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
S : Finset ι
setsΩ : ι → Set Ω
h_meas : ∀ (i : ι), i ∈ S → setsΩ i ∈ (fun x => {s | MeasurableSet s}) i
setsβ : (i : ι) → Set (β i) :=
  fun i => if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ
h_measβ : ∀ (i : ι), i ∈ S → MeasurableSet (setsβ i)
h_preim : ∀ (i : ι), i ∈ S → setsΩ i = f i ⁻¹' setsβ i
h_left_eq : ∀ (a : α), ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), setsΩ i) = ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' setsβ i)
h_right_eq : ∀ (a : α), ∏ i in S, ↑↑(↑κ a) (setsΩ i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' setsβ i)
a : α
ha :
  ↑↑(↑κ a)
      (⋂ (i : ι) (_ : i ∈ S),
        f i ⁻¹' if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ) =
    ∏ i in S,
      ↑↑(↑κ a)
        (f i ⁻¹' if hi_mem : i ∈ S then Exists.choose (_ : setsΩ i ∈ (fun x => {s | MeasurableSet s}) i) else Set.univ)
⊢ ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), setsΩ i) = ∏ i in S, ↑↑(↑κ a) (setsΩ i)
[PROOFSTEP]
rw [h_left_eq a, h_right_eq a, ha]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
inst✝ : IsMarkovKernel κ
hf : Measurable f
hg : Measurable g
⊢ IndepFun f g κ ↔ ∀ (s : Set β) (t : Set β'), MeasurableSet s → MeasurableSet t → IndepSet (f ⁻¹' s) (g ⁻¹' t) κ
[PROOFSTEP]
refine' indepFun_iff_measure_inter_preimage_eq_mul.trans _
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
inst✝ : IsMarkovKernel κ
hf : Measurable f
hg : Measurable g
⊢ (∀ (s : Set β) (t : Set β'),
      MeasurableSet s →
        MeasurableSet t → ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑(↑κ a) (f ⁻¹' s) * ↑↑(↑κ a) (g ⁻¹' t)) ↔
    ∀ (s : Set β) (t : Set β'), MeasurableSet s → MeasurableSet t → IndepSet (f ⁻¹' s) (g ⁻¹' t) κ
[PROOFSTEP]
constructor
[GOAL]
case mp
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
inst✝ : IsMarkovKernel κ
hf : Measurable f
hg : Measurable g
⊢ (∀ (s : Set β) (t : Set β'),
      MeasurableSet s →
        MeasurableSet t → ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑(↑κ a) (f ⁻¹' s) * ↑↑(↑κ a) (g ⁻¹' t)) →
    ∀ (s : Set β) (t : Set β'), MeasurableSet s → MeasurableSet t → IndepSet (f ⁻¹' s) (g ⁻¹' t) κ
[PROOFSTEP]
intro h s t hs ht
[GOAL]
case mpr
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
inst✝ : IsMarkovKernel κ
hf : Measurable f
hg : Measurable g
⊢ (∀ (s : Set β) (t : Set β'), MeasurableSet s → MeasurableSet t → IndepSet (f ⁻¹' s) (g ⁻¹' t) κ) →
    ∀ (s : Set β) (t : Set β'),
      MeasurableSet s →
        MeasurableSet t → ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑(↑κ a) (f ⁻¹' s) * ↑↑(↑κ a) (g ⁻¹' t)
[PROOFSTEP]
intro h s t hs ht
[GOAL]
case mp
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
inst✝ : IsMarkovKernel κ
hf : Measurable f
hg : Measurable g
h :
  ∀ (s : Set β) (t : Set β'),
    MeasurableSet s →
      MeasurableSet t → ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑(↑κ a) (f ⁻¹' s) * ↑↑(↑κ a) (g ⁻¹' t)
s : Set β
t : Set β'
hs : MeasurableSet s
ht : MeasurableSet t
⊢ IndepSet (f ⁻¹' s) (g ⁻¹' t) κ
[PROOFSTEP]
specialize h s t hs ht
[GOAL]
case mpr
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
inst✝ : IsMarkovKernel κ
hf : Measurable f
hg : Measurable g
h : ∀ (s : Set β) (t : Set β'), MeasurableSet s → MeasurableSet t → IndepSet (f ⁻¹' s) (g ⁻¹' t) κ
s : Set β
t : Set β'
hs : MeasurableSet s
ht : MeasurableSet t
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑(↑κ a) (f ⁻¹' s) * ↑↑(↑κ a) (g ⁻¹' t)
[PROOFSTEP]
specialize h s t hs ht
[GOAL]
case mp
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
inst✝ : IsMarkovKernel κ
hf : Measurable f
hg : Measurable g
s : Set β
t : Set β'
hs : MeasurableSet s
ht : MeasurableSet t
h : ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑(↑κ a) (f ⁻¹' s) * ↑↑(↑κ a) (g ⁻¹' t)
⊢ IndepSet (f ⁻¹' s) (g ⁻¹' t) κ
[PROOFSTEP]
rwa [indepSet_iff_measure_inter_eq_mul (hf hs) (hg ht) κ μ]
[GOAL]
case mpr
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
inst✝ : IsMarkovKernel κ
hf : Measurable f
hg : Measurable g
s : Set β
t : Set β'
hs : MeasurableSet s
ht : MeasurableSet t
h : IndepSet (f ⁻¹' s) (g ⁻¹' t) κ
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑(↑κ a) (f ⁻¹' s) * ↑↑(↑κ a) (g ⁻¹' t)
[PROOFSTEP]
rwa [← indepSet_iff_measure_inter_eq_mul (hf hs) (hg ht) κ μ]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β
g✝ : Ω → β'
mβ : MeasurableSpace β
f g f' g' : Ω → β
hfg : IndepFun f g κ
hf : ∀ᵐ (a : α) ∂μ, f =ᵐ[↑κ a] f'
hg : ∀ᵐ (a : α) ∂μ, g =ᵐ[↑κ a] g'
⊢ IndepFun f' g' κ
[PROOFSTEP]
rintro _ _ ⟨A, hA, rfl⟩ ⟨B, hB, rfl⟩
[GOAL]
case intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β
g✝ : Ω → β'
mβ : MeasurableSpace β
f g f' g' : Ω → β
hfg : IndepFun f g κ
hf : ∀ᵐ (a : α) ∂μ, f =ᵐ[↑κ a] f'
hg : ∀ᵐ (a : α) ∂μ, g =ᵐ[↑κ a] g'
A : Set β
hA : MeasurableSet A
B : Set β
hB : MeasurableSet B
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (f' ⁻¹' A ∩ g' ⁻¹' B) = ↑↑(↑κ a) (f' ⁻¹' A) * ↑↑(↑κ a) (g' ⁻¹' B)
[PROOFSTEP]
filter_upwards [hf, hg, hfg _ _ ⟨_, hA, rfl⟩ ⟨_, hB, rfl⟩] with a hf' hg' hfg'
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β
g✝ : Ω → β'
mβ : MeasurableSpace β
f g f' g' : Ω → β
hfg : IndepFun f g κ
hf : ∀ᵐ (a : α) ∂μ, f =ᵐ[↑κ a] f'
hg : ∀ᵐ (a : α) ∂μ, g =ᵐ[↑κ a] g'
A : Set β
hA : MeasurableSet A
B : Set β
hB : MeasurableSet B
a : α
hf' : f =ᵐ[↑κ a] f'
hg' : g =ᵐ[↑κ a] g'
hfg' : ↑↑(↑κ a) (f ⁻¹' A ∩ g ⁻¹' B) = ↑↑(↑κ a) (f ⁻¹' A) * ↑↑(↑κ a) (g ⁻¹' B)
⊢ ↑↑(↑κ a) (f' ⁻¹' A ∩ g' ⁻¹' B) = ↑↑(↑κ a) (f' ⁻¹' A) * ↑↑(↑κ a) (g' ⁻¹' B)
[PROOFSTEP]
have h1 : f ⁻¹' A =ᵐ[κ a] f' ⁻¹' A := hf'.fun_comp A
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β
g✝ : Ω → β'
mβ : MeasurableSpace β
f g f' g' : Ω → β
hfg : IndepFun f g κ
hf : ∀ᵐ (a : α) ∂μ, f =ᵐ[↑κ a] f'
hg : ∀ᵐ (a : α) ∂μ, g =ᵐ[↑κ a] g'
A : Set β
hA : MeasurableSet A
B : Set β
hB : MeasurableSet B
a : α
hf' : f =ᵐ[↑κ a] f'
hg' : g =ᵐ[↑κ a] g'
hfg' : ↑↑(↑κ a) (f ⁻¹' A ∩ g ⁻¹' B) = ↑↑(↑κ a) (f ⁻¹' A) * ↑↑(↑κ a) (g ⁻¹' B)
h1 : f ⁻¹' A =ᵐ[↑κ a] f' ⁻¹' A
⊢ ↑↑(↑κ a) (f' ⁻¹' A ∩ g' ⁻¹' B) = ↑↑(↑κ a) (f' ⁻¹' A) * ↑↑(↑κ a) (g' ⁻¹' B)
[PROOFSTEP]
have h2 : g ⁻¹' B =ᵐ[κ a] g' ⁻¹' B := hg'.fun_comp B
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β
g✝ : Ω → β'
mβ : MeasurableSpace β
f g f' g' : Ω → β
hfg : IndepFun f g κ
hf : ∀ᵐ (a : α) ∂μ, f =ᵐ[↑κ a] f'
hg : ∀ᵐ (a : α) ∂μ, g =ᵐ[↑κ a] g'
A : Set β
hA : MeasurableSet A
B : Set β
hB : MeasurableSet B
a : α
hf' : f =ᵐ[↑κ a] f'
hg' : g =ᵐ[↑κ a] g'
hfg' : ↑↑(↑κ a) (f ⁻¹' A ∩ g ⁻¹' B) = ↑↑(↑κ a) (f ⁻¹' A) * ↑↑(↑κ a) (g ⁻¹' B)
h1 : f ⁻¹' A =ᵐ[↑κ a] f' ⁻¹' A
h2 : g ⁻¹' B =ᵐ[↑κ a] g' ⁻¹' B
⊢ ↑↑(↑κ a) (f' ⁻¹' A ∩ g' ⁻¹' B) = ↑↑(↑κ a) (f' ⁻¹' A) * ↑↑(↑κ a) (g' ⁻¹' B)
[PROOFSTEP]
rwa [← measure_congr h1, ← measure_congr h2, ← measure_congr (h1.inter h2)]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
mγ : MeasurableSpace γ
mγ' : MeasurableSpace γ'
φ : β → γ
ψ : β' → γ'
hfg : IndepFun f g κ
hφ : Measurable φ
hψ : Measurable ψ
⊢ IndepFun (φ ∘ f) (ψ ∘ g) κ
[PROOFSTEP]
rintro _ _ ⟨A, hA, rfl⟩ ⟨B, hB, rfl⟩
[GOAL]
case intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
mγ : MeasurableSpace γ
mγ' : MeasurableSpace γ'
φ : β → γ
ψ : β' → γ'
hfg : IndepFun f g κ
hφ : Measurable φ
hψ : Measurable ψ
A : Set γ
hA : MeasurableSet A
B : Set γ'
hB : MeasurableSet B
⊢ ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (φ ∘ f ⁻¹' A ∩ ψ ∘ g ⁻¹' B) = ↑↑(↑κ a) (φ ∘ f ⁻¹' A) * ↑↑(↑κ a) (ψ ∘ g ⁻¹' B)
[PROOFSTEP]
apply hfg
[GOAL]
case intro.intro.intro.intro.a
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
mγ : MeasurableSpace γ
mγ' : MeasurableSpace γ'
φ : β → γ
ψ : β' → γ'
hfg : IndepFun f g κ
hφ : Measurable φ
hψ : Measurable ψ
A : Set γ
hA : MeasurableSet A
B : Set γ'
hB : MeasurableSet B
⊢ φ ∘ f ⁻¹' A ∈ {s | MeasurableSet s}
[PROOFSTEP]
exact ⟨φ ⁻¹' A, hφ hA, Set.preimage_comp.symm⟩
[GOAL]
case intro.intro.intro.intro.a
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
mγ : MeasurableSpace γ
mγ' : MeasurableSpace γ'
φ : β → γ
ψ : β' → γ'
hfg : IndepFun f g κ
hφ : Measurable φ
hψ : Measurable ψ
A : Set γ
hA : MeasurableSet A
B : Set γ'
hB : MeasurableSet B
⊢ ψ ∘ g ⁻¹' B ∈ {s | MeasurableSet s}
[PROOFSTEP]
exact ⟨ψ ⁻¹' B, hψ hB, Set.preimage_comp.symm⟩
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
⊢ IndepFun (fun a i => f (↑i) a) (fun a i => f (↑i) a) κ
[PROOFSTEP]
let πSβ := Set.pi (Set.univ : Set S) '' Set.pi (Set.univ : Set S) fun i => {s : Set (β i) | MeasurableSet[m i] s}
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
⊢ IndepFun (fun a i => f (↑i) a) (fun a i => f (↑i) a) κ
[PROOFSTEP]
let πS := {s : Set Ω | ∃ t ∈ πSβ, (fun a (i : S) => f i a) ⁻¹' t = s}
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
⊢ IndepFun (fun a i => f (↑i) a) (fun a i => f (↑i) a) κ
[PROOFSTEP]
have hπS_pi : IsPiSystem πS := by exact IsPiSystem.comap (@isPiSystem_pi _ _ ?_) _
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
⊢ IsPiSystem πS
[PROOFSTEP]
exact IsPiSystem.comap (@isPiSystem_pi _ _ ?_) _
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
⊢ IndepFun (fun a i => f (↑i) a) (fun a i => f (↑i) a) κ
[PROOFSTEP]
have hπS_gen : (MeasurableSpace.pi.comap fun a (i : S) => f i a) = generateFrom πS :=
  by
  rw [generateFrom_pi.symm, comap_generateFrom]
  congr
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
⊢ MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
[PROOFSTEP]
rw [generateFrom_pi.symm, comap_generateFrom]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
⊢ generateFrom
      ((Set.preimage fun a i => f (↑i) a) '' (Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s})) =
    generateFrom πS
[PROOFSTEP]
congr
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
⊢ IndepFun (fun a i => f (↑i) a) (fun a i => f (↑i) a) κ
[PROOFSTEP]
let πTβ := Set.pi (Set.univ : Set T) '' Set.pi (Set.univ : Set T) fun i => {s : Set (β i) | MeasurableSet[m i] s}
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
⊢ IndepFun (fun a i => f (↑i) a) (fun a i => f (↑i) a) κ
[PROOFSTEP]
let πT := {s : Set Ω | ∃ t ∈ πTβ, (fun a (i : T) => f i a) ⁻¹' t = s}
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
⊢ IndepFun (fun a i => f (↑i) a) (fun a i => f (↑i) a) κ
[PROOFSTEP]
have hπT_pi : IsPiSystem πT := by exact IsPiSystem.comap (@isPiSystem_pi _ _ ?_) _
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
⊢ IsPiSystem πT
[PROOFSTEP]
exact IsPiSystem.comap (@isPiSystem_pi _ _ ?_) _
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
⊢ IndepFun (fun a i => f (↑i) a) (fun a i => f (↑i) a) κ
[PROOFSTEP]
have hπT_gen : (MeasurableSpace.pi.comap fun a (i : T) => f i a) = generateFrom πT :=
  by
  rw [generateFrom_pi.symm, comap_generateFrom]
  congr
    -- To prove independence, we prove independence of the generating π-systems.
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
⊢ MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
[PROOFSTEP]
rw [generateFrom_pi.symm, comap_generateFrom]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
⊢ generateFrom
      ((Set.preimage fun a i => f (↑i) a) '' (Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s})) =
    generateFrom πT
[PROOFSTEP]
congr
  -- To prove independence, we prove independence of the generating π-systems.
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
⊢ IndepFun (fun a i => f (↑i) a) (fun a i => f (↑i) a) κ
[PROOFSTEP]
refine
  IndepSets.indep (Measurable.comap_le (measurable_pi_iff.mpr fun i => hf_meas i))
    (Measurable.comap_le (measurable_pi_iff.mpr fun i => hf_meas i)) hπS_pi hπT_pi hπS_gen hπT_gen ?_
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
⊢ IndepSets πS πT κ
[PROOFSTEP]
rintro _ _ ⟨s, ⟨sets_s, hs1, hs2⟩, rfl⟩ ⟨t, ⟨sets_t, ht1, ht2⟩, rfl⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs1 : sets_s ∈ Set.pi Set.univ fun i => {s | MeasurableSet s}
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht1 : sets_t ∈ Set.pi Set.univ fun i => {s | MeasurableSet s}
ht2 : Set.pi Set.univ sets_t = t
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' s ∩ (fun a i => f (↑i) a) ⁻¹' t) =
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' s) * ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' t)
[PROOFSTEP]
simp only [Set.mem_univ_pi, Set.mem_setOf_eq] at hs1 ht1 
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' s ∩ (fun a i => f (↑i) a) ⁻¹' t) =
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' s) * ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' t)
[PROOFSTEP]
rw [← hs2, ← ht2]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s ∩ (fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t) =
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s) *
        ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t)
[PROOFSTEP]
classical
let sets_s' : ∀ i : ι, Set (β i) := fun i => dite (i ∈ S) (fun hi => sets_s ⟨i, hi⟩) fun _ => Set.univ
have h_sets_s'_eq : ∀ {i} (hi : i ∈ S), sets_s' i = sets_s ⟨i, hi⟩ := by intro i hi; simp_rw [dif_pos hi]
have h_sets_s'_univ : ∀ {i} (_hi : i ∈ T), sets_s' i = Set.univ := by intro i hi;
  simp_rw [dif_neg (Finset.disjoint_right.mp hST hi)]
let sets_t' : ∀ i : ι, Set (β i) := fun i => dite (i ∈ T) (fun hi => sets_t ⟨i, hi⟩) fun _ => Set.univ
have h_sets_t'_univ : ∀ {i} (_hi : i ∈ S), sets_t' i = Set.univ := by intro i hi;
  simp_rw [dif_neg (Finset.disjoint_left.mp hST hi)]
have h_meas_s' : ∀ i ∈ S, MeasurableSet (sets_s' i) := by intro i hi; rw [h_sets_s'_eq hi]; exact hs1 _
have h_meas_t' : ∀ i ∈ T, MeasurableSet (sets_t' i) := by intro i hi; simp_rw [dif_pos hi]; exact ht1 _
have h_eq_inter_S : (fun (ω : Ω) (i : ↥S) => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ i ∈ S, f i ⁻¹' sets_s' i :=
  by
  ext1 x
  simp_rw [Set.mem_preimage, Set.mem_univ_pi, Set.mem_iInter]
  constructor <;> intro h
  · intro i hi; simp only [h_sets_s'_eq hi, Set.mem_preimage]; exact h ⟨i, hi⟩
  · rintro ⟨i, hi⟩; specialize h i hi; rwa [dif_pos hi] at h 
have h_eq_inter_T : (fun (ω : Ω) (i : ↥T) => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ i ∈ T, f i ⁻¹' sets_t' i :=
  by
  ext1 x
  simp only [Set.mem_preimage, Set.mem_univ_pi, Set.mem_iInter]
  constructor <;> intro h
  · intro i hi; simp_rw [dif_pos hi]; exact h ⟨i, hi⟩
  · rintro ⟨i, hi⟩; specialize h i hi; simp_rw [dif_pos hi] at h ; exact h
rw [iIndepFun_iff_measure_inter_preimage_eq_mul] at hf_Indep 
have h_Inter_inter :
  ((⋂ i ∈ S, f i ⁻¹' sets_s' i) ∩ ⋂ i ∈ T, f i ⁻¹' sets_t' i) = ⋂ i ∈ S ∪ T, f i ⁻¹' (sets_s' i ∩ sets_t' i) :=
  by
  ext1 x
  simp_rw [Set.mem_inter_iff, Set.mem_iInter, Set.mem_preimage, Finset.mem_union]
  constructor <;> intro h
  · intro i hi
    cases' hi with hiS hiT
    · replace h := h.1 i hiS
      simp_rw [dif_pos hiS, dif_neg (Finset.disjoint_left.mp hST hiS)]
      exact ⟨by rwa [dif_pos hiS] at h , Set.mem_univ _⟩
    · replace h := h.2 i hiT
      simp_rw [dif_pos hiT, dif_neg (Finset.disjoint_right.mp hST hiT)]
      exact ⟨Set.mem_univ _, by rwa [dif_pos hiT] at h ⟩
  · exact ⟨fun i hi => (h i (Or.inl hi)).1, fun i hi => (h i (Or.inr hi)).2⟩
have h_meas_inter : ∀ i ∈ S ∪ T, MeasurableSet (sets_s' i ∩ sets_t' i) :=
  by
  intros i hi_mem
  rw [Finset.mem_union] at hi_mem 
  cases' hi_mem with hi_mem hi_mem
  · rw [h_sets_t'_univ hi_mem, Set.inter_univ]
    exact h_meas_s' i hi_mem
  · rw [h_sets_s'_univ hi_mem, Set.univ_inter]
    exact h_meas_t' i hi_mem
filter_upwards [hf_Indep S h_meas_s', hf_Indep T h_meas_t', hf_Indep (S ∪ T) h_meas_inter] with a h_indepS h_indepT
  h_indepST
rw [h_eq_inter_S, h_eq_inter_T, h_indepS, h_indepT, h_Inter_inter, h_indepST, Finset.prod_union hST]
congr 1
· refine'
    Finset.prod_congr rfl fun i hi =>
      _
        -- todo : show is necessary because of todo above
  show κ a (f i ⁻¹' (sets_s' i ∩ sets_t' i)) = κ a (f i ⁻¹' (sets_s' i))
  rw [h_sets_t'_univ hi, Set.inter_univ]
· refine'
    Finset.prod_congr rfl fun i hi =>
      _
        -- todo : show is necessary because of todo above
  show κ a (f i ⁻¹' (sets_s' i ∩ sets_t' i)) = κ a (f i ⁻¹' (sets_t' i))
  rw [h_sets_s'_univ hi, Set.univ_inter]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s ∩ (fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t) =
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s) *
        ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t)
[PROOFSTEP]
let sets_s' : ∀ i : ι, Set (β i) := fun i => dite (i ∈ S) (fun hi => sets_s ⟨i, hi⟩) fun _ => Set.univ
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s ∩ (fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t) =
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s) *
        ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t)
[PROOFSTEP]
have h_sets_s'_eq : ∀ {i} (hi : i ∈ S), sets_s' i = sets_s ⟨i, hi⟩ := by intro i hi; simp_rw [dif_pos hi]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
⊢ ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
[PROOFSTEP]
intro i hi
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
i : ι
hi : i ∈ S
⊢ sets_s' i = sets_s { val := i, property := hi }
[PROOFSTEP]
simp_rw [dif_pos hi]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s ∩ (fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t) =
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s) *
        ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t)
[PROOFSTEP]
have h_sets_s'_univ : ∀ {i} (_hi : i ∈ T), sets_s' i = Set.univ := by intro i hi;
  simp_rw [dif_neg (Finset.disjoint_right.mp hST hi)]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
⊢ ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
[PROOFSTEP]
intro i hi
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
i : ι
hi : i ∈ T
⊢ sets_s' i = Set.univ
[PROOFSTEP]
simp_rw [dif_neg (Finset.disjoint_right.mp hST hi)]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s ∩ (fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t) =
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s) *
        ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t)
[PROOFSTEP]
let sets_t' : ∀ i : ι, Set (β i) := fun i => dite (i ∈ T) (fun hi => sets_t ⟨i, hi⟩) fun _ => Set.univ
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s ∩ (fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t) =
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s) *
        ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t)
[PROOFSTEP]
have h_sets_t'_univ : ∀ {i} (_hi : i ∈ S), sets_t' i = Set.univ := by intro i hi;
  simp_rw [dif_neg (Finset.disjoint_left.mp hST hi)]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
⊢ ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
[PROOFSTEP]
intro i hi
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
i : ι
hi : i ∈ S
⊢ sets_t' i = Set.univ
[PROOFSTEP]
simp_rw [dif_neg (Finset.disjoint_left.mp hST hi)]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s ∩ (fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t) =
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s) *
        ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t)
[PROOFSTEP]
have h_meas_s' : ∀ i ∈ S, MeasurableSet (sets_s' i) := by intro i hi; rw [h_sets_s'_eq hi]; exact hs1 _
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
⊢ ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
[PROOFSTEP]
intro i hi
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
i : ι
hi : i ∈ S
⊢ MeasurableSet (sets_s' i)
[PROOFSTEP]
rw [h_sets_s'_eq hi]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
i : ι
hi : i ∈ S
⊢ MeasurableSet (sets_s { val := i, property := hi })
[PROOFSTEP]
exact hs1 _
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s ∩ (fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t) =
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s) *
        ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t)
[PROOFSTEP]
have h_meas_t' : ∀ i ∈ T, MeasurableSet (sets_t' i) := by intro i hi; simp_rw [dif_pos hi]; exact ht1 _
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
⊢ ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
[PROOFSTEP]
intro i hi
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
i : ι
hi : i ∈ T
⊢ MeasurableSet (sets_t' i)
[PROOFSTEP]
simp_rw [dif_pos hi]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
i : ι
hi : i ∈ T
⊢ MeasurableSet (sets_t { val := i, property := hi })
[PROOFSTEP]
exact ht1 _
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s ∩ (fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t) =
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s) *
        ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t)
[PROOFSTEP]
have h_eq_inter_S : (fun (ω : Ω) (i : ↥S) => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ i ∈ S, f i ⁻¹' sets_s' i :=
  by
  ext1 x
  simp_rw [Set.mem_preimage, Set.mem_univ_pi, Set.mem_iInter]
  constructor <;> intro h
  · intro i hi; simp only [h_sets_s'_eq hi, Set.mem_preimage]; exact h ⟨i, hi⟩
  · rintro ⟨i, hi⟩; specialize h i hi; rwa [dif_pos hi] at h 
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
⊢ (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
[PROOFSTEP]
ext1 x
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
x : Ω
⊢ x ∈ (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s ↔ x ∈ ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
[PROOFSTEP]
simp_rw [Set.mem_preimage, Set.mem_univ_pi, Set.mem_iInter]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
x : Ω
⊢ (∀ (i : { x // x ∈ S }), f (↑i) x ∈ sets_s i) ↔
    ∀ (i : ι), i ∈ S → x ∈ f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
[PROOFSTEP]
constructor
[GOAL]
case h.mp
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
x : Ω
⊢ (∀ (i : { x // x ∈ S }), f (↑i) x ∈ sets_s i) →
    ∀ (i : ι), i ∈ S → x ∈ f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
[PROOFSTEP]
intro h
[GOAL]
case h.mpr
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
x : Ω
⊢ (∀ (i : ι), i ∈ S → x ∈ f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) →
    ∀ (i : { x // x ∈ S }), f (↑i) x ∈ sets_s i
[PROOFSTEP]
intro h
[GOAL]
case h.mp
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
x : Ω
h : ∀ (i : { x // x ∈ S }), f (↑i) x ∈ sets_s i
⊢ ∀ (i : ι), i ∈ S → x ∈ f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
[PROOFSTEP]
intro i hi
[GOAL]
case h.mp
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
x : Ω
h : ∀ (i : { x // x ∈ S }), f (↑i) x ∈ sets_s i
i : ι
hi : i ∈ S
⊢ x ∈ f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
[PROOFSTEP]
simp only [h_sets_s'_eq hi, Set.mem_preimage]
[GOAL]
case h.mp
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
x : Ω
h : ∀ (i : { x // x ∈ S }), f (↑i) x ∈ sets_s i
i : ι
hi : i ∈ S
⊢ f i x ∈ sets_s { val := i, property := hi }
[PROOFSTEP]
exact h ⟨i, hi⟩
[GOAL]
case h.mpr
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
x : Ω
h : ∀ (i : ι), i ∈ S → x ∈ f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
⊢ ∀ (i : { x // x ∈ S }), f (↑i) x ∈ sets_s i
[PROOFSTEP]
rintro ⟨i, hi⟩
[GOAL]
case h.mpr.mk
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
x : Ω
h : ∀ (i : ι), i ∈ S → x ∈ f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
i : ι
hi : i ∈ S
⊢ f (↑{ val := i, property := hi }) x ∈ sets_s { val := i, property := hi }
[PROOFSTEP]
specialize h i hi
[GOAL]
case h.mpr.mk
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
x : Ω
i : ι
hi : i ∈ S
h : x ∈ f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
⊢ f (↑{ val := i, property := hi }) x ∈ sets_s { val := i, property := hi }
[PROOFSTEP]
rwa [dif_pos hi] at h 
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s ∩ (fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t) =
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s) *
        ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t)
[PROOFSTEP]
have h_eq_inter_T : (fun (ω : Ω) (i : ↥T) => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ i ∈ T, f i ⁻¹' sets_t' i :=
  by
  ext1 x
  simp only [Set.mem_preimage, Set.mem_univ_pi, Set.mem_iInter]
  constructor <;> intro h
  · intro i hi; simp_rw [dif_pos hi]; exact h ⟨i, hi⟩
  · rintro ⟨i, hi⟩; specialize h i hi; simp_rw [dif_pos hi] at h ; exact h
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
⊢ (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
[PROOFSTEP]
ext1 x
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
x : Ω
⊢ x ∈ (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t ↔ x ∈ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
[PROOFSTEP]
simp only [Set.mem_preimage, Set.mem_univ_pi, Set.mem_iInter]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
x : Ω
⊢ (∀ (i : { x // x ∈ T }), f (↑i) x ∈ sets_t i) ↔
    ∀ (i : ι), i ∈ T → f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
[PROOFSTEP]
constructor
[GOAL]
case h.mp
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
x : Ω
⊢ (∀ (i : { x // x ∈ T }), f (↑i) x ∈ sets_t i) →
    ∀ (i : ι), i ∈ T → f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
[PROOFSTEP]
intro h
[GOAL]
case h.mpr
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
x : Ω
⊢ (∀ (i : ι), i ∈ T → f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ) →
    ∀ (i : { x // x ∈ T }), f (↑i) x ∈ sets_t i
[PROOFSTEP]
intro h
[GOAL]
case h.mp
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
x : Ω
h : ∀ (i : { x // x ∈ T }), f (↑i) x ∈ sets_t i
⊢ ∀ (i : ι), i ∈ T → f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
[PROOFSTEP]
intro i hi
[GOAL]
case h.mp
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
x : Ω
h : ∀ (i : { x // x ∈ T }), f (↑i) x ∈ sets_t i
i : ι
hi : i ∈ T
⊢ f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
[PROOFSTEP]
simp_rw [dif_pos hi]
[GOAL]
case h.mp
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
x : Ω
h : ∀ (i : { x // x ∈ T }), f (↑i) x ∈ sets_t i
i : ι
hi : i ∈ T
⊢ f i x ∈ sets_t { val := i, property := hi }
[PROOFSTEP]
exact h ⟨i, hi⟩
[GOAL]
case h.mpr
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
x : Ω
h : ∀ (i : ι), i ∈ T → f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
⊢ ∀ (i : { x // x ∈ T }), f (↑i) x ∈ sets_t i
[PROOFSTEP]
rintro ⟨i, hi⟩
[GOAL]
case h.mpr.mk
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
x : Ω
h : ∀ (i : ι), i ∈ T → f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
i : ι
hi : i ∈ T
⊢ f (↑{ val := i, property := hi }) x ∈ sets_t { val := i, property := hi }
[PROOFSTEP]
specialize h i hi
[GOAL]
case h.mpr.mk
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
x : Ω
i : ι
hi : i ∈ T
h : f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
⊢ f (↑{ val := i, property := hi }) x ∈ sets_t { val := i, property := hi }
[PROOFSTEP]
simp_rw [dif_pos hi] at h 
[GOAL]
case h.mpr.mk
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
x : Ω
i : ι
hi : i ∈ T
h : f i x ∈ sets_t { val := i, property := hi }
⊢ f (↑{ val := i, property := hi }) x ∈ sets_t { val := i, property := hi }
[PROOFSTEP]
exact h
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s ∩ (fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t) =
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s) *
        ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t)
[PROOFSTEP]
rw [iIndepFun_iff_measure_inter_preimage_eq_mul] at hf_Indep 
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s ∩ (fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t) =
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s) *
        ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t)
[PROOFSTEP]
have h_Inter_inter :
  ((⋂ i ∈ S, f i ⁻¹' sets_s' i) ∩ ⋂ i ∈ T, f i ⁻¹' sets_t' i) = ⋂ i ∈ S ∪ T, f i ⁻¹' (sets_s' i ∩ sets_t' i) :=
  by
  ext1 x
  simp_rw [Set.mem_inter_iff, Set.mem_iInter, Set.mem_preimage, Finset.mem_union]
  constructor <;> intro h
  · intro i hi
    cases' hi with hiS hiT
    · replace h := h.1 i hiS
      simp_rw [dif_pos hiS, dif_neg (Finset.disjoint_left.mp hST hiS)]
      exact ⟨by rwa [dif_pos hiS] at h , Set.mem_univ _⟩
    · replace h := h.2 i hiT
      simp_rw [dif_pos hiT, dif_neg (Finset.disjoint_right.mp hST hiT)]
      exact ⟨Set.mem_univ _, by rwa [dif_pos hiT] at h ⟩
  · exact ⟨fun i hi => (h i (Or.inl hi)).1, fun i hi => (h i (Or.inr hi)).2⟩
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
⊢ (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
[PROOFSTEP]
ext1 x
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
x : Ω
⊢ x ∈ (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i ↔
    x ∈ ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
[PROOFSTEP]
simp_rw [Set.mem_inter_iff, Set.mem_iInter, Set.mem_preimage, Finset.mem_union]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
x : Ω
⊢ ((∀ (i : ι), i ∈ S → f i x ∈ if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∧
      ∀ (i : ι), i ∈ T → f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ) ↔
    ∀ (i : ι),
      i ∈ S ∨ i ∈ T →
        f i x ∈
          (if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
[PROOFSTEP]
constructor
[GOAL]
case h.mp
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
x : Ω
⊢ ((∀ (i : ι), i ∈ S → f i x ∈ if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∧
      ∀ (i : ι), i ∈ T → f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ) →
    ∀ (i : ι),
      i ∈ S ∨ i ∈ T →
        f i x ∈
          (if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
[PROOFSTEP]
intro h
[GOAL]
case h.mpr
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
x : Ω
⊢ (∀ (i : ι),
      i ∈ S ∨ i ∈ T →
        f i x ∈
          (if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ) →
    (∀ (i : ι), i ∈ S → f i x ∈ if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∧
      ∀ (i : ι), i ∈ T → f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
[PROOFSTEP]
intro h
[GOAL]
case h.mp
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
x : Ω
h :
  (∀ (i : ι), i ∈ S → f i x ∈ if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∧
    ∀ (i : ι), i ∈ T → f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
⊢ ∀ (i : ι),
    i ∈ S ∨ i ∈ T →
      f i x ∈
        (if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
          if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
[PROOFSTEP]
intro i hi
[GOAL]
case h.mp
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
x : Ω
h :
  (∀ (i : ι), i ∈ S → f i x ∈ if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∧
    ∀ (i : ι), i ∈ T → f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
i : ι
hi : i ∈ S ∨ i ∈ T
⊢ f i x ∈
    (if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
      if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
[PROOFSTEP]
cases' hi with hiS hiT
[GOAL]
case h.mp.inl
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
x : Ω
h :
  (∀ (i : ι), i ∈ S → f i x ∈ if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∧
    ∀ (i : ι), i ∈ T → f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
i : ι
hiS : i ∈ S
⊢ f i x ∈
    (if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
      if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
[PROOFSTEP]
replace h := h.1 i hiS
[GOAL]
case h.mp.inl
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
x : Ω
i : ι
hiS : i ∈ S
h : f i x ∈ if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
⊢ f i x ∈
    (if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
      if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
[PROOFSTEP]
simp_rw [dif_pos hiS, dif_neg (Finset.disjoint_left.mp hST hiS)]
[GOAL]
case h.mp.inl
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
x : Ω
i : ι
hiS : i ∈ S
h : f i x ∈ if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
⊢ f i x ∈ sets_s { val := i, property := hiS } ∩ Set.univ
[PROOFSTEP]
exact ⟨by rwa [dif_pos hiS] at h , Set.mem_univ _⟩
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
x : Ω
i : ι
hiS : i ∈ S
h : f i x ∈ if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
⊢ f i x ∈ sets_s { val := i, property := hiS }
[PROOFSTEP]
rwa [dif_pos hiS] at h 
[GOAL]
case h.mp.inr
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
x : Ω
h :
  (∀ (i : ι), i ∈ S → f i x ∈ if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∧
    ∀ (i : ι), i ∈ T → f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
i : ι
hiT : i ∈ T
⊢ f i x ∈
    (if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
      if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
[PROOFSTEP]
replace h := h.2 i hiT
[GOAL]
case h.mp.inr
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
x : Ω
i : ι
hiT : i ∈ T
h : f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
⊢ f i x ∈
    (if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
      if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
[PROOFSTEP]
simp_rw [dif_pos hiT, dif_neg (Finset.disjoint_right.mp hST hiT)]
[GOAL]
case h.mp.inr
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
x : Ω
i : ι
hiT : i ∈ T
h : f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
⊢ f i x ∈ Set.univ ∩ sets_t { val := i, property := hiT }
[PROOFSTEP]
exact ⟨Set.mem_univ _, by rwa [dif_pos hiT] at h ⟩
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
x : Ω
i : ι
hiT : i ∈ T
h : f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
⊢ f i x ∈ sets_t { val := i, property := hiT }
[PROOFSTEP]
rwa [dif_pos hiT] at h 
[GOAL]
case h.mpr
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
x : Ω
h :
  ∀ (i : ι),
    i ∈ S ∨ i ∈ T →
      f i x ∈
        (if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
          if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
⊢ (∀ (i : ι), i ∈ S → f i x ∈ if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∧
    ∀ (i : ι), i ∈ T → f i x ∈ if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
[PROOFSTEP]
exact ⟨fun i hi => (h i (Or.inl hi)).1, fun i hi => (h i (Or.inr hi)).2⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s ∩ (fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t) =
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s) *
        ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t)
[PROOFSTEP]
have h_meas_inter : ∀ i ∈ S ∪ T, MeasurableSet (sets_s' i ∩ sets_t' i) :=
  by
  intros i hi_mem
  rw [Finset.mem_union] at hi_mem 
  cases' hi_mem with hi_mem hi_mem
  · rw [h_sets_t'_univ hi_mem, Set.inter_univ]
    exact h_meas_s' i hi_mem
  · rw [h_sets_s'_univ hi_mem, Set.univ_inter]
    exact h_meas_t' i hi_mem
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
⊢ ∀ (i : ι), i ∈ S ∪ T → MeasurableSet (sets_s' i ∩ sets_t' i)
[PROOFSTEP]
intros i hi_mem
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
i : ι
hi_mem : i ∈ S ∪ T
⊢ MeasurableSet (sets_s' i ∩ sets_t' i)
[PROOFSTEP]
rw [Finset.mem_union] at hi_mem 
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
i : ι
hi_mem : i ∈ S ∨ i ∈ T
⊢ MeasurableSet (sets_s' i ∩ sets_t' i)
[PROOFSTEP]
cases' hi_mem with hi_mem hi_mem
[GOAL]
case inl
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
i : ι
hi_mem : i ∈ S
⊢ MeasurableSet (sets_s' i ∩ sets_t' i)
[PROOFSTEP]
rw [h_sets_t'_univ hi_mem, Set.inter_univ]
[GOAL]
case inl
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
i : ι
hi_mem : i ∈ S
⊢ MeasurableSet (sets_s' i)
[PROOFSTEP]
exact h_meas_s' i hi_mem
[GOAL]
case inr
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
i : ι
hi_mem : i ∈ T
⊢ MeasurableSet (sets_s' i ∩ sets_t' i)
[PROOFSTEP]
rw [h_sets_s'_univ hi_mem, Set.univ_inter]
[GOAL]
case inr
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
i : ι
hi_mem : i ∈ T
⊢ MeasurableSet (sets_t' i)
[PROOFSTEP]
exact h_meas_t' i hi_mem
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
h_meas_inter : ∀ (i : ι), i ∈ S ∪ T → MeasurableSet (sets_s' i ∩ sets_t' i)
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s ∩ (fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t) =
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s) *
        ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t)
[PROOFSTEP]
filter_upwards [hf_Indep S h_meas_s', hf_Indep T h_meas_t', hf_Indep (S ∪ T) h_meas_inter] with a h_indepS h_indepT
  h_indepST
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
h_meas_inter : ∀ (i : ι), i ∈ S ∪ T → MeasurableSet (sets_s' i ∩ sets_t' i)
a : α
h_indepS :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) =
    ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ)
h_indepT :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ) =
    ∏ i in T, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)
h_indepST :
  ↑↑(↑κ a)
      (⋂ (i : ι) (_ : i ∈ S ∪ T),
        f i ⁻¹'
          ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)) =
    ∏ i in S ∪ T,
      ↑↑(↑κ a)
        (f i ⁻¹'
          ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ))
⊢ ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s ∩ (fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t) =
    ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_s) *
      ↑↑(↑κ a) ((fun a i => f (↑i) a) ⁻¹' Set.pi Set.univ sets_t)
[PROOFSTEP]
rw [h_eq_inter_S, h_eq_inter_T, h_indepS, h_indepT, h_Inter_inter, h_indepST, Finset.prod_union hST]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
h_meas_inter : ∀ (i : ι), i ∈ S ∪ T → MeasurableSet (sets_s' i ∩ sets_t' i)
a : α
h_indepS :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) =
    ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ)
h_indepT :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ) =
    ∏ i in T, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)
h_indepST :
  ↑↑(↑κ a)
      (⋂ (i : ι) (_ : i ∈ S ∪ T),
        f i ⁻¹'
          ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)) =
    ∏ i in S ∪ T,
      ↑↑(↑κ a)
        (f i ⁻¹'
          ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ))
⊢ (∏ x in S,
        ↑↑(↑κ a)
          (f x ⁻¹'
            ((if hi : x ∈ S then sets_s { val := x, property := hi } else Set.univ) ∩
              if hi : x ∈ T then sets_t { val := x, property := hi } else Set.univ))) *
      ∏ x in T,
        ↑↑(↑κ a)
          (f x ⁻¹'
            ((if hi : x ∈ S then sets_s { val := x, property := hi } else Set.univ) ∩
              if hi : x ∈ T then sets_t { val := x, property := hi } else Set.univ)) =
    (∏ i in S, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ)) *
      ∏ i in T, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)
[PROOFSTEP]
congr 1
[GOAL]
case h.e_a
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
h_meas_inter : ∀ (i : ι), i ∈ S ∪ T → MeasurableSet (sets_s' i ∩ sets_t' i)
a : α
h_indepS :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) =
    ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ)
h_indepT :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ) =
    ∏ i in T, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)
h_indepST :
  ↑↑(↑κ a)
      (⋂ (i : ι) (_ : i ∈ S ∪ T),
        f i ⁻¹'
          ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)) =
    ∏ i in S ∪ T,
      ↑↑(↑κ a)
        (f i ⁻¹'
          ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ))
⊢ ∏ x in S,
      ↑↑(↑κ a)
        (f x ⁻¹'
          ((if hi : x ∈ S then sets_s { val := x, property := hi } else Set.univ) ∩
            if hi : x ∈ T then sets_t { val := x, property := hi } else Set.univ)) =
    ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ)
[PROOFSTEP]
refine'
  Finset.prod_congr rfl fun i hi =>
    _
      -- todo : show is necessary because of todo above
[GOAL]
case h.e_a
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
h_meas_inter : ∀ (i : ι), i ∈ S ∪ T → MeasurableSet (sets_s' i ∩ sets_t' i)
a : α
h_indepS :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) =
    ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ)
h_indepT :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ) =
    ∏ i in T, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)
h_indepST :
  ↑↑(↑κ a)
      (⋂ (i : ι) (_ : i ∈ S ∪ T),
        f i ⁻¹'
          ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)) =
    ∏ i in S ∪ T,
      ↑↑(↑κ a)
        (f i ⁻¹'
          ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ))
i : ι
hi : i ∈ S
⊢ ↑↑(↑κ a)
      (f i ⁻¹'
        ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
          if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)) =
    ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ)
[PROOFSTEP]
show κ a (f i ⁻¹' (sets_s' i ∩ sets_t' i)) = κ a (f i ⁻¹' (sets_s' i))
[GOAL]
case h.e_a
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
h_meas_inter : ∀ (i : ι), i ∈ S ∪ T → MeasurableSet (sets_s' i ∩ sets_t' i)
a : α
h_indepS :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) =
    ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ)
h_indepT :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ) =
    ∏ i in T, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)
h_indepST :
  ↑↑(↑κ a)
      (⋂ (i : ι) (_ : i ∈ S ∪ T),
        f i ⁻¹'
          ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)) =
    ∏ i in S ∪ T,
      ↑↑(↑κ a)
        (f i ⁻¹'
          ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ))
i : ι
hi : i ∈ S
⊢ ↑↑(↑κ a) (f i ⁻¹' (sets_s' i ∩ sets_t' i)) = ↑↑(↑κ a) (f i ⁻¹' sets_s' i)
[PROOFSTEP]
rw [h_sets_t'_univ hi, Set.inter_univ]
[GOAL]
case h.e_a
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
h_meas_inter : ∀ (i : ι), i ∈ S ∪ T → MeasurableSet (sets_s' i ∩ sets_t' i)
a : α
h_indepS :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) =
    ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ)
h_indepT :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ) =
    ∏ i in T, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)
h_indepST :
  ↑↑(↑κ a)
      (⋂ (i : ι) (_ : i ∈ S ∪ T),
        f i ⁻¹'
          ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)) =
    ∏ i in S ∪ T,
      ↑↑(↑κ a)
        (f i ⁻¹'
          ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ))
⊢ ∏ x in T,
      ↑↑(↑κ a)
        (f x ⁻¹'
          ((if hi : x ∈ S then sets_s { val := x, property := hi } else Set.univ) ∩
            if hi : x ∈ T then sets_t { val := x, property := hi } else Set.univ)) =
    ∏ i in T, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)
[PROOFSTEP]
refine'
  Finset.prod_congr rfl fun i hi =>
    _
      -- todo : show is necessary because of todo above
[GOAL]
case h.e_a
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
h_meas_inter : ∀ (i : ι), i ∈ S ∪ T → MeasurableSet (sets_s' i ∩ sets_t' i)
a : α
h_indepS :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) =
    ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ)
h_indepT :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ) =
    ∏ i in T, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)
h_indepST :
  ↑↑(↑κ a)
      (⋂ (i : ι) (_ : i ∈ S ∪ T),
        f i ⁻¹'
          ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)) =
    ∏ i in S ∪ T,
      ↑↑(↑κ a)
        (f i ⁻¹'
          ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ))
i : ι
hi : i ∈ T
⊢ ↑↑(↑κ a)
      (f i ⁻¹'
        ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
          if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)) =
    ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)
[PROOFSTEP]
show κ a (f i ⁻¹' (sets_s' i ∩ sets_t' i)) = κ a (f i ⁻¹' (sets_t' i))
[GOAL]
case h.e_a
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
S T : Finset ι
hST : Disjoint S T
hf_Indep :
  ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ, ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets i) = ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' sets i)
hf_meas : ∀ (i : ι), Measurable (f i)
πSβ : Set (Set ((i : { x // x ∈ S }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πS : Set (Set Ω) := {s | ∃ t, t ∈ πSβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπS_pi : IsPiSystem πS
hπS_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πS
πTβ : Set (Set ((i : { x // x ∈ T }) → β ↑i)) := Set.pi Set.univ '' Set.pi Set.univ fun i => {s | MeasurableSet s}
πT : Set (Set Ω) := {s | ∃ t, t ∈ πTβ ∧ (fun a i => f (↑i) a) ⁻¹' t = s}
hπT_pi : IsPiSystem πT
hπT_gen : MeasurableSpace.comap (fun a i => f (↑i) a) pi = generateFrom πT
s : Set ((i : { x // x ∈ S }) → β ↑i)
sets_s : (i : { x // x ∈ S }) → Set (β ↑i)
hs2 : Set.pi Set.univ sets_s = s
t : Set ((i : { x // x ∈ T }) → β ↑i)
sets_t : (i : { x // x ∈ T }) → Set (β ↑i)
ht2 : Set.pi Set.univ sets_t = t
hs1 : ∀ (i : { x // x ∈ S }), MeasurableSet (sets_s i)
ht1 : ∀ (i : { x // x ∈ T }), MeasurableSet (sets_t i)
sets_s' : (i : ι) → Set (β i) := fun i => if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ
h_sets_s'_eq : ∀ {i : ι} (hi : i ∈ S), sets_s' i = sets_s { val := i, property := hi }
h_sets_s'_univ : ∀ {i : ι}, i ∈ T → sets_s' i = Set.univ
sets_t' : (i : ι) → Set (β i) := fun i => if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ
h_sets_t'_univ : ∀ {i : ι}, i ∈ S → sets_t' i = Set.univ
h_meas_s' : ∀ (i : ι), i ∈ S → MeasurableSet (sets_s' i)
h_meas_t' : ∀ (i : ι), i ∈ T → MeasurableSet (sets_t' i)
h_eq_inter_S : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_s = ⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i
h_eq_inter_T : (fun ω i => f (↑i) ω) ⁻¹' Set.pi Set.univ sets_t = ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i
h_Inter_inter :
  (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' sets_s' i) ∩ ⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' sets_t' i =
    ⋂ (i : ι) (_ : i ∈ S ∪ T), f i ⁻¹' (sets_s' i ∩ sets_t' i)
h_meas_inter : ∀ (i : ι), i ∈ S ∪ T → MeasurableSet (sets_s' i ∩ sets_t' i)
a : α
h_indepS :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) =
    ∏ i in S, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ)
h_indepT :
  ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ T), f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ) =
    ∏ i in T, ↑↑(↑κ a) (f i ⁻¹' if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)
h_indepST :
  ↑↑(↑κ a)
      (⋂ (i : ι) (_ : i ∈ S ∪ T),
        f i ⁻¹'
          ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ)) =
    ∏ i in S ∪ T,
      ↑↑(↑κ a)
        (f i ⁻¹'
          ((if hi : i ∈ S then sets_s { val := i, property := hi } else Set.univ) ∩
            if hi : i ∈ T then sets_t { val := i, property := hi } else Set.univ))
i : ι
hi : i ∈ T
⊢ ↑↑(↑κ a) (f i ⁻¹' (sets_s' i ∩ sets_t' i)) = ↑↑(↑κ a) (f i ⁻¹' sets_t' i)
[PROOFSTEP]
rw [h_sets_s'_univ hi, Set.univ_inter]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
⊢ IndepFun (fun a => (f i a, f j a)) (f k) κ
[PROOFSTEP]
classical
have h_right :
  f k =
    (fun p : ∀ j : ({ k } : Finset ι), β j => p ⟨k, Finset.mem_singleton_self k⟩) ∘ fun a (j : ({ k } : Finset ι)) =>
      f j a :=
  rfl
have h_meas_right : Measurable fun p : ∀ j : ({ k } : Finset ι), β j => p ⟨k, Finset.mem_singleton_self k⟩ :=
  measurable_pi_apply _
let s : Finset ι := { i, j }
have h_left :
  (fun ω => (f i ω, f j ω)) =
    (fun p : ∀ l : s, β l =>
        (p ⟨i, Finset.mem_insert_self i _⟩, p ⟨j, Finset.mem_insert_of_mem (Finset.mem_singleton_self _)⟩)) ∘
      fun a (j : s) => f j a :=
  by
  ext1 a
  simp only [Prod.mk.inj_iff]
  constructor
have h_meas_left :
  Measurable fun p : ∀ l : s, β l =>
    (p ⟨i, Finset.mem_insert_self i _⟩, p ⟨j, Finset.mem_insert_of_mem (Finset.mem_singleton_self _)⟩) :=
  Measurable.prod (measurable_pi_apply _) (measurable_pi_apply _)
rw [h_left, h_right]
refine' (hf_Indep.indepFun_finset s { k } _ hf_meas).comp h_meas_left h_meas_right
rw [Finset.disjoint_singleton_right]
simp only [Finset.mem_insert, Finset.mem_singleton, not_or]
exact ⟨hik.symm, hjk.symm⟩
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
⊢ IndepFun (fun a => (f i a, f j a)) (f k) κ
[PROOFSTEP]
have h_right :
  f k =
    (fun p : ∀ j : ({ k } : Finset ι), β j => p ⟨k, Finset.mem_singleton_self k⟩) ∘ fun a (j : ({ k } : Finset ι)) =>
      f j a :=
  rfl
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
h_right : f k = (fun p => p { val := k, property := (_ : k ∈ {k}) }) ∘ fun a j => f (↑j) a
⊢ IndepFun (fun a => (f i a, f j a)) (f k) κ
[PROOFSTEP]
have h_meas_right : Measurable fun p : ∀ j : ({ k } : Finset ι), β j => p ⟨k, Finset.mem_singleton_self k⟩ :=
  measurable_pi_apply _
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
h_right : f k = (fun p => p { val := k, property := (_ : k ∈ {k}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := k, property := (_ : k ∈ {k}) }
⊢ IndepFun (fun a => (f i a, f j a)) (f k) κ
[PROOFSTEP]
let s : Finset ι := { i, j }
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
h_right : f k = (fun p => p { val := k, property := (_ : k ∈ {k}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := k, property := (_ : k ∈ {k}) }
s : Finset ι := {i, j}
⊢ IndepFun (fun a => (f i a, f j a)) (f k) κ
[PROOFSTEP]
have h_left :
  (fun ω => (f i ω, f j ω)) =
    (fun p : ∀ l : s, β l =>
        (p ⟨i, Finset.mem_insert_self i _⟩, p ⟨j, Finset.mem_insert_of_mem (Finset.mem_singleton_self _)⟩)) ∘
      fun a (j : s) => f j a :=
  by
  ext1 a
  simp only [Prod.mk.inj_iff]
  constructor
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
h_right : f k = (fun p => p { val := k, property := (_ : k ∈ {k}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := k, property := (_ : k ∈ {k}) }
s : Finset ι := {i, j}
⊢ (fun ω => (f i ω, f j ω)) =
    (fun p => (p { val := i, property := (_ : i ∈ {i, j}) }, p { val := j, property := (_ : j ∈ {i, j}) })) ∘ fun a j =>
      f (↑j) a
[PROOFSTEP]
ext1 a
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
h_right : f k = (fun p => p { val := k, property := (_ : k ∈ {k}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := k, property := (_ : k ∈ {k}) }
s : Finset ι := {i, j}
a : Ω
⊢ (f i a, f j a) =
    ((fun p => (p { val := i, property := (_ : i ∈ {i, j}) }, p { val := j, property := (_ : j ∈ {i, j}) })) ∘
        fun a j => f (↑j) a)
      a
[PROOFSTEP]
simp only [Prod.mk.inj_iff]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
h_right : f k = (fun p => p { val := k, property := (_ : k ∈ {k}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := k, property := (_ : k ∈ {k}) }
s : Finset ι := {i, j}
a : Ω
⊢ (f i a, f j a) =
    ((fun p => (p { val := i, property := (_ : i ∈ {i, j}) }, p { val := j, property := (_ : j ∈ {i, j}) })) ∘
        fun a j_1 => f (↑j_1) a)
      a
[PROOFSTEP]
constructor
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
h_right : f k = (fun p => p { val := k, property := (_ : k ∈ {k}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := k, property := (_ : k ∈ {k}) }
s : Finset ι := {i, j}
h_left :
  (fun ω => (f i ω, f j ω)) =
    (fun p => (p { val := i, property := (_ : i ∈ {i, j}) }, p { val := j, property := (_ : j ∈ {i, j}) })) ∘ fun a j =>
      f (↑j) a
⊢ IndepFun (fun a => (f i a, f j a)) (f k) κ
[PROOFSTEP]
have h_meas_left :
  Measurable fun p : ∀ l : s, β l =>
    (p ⟨i, Finset.mem_insert_self i _⟩, p ⟨j, Finset.mem_insert_of_mem (Finset.mem_singleton_self _)⟩) :=
  Measurable.prod (measurable_pi_apply _) (measurable_pi_apply _)
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
h_right : f k = (fun p => p { val := k, property := (_ : k ∈ {k}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := k, property := (_ : k ∈ {k}) }
s : Finset ι := {i, j}
h_left :
  (fun ω => (f i ω, f j ω)) =
    (fun p => (p { val := i, property := (_ : i ∈ {i, j}) }, p { val := j, property := (_ : j ∈ {i, j}) })) ∘ fun a j =>
      f (↑j) a
h_meas_left :
  Measurable fun p => (p { val := i, property := (_ : i ∈ {i, j}) }, p { val := j, property := (_ : j ∈ {i, j}) })
⊢ IndepFun (fun a => (f i a, f j a)) (f k) κ
[PROOFSTEP]
rw [h_left, h_right]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
h_right : f k = (fun p => p { val := k, property := (_ : k ∈ {k}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := k, property := (_ : k ∈ {k}) }
s : Finset ι := {i, j}
h_left :
  (fun ω => (f i ω, f j ω)) =
    (fun p => (p { val := i, property := (_ : i ∈ {i, j}) }, p { val := j, property := (_ : j ∈ {i, j}) })) ∘ fun a j =>
      f (↑j) a
h_meas_left :
  Measurable fun p => (p { val := i, property := (_ : i ∈ {i, j}) }, p { val := j, property := (_ : j ∈ {i, j}) })
⊢ IndepFun
    ((fun p => (p { val := i, property := (_ : i ∈ {i, j}) }, p { val := j, property := (_ : j ∈ {i, j}) })) ∘
      fun a j => f (↑j) a)
    ((fun p => p { val := k, property := (_ : k ∈ {k}) }) ∘ fun a j => f (↑j) a) κ
[PROOFSTEP]
refine' (hf_Indep.indepFun_finset s { k } _ hf_meas).comp h_meas_left h_meas_right
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
h_right : f k = (fun p => p { val := k, property := (_ : k ∈ {k}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := k, property := (_ : k ∈ {k}) }
s : Finset ι := {i, j}
h_left :
  (fun ω => (f i ω, f j ω)) =
    (fun p => (p { val := i, property := (_ : i ∈ {i, j}) }, p { val := j, property := (_ : j ∈ {i, j}) })) ∘ fun a j =>
      f (↑j) a
h_meas_left :
  Measurable fun p => (p { val := i, property := (_ : i ∈ {i, j}) }, p { val := j, property := (_ : j ∈ {i, j}) })
⊢ Disjoint s {k}
[PROOFSTEP]
rw [Finset.disjoint_singleton_right]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
h_right : f k = (fun p => p { val := k, property := (_ : k ∈ {k}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := k, property := (_ : k ∈ {k}) }
s : Finset ι := {i, j}
h_left :
  (fun ω => (f i ω, f j ω)) =
    (fun p => (p { val := i, property := (_ : i ∈ {i, j}) }, p { val := j, property := (_ : j ∈ {i, j}) })) ∘ fun a j =>
      f (↑j) a
h_meas_left :
  Measurable fun p => (p { val := i, property := (_ : i ∈ {i, j}) }, p { val := j, property := (_ : j ∈ {i, j}) })
⊢ ¬k ∈ s
[PROOFSTEP]
simp only [Finset.mem_insert, Finset.mem_singleton, not_or]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝ : IsMarkovKernel κ
ι : Type u_8
β : ι → Type u_9
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
hf_Indep : iIndepFun m f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
h_right : f k = (fun p => p { val := k, property := (_ : k ∈ {k}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := k, property := (_ : k ∈ {k}) }
s : Finset ι := {i, j}
h_left :
  (fun ω => (f i ω, f j ω)) =
    (fun p => (p { val := i, property := (_ : i ∈ {i, j}) }, p { val := j, property := (_ : j ∈ {i, j}) })) ∘ fun a j =>
      f (↑j) a
h_meas_left :
  Measurable fun p => (p { val := i, property := (_ : i ∈ {i, j}) }, p { val := j, property := (_ : j ∈ {i, j}) })
⊢ ¬k = i ∧ ¬k = j
[PROOFSTEP]
exact ⟨hik.symm, hjk.symm⟩
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝² : IsMarkovKernel κ
ι : Type u_8
β : Type u_9
m : MeasurableSpace β
inst✝¹ : Mul β
inst✝ : MeasurableMul₂ β
f : ι → Ω → β
hf_Indep : iIndepFun (fun x => m) f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
⊢ IndepFun (f i * f j) (f k) κ
[PROOFSTEP]
have : IndepFun (fun ω => (f i ω, f j ω)) (f k) κ μ := hf_Indep.indepFun_prod hf_meas i j k hik hjk
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝² : IsMarkovKernel κ
ι : Type u_8
β : Type u_9
m : MeasurableSpace β
inst✝¹ : Mul β
inst✝ : MeasurableMul₂ β
f : ι → Ω → β
hf_Indep : iIndepFun (fun x => m) f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
this : IndepFun (fun ω => (f i ω, f j ω)) (f k) κ
⊢ IndepFun (f i * f j) (f k) κ
[PROOFSTEP]
change IndepFun ((fun p : β × β => p.fst * p.snd) ∘ fun ω => (f i ω, f j ω)) (id ∘ f k) κ μ
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝² : IsMarkovKernel κ
ι : Type u_8
β : Type u_9
m : MeasurableSpace β
inst✝¹ : Mul β
inst✝ : MeasurableMul₂ β
f : ι → Ω → β
hf_Indep : iIndepFun (fun x => m) f κ
hf_meas : ∀ (i : ι), Measurable (f i)
i j k : ι
hik : i ≠ k
hjk : j ≠ k
this : IndepFun (fun ω => (f i ω, f j ω)) (f k) κ
⊢ IndepFun ((fun p => p.fst * p.snd) ∘ fun ω => (f i ω, f j ω)) (id ∘ f k) κ
[PROOFSTEP]
exact IndepFun.comp this (measurable_fst.mul measurable_snd) measurable_id
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝² : IsMarkovKernel κ
ι : Type u_8
β : Type u_9
m : MeasurableSpace β
inst✝¹ : CommMonoid β
inst✝ : MeasurableMul₂ β
f : ι → Ω → β
hf_Indep : iIndepFun (fun x => m) f κ
hf_meas : ∀ (i : ι), Measurable (f i)
s : Finset ι
i : ι
hi : ¬i ∈ s
⊢ IndepFun (∏ j in s, f j) (f i) κ
[PROOFSTEP]
classical
have h_right :
  f i =
    (fun p : ∀ _j : ({ i } : Finset ι), β => p ⟨i, Finset.mem_singleton_self i⟩) ∘ fun a (j : ({ i } : Finset ι)) =>
      f j a :=
  rfl
have h_meas_right : Measurable fun p : ∀ _j : ({ i } : Finset ι), β => p ⟨i, Finset.mem_singleton_self i⟩ :=
  measurable_pi_apply ⟨i, Finset.mem_singleton_self i⟩
have h_left : ∏ j in s, f j = (fun p : ∀ _j : s, β => ∏ j, p j) ∘ fun a (j : s) => f j a :=
  by
  ext1 a
  simp only [Function.comp_apply]
  have : (∏ j : ↥s, f (↑j) a) = (∏ j : ↥s, f ↑j) a := by rw [Finset.prod_apply]
  rw [this, Finset.prod_coe_sort]
have h_meas_left : Measurable fun p : ∀ _j : s, β => ∏ j, p j :=
  Finset.univ.measurable_prod fun (j : ↥s) (_H : j ∈ Finset.univ) => measurable_pi_apply j
rw [h_left, h_right]
exact
  (hf_Indep.indepFun_finset s { i } (Finset.disjoint_singleton_left.mpr hi).symm hf_meas).comp h_meas_left h_meas_right
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝² : IsMarkovKernel κ
ι : Type u_8
β : Type u_9
m : MeasurableSpace β
inst✝¹ : CommMonoid β
inst✝ : MeasurableMul₂ β
f : ι → Ω → β
hf_Indep : iIndepFun (fun x => m) f κ
hf_meas : ∀ (i : ι), Measurable (f i)
s : Finset ι
i : ι
hi : ¬i ∈ s
⊢ IndepFun (∏ j in s, f j) (f i) κ
[PROOFSTEP]
have h_right :
  f i =
    (fun p : ∀ _j : ({ i } : Finset ι), β => p ⟨i, Finset.mem_singleton_self i⟩) ∘ fun a (j : ({ i } : Finset ι)) =>
      f j a :=
  rfl
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝² : IsMarkovKernel κ
ι : Type u_8
β : Type u_9
m : MeasurableSpace β
inst✝¹ : CommMonoid β
inst✝ : MeasurableMul₂ β
f : ι → Ω → β
hf_Indep : iIndepFun (fun x => m) f κ
hf_meas : ∀ (i : ι), Measurable (f i)
s : Finset ι
i : ι
hi : ¬i ∈ s
h_right : f i = (fun p => p { val := i, property := (_ : i ∈ {i}) }) ∘ fun a j => f (↑j) a
⊢ IndepFun (∏ j in s, f j) (f i) κ
[PROOFSTEP]
have h_meas_right : Measurable fun p : ∀ _j : ({ i } : Finset ι), β => p ⟨i, Finset.mem_singleton_self i⟩ :=
  measurable_pi_apply ⟨i, Finset.mem_singleton_self i⟩
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝² : IsMarkovKernel κ
ι : Type u_8
β : Type u_9
m : MeasurableSpace β
inst✝¹ : CommMonoid β
inst✝ : MeasurableMul₂ β
f : ι → Ω → β
hf_Indep : iIndepFun (fun x => m) f κ
hf_meas : ∀ (i : ι), Measurable (f i)
s : Finset ι
i : ι
hi : ¬i ∈ s
h_right : f i = (fun p => p { val := i, property := (_ : i ∈ {i}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := i, property := (_ : i ∈ {i}) }
⊢ IndepFun (∏ j in s, f j) (f i) κ
[PROOFSTEP]
have h_left : ∏ j in s, f j = (fun p : ∀ _j : s, β => ∏ j, p j) ∘ fun a (j : s) => f j a :=
  by
  ext1 a
  simp only [Function.comp_apply]
  have : (∏ j : ↥s, f (↑j) a) = (∏ j : ↥s, f ↑j) a := by rw [Finset.prod_apply]
  rw [this, Finset.prod_coe_sort]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝² : IsMarkovKernel κ
ι : Type u_8
β : Type u_9
m : MeasurableSpace β
inst✝¹ : CommMonoid β
inst✝ : MeasurableMul₂ β
f : ι → Ω → β
hf_Indep : iIndepFun (fun x => m) f κ
hf_meas : ∀ (i : ι), Measurable (f i)
s : Finset ι
i : ι
hi : ¬i ∈ s
h_right : f i = (fun p => p { val := i, property := (_ : i ∈ {i}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := i, property := (_ : i ∈ {i}) }
⊢ ∏ j in s, f j = (fun p => ∏ j : { x // x ∈ s }, p j) ∘ fun a j => f (↑j) a
[PROOFSTEP]
ext1 a
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝² : IsMarkovKernel κ
ι : Type u_8
β : Type u_9
m : MeasurableSpace β
inst✝¹ : CommMonoid β
inst✝ : MeasurableMul₂ β
f : ι → Ω → β
hf_Indep : iIndepFun (fun x => m) f κ
hf_meas : ∀ (i : ι), Measurable (f i)
s : Finset ι
i : ι
hi : ¬i ∈ s
h_right : f i = (fun p => p { val := i, property := (_ : i ∈ {i}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := i, property := (_ : i ∈ {i}) }
a : Ω
⊢ Finset.prod s (fun j => f j) a = ((fun p => ∏ j : { x // x ∈ s }, p j) ∘ fun a j => f (↑j) a) a
[PROOFSTEP]
simp only [Function.comp_apply]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝² : IsMarkovKernel κ
ι : Type u_8
β : Type u_9
m : MeasurableSpace β
inst✝¹ : CommMonoid β
inst✝ : MeasurableMul₂ β
f : ι → Ω → β
hf_Indep : iIndepFun (fun x => m) f κ
hf_meas : ∀ (i : ι), Measurable (f i)
s : Finset ι
i : ι
hi : ¬i ∈ s
h_right : f i = (fun p => p { val := i, property := (_ : i ∈ {i}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := i, property := (_ : i ∈ {i}) }
a : Ω
⊢ Finset.prod s (fun j => f j) a = ∏ j : { x // x ∈ s }, f (↑j) a
[PROOFSTEP]
have : (∏ j : ↥s, f (↑j) a) = (∏ j : ↥s, f ↑j) a := by rw [Finset.prod_apply]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝² : IsMarkovKernel κ
ι : Type u_8
β : Type u_9
m : MeasurableSpace β
inst✝¹ : CommMonoid β
inst✝ : MeasurableMul₂ β
f : ι → Ω → β
hf_Indep : iIndepFun (fun x => m) f κ
hf_meas : ∀ (i : ι), Measurable (f i)
s : Finset ι
i : ι
hi : ¬i ∈ s
h_right : f i = (fun p => p { val := i, property := (_ : i ∈ {i}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := i, property := (_ : i ∈ {i}) }
a : Ω
⊢ ∏ j : { x // x ∈ s }, f (↑j) a = Finset.prod Finset.univ (fun j => f ↑j) a
[PROOFSTEP]
rw [Finset.prod_apply]
[GOAL]
case h
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝² : IsMarkovKernel κ
ι : Type u_8
β : Type u_9
m : MeasurableSpace β
inst✝¹ : CommMonoid β
inst✝ : MeasurableMul₂ β
f : ι → Ω → β
hf_Indep : iIndepFun (fun x => m) f κ
hf_meas : ∀ (i : ι), Measurable (f i)
s : Finset ι
i : ι
hi : ¬i ∈ s
h_right : f i = (fun p => p { val := i, property := (_ : i ∈ {i}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := i, property := (_ : i ∈ {i}) }
a : Ω
this : ∏ j : { x // x ∈ s }, f (↑j) a = Finset.prod Finset.univ (fun j => f ↑j) a
⊢ Finset.prod s (fun j => f j) a = ∏ j : { x // x ∈ s }, f (↑j) a
[PROOFSTEP]
rw [this, Finset.prod_coe_sort]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝² : IsMarkovKernel κ
ι : Type u_8
β : Type u_9
m : MeasurableSpace β
inst✝¹ : CommMonoid β
inst✝ : MeasurableMul₂ β
f : ι → Ω → β
hf_Indep : iIndepFun (fun x => m) f κ
hf_meas : ∀ (i : ι), Measurable (f i)
s : Finset ι
i : ι
hi : ¬i ∈ s
h_right : f i = (fun p => p { val := i, property := (_ : i ∈ {i}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := i, property := (_ : i ∈ {i}) }
h_left : ∏ j in s, f j = (fun p => ∏ j : { x // x ∈ s }, p j) ∘ fun a j => f (↑j) a
⊢ IndepFun (∏ j in s, f j) (f i) κ
[PROOFSTEP]
have h_meas_left : Measurable fun p : ∀ _j : s, β => ∏ j, p j :=
  Finset.univ.measurable_prod fun (j : ↥s) (_H : j ∈ Finset.univ) => measurable_pi_apply j
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝² : IsMarkovKernel κ
ι : Type u_8
β : Type u_9
m : MeasurableSpace β
inst✝¹ : CommMonoid β
inst✝ : MeasurableMul₂ β
f : ι → Ω → β
hf_Indep : iIndepFun (fun x => m) f κ
hf_meas : ∀ (i : ι), Measurable (f i)
s : Finset ι
i : ι
hi : ¬i ∈ s
h_right : f i = (fun p => p { val := i, property := (_ : i ∈ {i}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := i, property := (_ : i ∈ {i}) }
h_left : ∏ j in s, f j = (fun p => ∏ j : { x // x ∈ s }, p j) ∘ fun a j => f (↑j) a
h_meas_left : Measurable fun p => ∏ j : { x // x ∈ s }, p j
⊢ IndepFun (∏ j in s, f j) (f i) κ
[PROOFSTEP]
rw [h_left, h_right]
[GOAL]
α : Type u_1
Ω : Type u_2
ι✝ : Type u_3
β✝ : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f✝ : Ω → β✝
g : Ω → β'
inst✝² : IsMarkovKernel κ
ι : Type u_8
β : Type u_9
m : MeasurableSpace β
inst✝¹ : CommMonoid β
inst✝ : MeasurableMul₂ β
f : ι → Ω → β
hf_Indep : iIndepFun (fun x => m) f κ
hf_meas : ∀ (i : ι), Measurable (f i)
s : Finset ι
i : ι
hi : ¬i ∈ s
h_right : f i = (fun p => p { val := i, property := (_ : i ∈ {i}) }) ∘ fun a j => f (↑j) a
h_meas_right : Measurable fun p => p { val := i, property := (_ : i ∈ {i}) }
h_left : ∏ j in s, f j = (fun p => ∏ j : { x // x ∈ s }, p j) ∘ fun a j => f (↑j) a
h_meas_left : Measurable fun p => ∏ j : { x // x ∈ s }, p j
⊢ IndepFun ((fun p => ∏ j : { x // x ∈ s }, p j) ∘ fun a j => f (↑j) a)
    ((fun p => p { val := i, property := (_ : i ∈ {i}) }) ∘ fun a j => f (↑j) a) κ
[PROOFSTEP]
exact
  (hf_Indep.indepFun_finset s { i } (Finset.disjoint_singleton_left.mpr hi).symm hf_meas).comp h_meas_left h_meas_right
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
inst✝¹ : Zero β
inst✝ : One β
m : MeasurableSpace β
s : ι → Set Ω
hs : iIndepSet s κ
⊢ iIndepFun (fun _n => m) (fun n => Set.indicator (s n) fun _ω => 1) κ
[PROOFSTEP]
classical
rw [iIndepFun_iff_measure_inter_preimage_eq_mul]
rintro S π _hπ
simp_rw [Set.indicator_const_preimage_eq_union]
refine' @hs S (fun i => ite (1 ∈ π i) (s i) ∅ ∪ ite ((0 : β) ∈ π i) (s i)ᶜ ∅) fun i _hi => _
have hsi : MeasurableSet[generateFrom {s i}] (s i) := measurableSet_generateFrom (Set.mem_singleton _)
refine'
  MeasurableSet.union (MeasurableSet.ite' (fun _ => hsi) fun _ => _)
    (MeasurableSet.ite' (fun _ => hsi.compl) fun _ => _)
· exact @MeasurableSet.empty _ (generateFrom {s i})
· exact @MeasurableSet.empty _ (generateFrom {s i})
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
inst✝¹ : Zero β
inst✝ : One β
m : MeasurableSpace β
s : ι → Set Ω
hs : iIndepSet s κ
⊢ iIndepFun (fun _n => m) (fun n => Set.indicator (s n) fun _ω => 1) κ
[PROOFSTEP]
rw [iIndepFun_iff_measure_inter_preimage_eq_mul]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
inst✝¹ : Zero β
inst✝ : One β
m : MeasurableSpace β
s : ι → Set Ω
hs : iIndepSet s κ
⊢ ∀ (S : Finset ι) {sets : ι → Set β},
    (∀ (i : ι), i ∈ S → MeasurableSet (sets i)) →
      ∀ᵐ (a : α) ∂μ,
        ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), (Set.indicator (s i) fun _ω => 1) ⁻¹' sets i) =
          ∏ i in S, ↑↑(↑κ a) ((Set.indicator (s i) fun _ω => 1) ⁻¹' sets i)
[PROOFSTEP]
rintro S π _hπ
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
inst✝¹ : Zero β
inst✝ : One β
m : MeasurableSpace β
s : ι → Set Ω
hs : iIndepSet s κ
S : Finset ι
π : ι → Set β
_hπ : ∀ (i : ι), i ∈ S → MeasurableSet (π i)
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), (Set.indicator (s i) fun _ω => 1) ⁻¹' π i) =
      ∏ i in S, ↑↑(↑κ a) ((Set.indicator (s i) fun _ω => 1) ⁻¹' π i)
[PROOFSTEP]
simp_rw [Set.indicator_const_preimage_eq_union]
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
inst✝¹ : Zero β
inst✝ : One β
m : MeasurableSpace β
s : ι → Set Ω
hs : iIndepSet s κ
S : Finset ι
π : ι → Set β
_hπ : ∀ (i : ι), i ∈ S → MeasurableSet (π i)
⊢ ∀ᵐ (a : α) ∂μ,
    ↑↑(↑κ a) (⋂ (i : ι) (_ : i ∈ S), (if 1 ∈ π i then s i else ∅) ∪ if 0 ∈ π i then (s i)ᶜ else ∅) =
      ∏ x in S, ↑↑(↑κ a) ((if 1 ∈ π x then s x else ∅) ∪ if 0 ∈ π x then (s x)ᶜ else ∅)
[PROOFSTEP]
refine' @hs S (fun i => ite (1 ∈ π i) (s i) ∅ ∪ ite ((0 : β) ∈ π i) (s i)ᶜ ∅) fun i _hi => _
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
inst✝¹ : Zero β
inst✝ : One β
m : MeasurableSpace β
s : ι → Set Ω
hs : iIndepSet s κ
S : Finset ι
π : ι → Set β
_hπ : ∀ (i : ι), i ∈ S → MeasurableSet (π i)
i : ι
_hi : i ∈ S
⊢ (fun i => (if 1 ∈ π i then s i else ∅) ∪ if 0 ∈ π i then (s i)ᶜ else ∅) i ∈ (fun x => {s_1 | MeasurableSet s_1}) i
[PROOFSTEP]
have hsi : MeasurableSet[generateFrom {s i}] (s i) := measurableSet_generateFrom (Set.mem_singleton _)
[GOAL]
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
inst✝¹ : Zero β
inst✝ : One β
m : MeasurableSpace β
s : ι → Set Ω
hs : iIndepSet s κ
S : Finset ι
π : ι → Set β
_hπ : ∀ (i : ι), i ∈ S → MeasurableSet (π i)
i : ι
_hi : i ∈ S
hsi : MeasurableSet (s i)
⊢ (fun i => (if 1 ∈ π i then s i else ∅) ∪ if 0 ∈ π i then (s i)ᶜ else ∅) i ∈ (fun x => {s_1 | MeasurableSet s_1}) i
[PROOFSTEP]
refine'
  MeasurableSet.union (MeasurableSet.ite' (fun _ => hsi) fun _ => _)
    (MeasurableSet.ite' (fun _ => hsi.compl) fun _ => _)
[GOAL]
case refine'_1
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
inst✝¹ : Zero β
inst✝ : One β
m : MeasurableSpace β
s : ι → Set Ω
hs : iIndepSet s κ
S : Finset ι
π : ι → Set β
_hπ : ∀ (i : ι), i ∈ S → MeasurableSet (π i)
i : ι
_hi : i ∈ S
hsi : MeasurableSet (s i)
x✝ : ¬1 ∈ π i
⊢ MeasurableSet ∅
[PROOFSTEP]
exact @MeasurableSet.empty _ (generateFrom {s i})
[GOAL]
case refine'_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : { x // x ∈ kernel α Ω }
μ : Measure α
f : Ω → β
g : Ω → β'
inst✝¹ : Zero β
inst✝ : One β
m : MeasurableSpace β
s : ι → Set Ω
hs : iIndepSet s κ
S : Finset ι
π : ι → Set β
_hπ : ∀ (i : ι), i ∈ S → MeasurableSet (π i)
i : ι
_hi : i ∈ S
hsi : MeasurableSet (s i)
x✝ : ¬0 ∈ π i
⊢ MeasurableSet ∅
[PROOFSTEP]
exact @MeasurableSet.empty _ (generateFrom {s i})
