Theorem: ProbabilityTheory.condIndepSets_iff
File: Mathlib/Probability/Independence/Conditional.lean

tactic: simp only [CondIndepSets, kernel.IndepSets]
state_before: Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
⊢ CondIndepSets m' hm' s1 s2 μ ↔
    ∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          μ[(t1 ∩ t2).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[t1.indicator fun ω => 1|m'] * μ[t2.indicator fun ω => 1|m']
state_after: Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
⊢ (∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          ∀ᵐ (a : Ω) ∂μ.trim hm',
            ((condexpKernel μ m') a) (t1 ∩ t2) = ((condexpKernel μ m') a) t1 * ((condexpKernel μ m') a) t2) ↔
    ∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          μ[(t1 ∩ t2).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[t1.indicator fun ω => 1|m'] * μ[t2.indicator fun ω => 1|m']

tactic: have hs1_eq : ∀ s ∈ s1, (fun ω ↦ ENNReal.toReal (condexpKernel μ m' ω s)) =ᵐ[μ] μ⟦s | m'⟧ :=
  fun s hs ↦ condexpKernel_ae_eq_condexp hm' (hs1 s hs)
state_before: Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
⊢ (∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          ∀ᵐ (a : Ω) ∂μ.trim hm',
            ((condexpKernel μ m') a) (t1 ∩ t2) = ((condexpKernel μ m') a) t1 * ((condexpKernel μ m') a) t2) ↔
    ∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          μ[(t1 ∩ t2).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[t1.indicator fun ω => 1|m'] * μ[t2.indicator fun ω => 1|m']
state_after: Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
⊢ (∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          ∀ᵐ (a : Ω) ∂μ.trim hm',
            ((condexpKernel μ m') a) (t1 ∩ t2) = ((condexpKernel μ m') a) t1 * ((condexpKernel μ m') a) t2) ↔
    ∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          μ[(t1 ∩ t2).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[t1.indicator fun ω => 1|m'] * μ[t2.indicator fun ω => 1|m']

tactic: have hs2_eq : ∀ s ∈ s2, (fun ω ↦ ENNReal.toReal (condexpKernel μ m' ω s)) =ᵐ[μ] μ⟦s | m'⟧ :=
  fun s hs ↦ condexpKernel_ae_eq_condexp hm' (hs2 s hs)
state_before: Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
⊢ (∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          ∀ᵐ (a : Ω) ∂μ.trim hm',
            ((condexpKernel μ m') a) (t1 ∩ t2) = ((condexpKernel μ m') a) t1 * ((condexpKernel μ m') a) t2) ↔
    ∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          μ[(t1 ∩ t2).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[t1.indicator fun ω => 1|m'] * μ[t2.indicator fun ω => 1|m']
state_after: Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
⊢ (∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          ∀ᵐ (a : Ω) ∂μ.trim hm',
            ((condexpKernel μ m') a) (t1 ∩ t2) = ((condexpKernel μ m') a) t1 * ((condexpKernel μ m') a) t2) ↔
    ∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          μ[(t1 ∩ t2).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[t1.indicator fun ω => 1|m'] * μ[t2.indicator fun ω => 1|m']

tactic: have hs12_eq : ∀ s ∈ s1, ∀ t ∈ s2, (fun ω ↦ ENNReal.toReal (condexpKernel μ m' ω (s ∩ t)))
    =ᵐ[μ] μ⟦s ∩ t | m'⟧ :=
  fun s hs t ht ↦ condexpKernel_ae_eq_condexp hm' ((hs1 s hs).inter ((hs2 t ht)))
state_before: Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
⊢ (∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          ∀ᵐ (a : Ω) ∂μ.trim hm',
            ((condexpKernel μ m') a) (t1 ∩ t2) = ((condexpKernel μ m') a) t1 * ((condexpKernel μ m') a) t2) ↔
    ∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          μ[(t1 ∩ t2).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[t1.indicator fun ω => 1|m'] * μ[t2.indicator fun ω => 1|m']
state_after: Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
⊢ (∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          ∀ᵐ (a : Ω) ∂μ.trim hm',
            ((condexpKernel μ m') a) (t1 ∩ t2) = ((condexpKernel μ m') a) t1 * ((condexpKernel μ m') a) t2) ↔
    ∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          μ[(t1 ∩ t2).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[t1.indicator fun ω => 1|m'] * μ[t2.indicator fun ω => 1|m']

tactic: refine ⟨fun h s t hs ht ↦ ?_, fun h s t hs ht ↦ ?_⟩ <;> specialize h s t hs ht
state_before: Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
⊢ (∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          ∀ᵐ (a : Ω) ∂μ.trim hm',
            ((condexpKernel μ m') a) (t1 ∩ t2) = ((condexpKernel μ m') a) t1 * ((condexpKernel μ m') a) t2) ↔
    ∀ (t1 t2 : Set Ω),
      t1 ∈ s1 →
        t2 ∈ s2 →
          μ[(t1 ∩ t2).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[t1.indicator fun ω => 1|m'] * μ[t2.indicator fun ω => 1|m']
state_after: case refine_1
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : ∀ᵐ (a : Ω) ∂μ.trim hm', ((condexpKernel μ m') a) (s ∩ t) = ((condexpKernel μ m') a) s * ((condexpKernel μ m') a) t
⊢ μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']

case refine_2
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
⊢ ∀ᵐ (a : Ω) ∂μ.trim hm', ((condexpKernel μ m') a) (s ∩ t) = ((condexpKernel μ m') a) s * ((condexpKernel μ m') a) t

tactic: have h' := ae_eq_of_ae_eq_trim h
state_before: case refine_1
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : ∀ᵐ (a : Ω) ∂μ.trim hm', ((condexpKernel μ m') a) (s ∩ t) = ((condexpKernel μ m') a) s * ((condexpKernel μ m') a) t
⊢ μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
state_after: case refine_1
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : ∀ᵐ (a : Ω) ∂μ.trim hm', ((condexpKernel μ m') a) (s ∩ t) = ((condexpKernel μ m') a) s * ((condexpKernel μ m') a) t
h' :
  (fun x => ((condexpKernel μ m') x) (s ∩ t)) =ᶠ[ae μ] fun x => ((condexpKernel μ m') x) s * ((condexpKernel μ m') x) t
⊢ μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']

tactic: filter_upwards [hs1_eq s hs, hs2_eq t ht, hs12_eq s hs t ht, h'] with ω hs_eq ht_eq hst_eq h'
state_before: case refine_1
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : ∀ᵐ (a : Ω) ∂μ.trim hm', ((condexpKernel μ m') a) (s ∩ t) = ((condexpKernel μ m') a) s * ((condexpKernel μ m') a) t
h' :
  (fun x => ((condexpKernel μ m') x) (s ∩ t)) =ᶠ[ae μ] fun x => ((condexpKernel μ m') x) s * ((condexpKernel μ m') x) t
⊢ μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
state_after: case h
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : ∀ᵐ (a : Ω) ∂μ.trim hm', ((condexpKernel μ m') a) (s ∩ t) = ((condexpKernel μ m') a) s * ((condexpKernel μ m') a) t
h'✝ :
  (fun x => ((condexpKernel μ m') x) (s ∩ t)) =ᶠ[ae μ] fun x => ((condexpKernel μ m') x) s * ((condexpKernel μ m') x) t
ω : Ω
hs_eq : (((condexpKernel μ m') ω) s).toReal = (μ[s.indicator fun ω => 1|m']) ω
ht_eq : (((condexpKernel μ m') ω) t).toReal = (μ[t.indicator fun ω => 1|m']) ω
hst_eq : (((condexpKernel μ m') ω) (s ∩ t)).toReal = (μ[(s ∩ t).indicator fun ω => 1|m']) ω
h' : ((condexpKernel μ m') ω) (s ∩ t) = ((condexpKernel μ m') ω) s * ((condexpKernel μ m') ω) t
⊢ (μ[(s ∩ t).indicator fun ω => 1|m']) ω = (μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']) ω

tactic: rw [← hst_eq, Pi.mul_apply, ← hs_eq, ← ht_eq, h', ENNReal.toReal_mul]
state_before: case h
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : ∀ᵐ (a : Ω) ∂μ.trim hm', ((condexpKernel μ m') a) (s ∩ t) = ((condexpKernel μ m') a) s * ((condexpKernel μ m') a) t
h'✝ :
  (fun x => ((condexpKernel μ m') x) (s ∩ t)) =ᶠ[ae μ] fun x => ((condexpKernel μ m') x) s * ((condexpKernel μ m') x) t
ω : Ω
hs_eq : (((condexpKernel μ m') ω) s).toReal = (μ[s.indicator fun ω => 1|m']) ω
ht_eq : (((condexpKernel μ m') ω) t).toReal = (μ[t.indicator fun ω => 1|m']) ω
hst_eq : (((condexpKernel μ m') ω) (s ∩ t)).toReal = (μ[(s ∩ t).indicator fun ω => 1|m']) ω
h' : ((condexpKernel μ m') ω) (s ∩ t) = ((condexpKernel μ m') ω) s * ((condexpKernel μ m') ω) t
⊢ (μ[(s ∩ t).indicator fun ω => 1|m']) ω = (μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']) ω
state_after: no goals

tactic: refine (ae_eq_trim_iff hm' ?_ ?_).mpr ?_
state_before: case refine_2
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
⊢ ∀ᵐ (a : Ω) ∂μ.trim hm', ((condexpKernel μ m') a) (s ∩ t) = ((condexpKernel μ m') a) s * ((condexpKernel μ m') a) t
state_after: case refine_2.refine_1
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
⊢ StronglyMeasurable fun a => ((condexpKernel μ m') a) (s ∩ t)

case refine_2.refine_2
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
⊢ StronglyMeasurable fun a => ((condexpKernel μ m') a) s * ((condexpKernel μ m') a) t

case refine_2.refine_3
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
⊢ (fun a => ((condexpKernel μ m') a) (s ∩ t)) =ᶠ[ae μ] fun a => ((condexpKernel μ m') a) s * ((condexpKernel μ m') a) t

tactic: filter_upwards [hs1_eq s hs, hs2_eq t ht, hs12_eq s hs t ht, h] with ω hs_eq ht_eq hst_eq h
state_before: case refine_2.refine_3
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
⊢ (fun a => ((condexpKernel μ m') a) (s ∩ t)) =ᶠ[ae μ] fun a => ((condexpKernel μ m') a) s * ((condexpKernel μ m') a) t
state_after: case h
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h✝ : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
ω : Ω
hs_eq : (((condexpKernel μ m') ω) s).toReal = (μ[s.indicator fun ω => 1|m']) ω
ht_eq : (((condexpKernel μ m') ω) t).toReal = (μ[t.indicator fun ω => 1|m']) ω
hst_eq : (((condexpKernel μ m') ω) (s ∩ t)).toReal = (μ[(s ∩ t).indicator fun ω => 1|m']) ω
h : (μ[(s ∩ t).indicator fun ω => 1|m']) ω = (μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']) ω
⊢ ((condexpKernel μ m') ω) (s ∩ t) = ((condexpKernel μ m') ω) s * ((condexpKernel μ m') ω) t

tactic: have h_ne_top : condexpKernel μ m' ω (s ∩ t) ≠ ∞ := measure_ne_top (condexpKernel μ m' ω) _
state_before: case h
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h✝ : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
ω : Ω
hs_eq : (((condexpKernel μ m') ω) s).toReal = (μ[s.indicator fun ω => 1|m']) ω
ht_eq : (((condexpKernel μ m') ω) t).toReal = (μ[t.indicator fun ω => 1|m']) ω
hst_eq : (((condexpKernel μ m') ω) (s ∩ t)).toReal = (μ[(s ∩ t).indicator fun ω => 1|m']) ω
h : (μ[(s ∩ t).indicator fun ω => 1|m']) ω = (μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']) ω
⊢ ((condexpKernel μ m') ω) (s ∩ t) = ((condexpKernel μ m') ω) s * ((condexpKernel μ m') ω) t
state_after: case h
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h✝ : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
ω : Ω
hs_eq : (((condexpKernel μ m') ω) s).toReal = (μ[s.indicator fun ω => 1|m']) ω
ht_eq : (((condexpKernel μ m') ω) t).toReal = (μ[t.indicator fun ω => 1|m']) ω
hst_eq : (((condexpKernel μ m') ω) (s ∩ t)).toReal = (μ[(s ∩ t).indicator fun ω => 1|m']) ω
h : (μ[(s ∩ t).indicator fun ω => 1|m']) ω = (μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']) ω
h_ne_top : ((condexpKernel μ m') ω) (s ∩ t) ≠ ⊤
⊢ ((condexpKernel μ m') ω) (s ∩ t) = ((condexpKernel μ m') ω) s * ((condexpKernel μ m') ω) t

tactic: rw [← ENNReal.ofReal_toReal h_ne_top, hst_eq, h, Pi.mul_apply, ← hs_eq, ← ht_eq,
  ← ENNReal.toReal_mul, ENNReal.ofReal_toReal]
state_before: case h
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h✝ : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
ω : Ω
hs_eq : (((condexpKernel μ m') ω) s).toReal = (μ[s.indicator fun ω => 1|m']) ω
ht_eq : (((condexpKernel μ m') ω) t).toReal = (μ[t.indicator fun ω => 1|m']) ω
hst_eq : (((condexpKernel μ m') ω) (s ∩ t)).toReal = (μ[(s ∩ t).indicator fun ω => 1|m']) ω
h : (μ[(s ∩ t).indicator fun ω => 1|m']) ω = (μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']) ω
h_ne_top : ((condexpKernel μ m') ω) (s ∩ t) ≠ ⊤
⊢ ((condexpKernel μ m') ω) (s ∩ t) = ((condexpKernel μ m') ω) s * ((condexpKernel μ m') ω) t
state_after: case h
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h✝ : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
ω : Ω
hs_eq : (((condexpKernel μ m') ω) s).toReal = (μ[s.indicator fun ω => 1|m']) ω
ht_eq : (((condexpKernel μ m') ω) t).toReal = (μ[t.indicator fun ω => 1|m']) ω
hst_eq : (((condexpKernel μ m') ω) (s ∩ t)).toReal = (μ[(s ∩ t).indicator fun ω => 1|m']) ω
h : (μ[(s ∩ t).indicator fun ω => 1|m']) ω = (μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']) ω
h_ne_top : ((condexpKernel μ m') ω) (s ∩ t) ≠ ⊤
⊢ ((condexpKernel μ m') ω) s * ((condexpKernel μ m') ω) t ≠ ⊤

tactic: exact ENNReal.mul_ne_top (measure_ne_top (condexpKernel μ m' ω) s)
  (measure_ne_top (condexpKernel μ m' ω) t)
state_before: case h
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h✝ : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
ω : Ω
hs_eq : (((condexpKernel μ m') ω) s).toReal = (μ[s.indicator fun ω => 1|m']) ω
ht_eq : (((condexpKernel μ m') ω) t).toReal = (μ[t.indicator fun ω => 1|m']) ω
hst_eq : (((condexpKernel μ m') ω) (s ∩ t)).toReal = (μ[(s ∩ t).indicator fun ω => 1|m']) ω
h : (μ[(s ∩ t).indicator fun ω => 1|m']) ω = (μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']) ω
h_ne_top : ((condexpKernel μ m') ω) (s ∩ t) ≠ ⊤
⊢ ((condexpKernel μ m') ω) s * ((condexpKernel μ m') ω) t ≠ ⊤
state_after: no goals

tactic: exact stronglyMeasurable_condexpKernel ((hs1 s hs).inter ((hs2 t ht)))
state_before: case refine_2.refine_1
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
⊢ StronglyMeasurable fun a => ((condexpKernel μ m') a) (s ∩ t)
state_after: no goals

tactic: refine Measurable.stronglyMeasurable (Measurable.mul ?_ ?_)
state_before: case refine_2.refine_2
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
⊢ StronglyMeasurable fun a => ((condexpKernel μ m') a) s * ((condexpKernel μ m') a) t
state_after: case refine_2.refine_2.refine_1
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
⊢ Measurable fun a => ((condexpKernel μ m') a) s

case refine_2.refine_2.refine_2
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
⊢ Measurable fun a => ((condexpKernel μ m') a) t

tactic: exact measurable_condexpKernel (hs1 s hs)
state_before: case refine_2.refine_2.refine_1
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
⊢ Measurable fun a => ((condexpKernel μ m') a) s
state_after: no goals

tactic: exact measurable_condexpKernel (hs2 t ht)
state_before: case refine_2.refine_2.refine_2
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s1 s2 : Set (Set Ω)
hs1 : ∀ s ∈ s1, MeasurableSet s
hs2 : ∀ s ∈ s2, MeasurableSet s
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
hs1_eq : ∀ s ∈ s1, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs2_eq : ∀ s ∈ s2, (fun ω => (((condexpKernel μ m') ω) s).toReal) =ᶠ[ae μ] μ[s.indicator fun ω => 1|m']
hs12_eq :
  ∀ s ∈ s1, ∀ t ∈ s2, (fun ω => (((condexpKernel μ m') ω) (s ∩ t)).toReal) =ᶠ[ae μ] μ[(s ∩ t).indicator fun ω => 1|m']
s t : Set Ω
hs : s ∈ s1
ht : t ∈ s2
h : μ[(s ∩ t).indicator fun ω => 1|m'] =ᶠ[ae μ] μ[s.indicator fun ω => 1|m'] * μ[t.indicator fun ω => 1|m']
⊢ Measurable fun a => ((condexpKernel μ m') a) t
state_after: no goals