Theorem: ProbabilityTheory.isRatCondKernelCDFAux_preCDF
File: Mathlib/Probability/Kernel/Disintegration/CondCdf.lean

tactic: filter_upwards [monotone_preCDF ρ, preCDF_le_one ρ] with a h1 h2
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
r r' : ℚ
hrr' : r ≤ r'
⊢ ∀ᵐ (c : α) ∂(kernel.const Unit ρ.fst) a, (preCDF ρ r (a, c).2).toReal ≤ (preCDF ρ r' (a, c).2).toReal
state_after: case h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a✝ : Unit
r r' : ℚ
hrr' : r ≤ r'
a : α
h1 : Monotone fun r => preCDF ρ r a
h2 : ∀ (r : ℚ), preCDF ρ r a ≤ 1
⊢ (preCDF ρ r a).toReal ≤ (preCDF ρ r' a).toReal

tactic: have h_ne_top : ∀ r, preCDF ρ r a ≠ ∞ := fun r ↦ ((h2 r).trans_lt ENNReal.one_lt_top).ne
state_before: case h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a✝ : Unit
r r' : ℚ
hrr' : r ≤ r'
a : α
h1 : Monotone fun r => preCDF ρ r a
h2 : ∀ (r : ℚ), preCDF ρ r a ≤ 1
⊢ (preCDF ρ r a).toReal ≤ (preCDF ρ r' a).toReal
state_after: case h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a✝ : Unit
r r' : ℚ
hrr' : r ≤ r'
a : α
h1 : Monotone fun r => preCDF ρ r a
h2 : ∀ (r : ℚ), preCDF ρ r a ≤ 1
h_ne_top : ∀ (r : ℚ), preCDF ρ r a ≠ ⊤
⊢ (preCDF ρ r a).toReal ≤ (preCDF ρ r' a).toReal

tactic: rw [ENNReal.toReal_le_toReal (h_ne_top _) (h_ne_top _)]
state_before: case h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a✝ : Unit
r r' : ℚ
hrr' : r ≤ r'
a : α
h1 : Monotone fun r => preCDF ρ r a
h2 : ∀ (r : ℚ), preCDF ρ r a ≤ 1
h_ne_top : ∀ (r : ℚ), preCDF ρ r a ≠ ⊤
⊢ (preCDF ρ r a).toReal ≤ (preCDF ρ r' a).toReal
state_after: case h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a✝ : Unit
r r' : ℚ
hrr' : r ≤ r'
a : α
h1 : Monotone fun r => preCDF ρ r a
h2 : ∀ (r : ℚ), preCDF ρ r a ≤ 1
h_ne_top : ∀ (r : ℚ), preCDF ρ r a ≠ ⊤
⊢ preCDF ρ r a ≤ preCDF ρ r' a

tactic: exact h1 hrr'
state_before: case h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a✝ : Unit
r r' : ℚ
hrr' : r ≤ r'
a : α
h1 : Monotone fun r => preCDF ρ r a
h2 : ∀ (r : ℚ), preCDF ρ r a ≤ 1
h_ne_top : ∀ (r : ℚ), preCDF ρ r a ≠ ⊤
⊢ preCDF ρ r a ≤ preCDF ρ r' a
state_after: no goals

tactic: simp
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
x✝ : Unit
q : ℚ
⊢ ∀ᵐ (c : α) ∂(kernel.const Unit ρ.fst) x✝, 0 ≤ (preCDF ρ q (x✝, c).2).toReal
state_after: no goals

tactic: simp only [kernel.const_apply, forall_const]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
q : ℚ
⊢ ∀ᵐ (c : α) ∂(kernel.const Unit ρ.fst) a, (preCDF ρ q (a, c).2).toReal ≤ 1
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
q : ℚ
⊢ ∀ᵐ (c : α) ∂ρ.fst, (preCDF ρ q c).toReal ≤ 1

tactic: filter_upwards [preCDF_le_one ρ] with a ha
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
q : ℚ
⊢ ∀ᵐ (c : α) ∂ρ.fst, (preCDF ρ q c).toReal ≤ 1
state_after: case h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a✝ : Unit
q : ℚ
a : α
ha : ∀ (r : ℚ), preCDF ρ r a ≤ 1
⊢ (preCDF ρ q a).toReal ≤ 1

tactic: refine ENNReal.toReal_le_of_le_ofReal zero_le_one ?_
state_before: case h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a✝ : Unit
q : ℚ
a : α
ha : ∀ (r : ℚ), preCDF ρ r a ≤ 1
⊢ (preCDF ρ q a).toReal ≤ 1
state_after: case h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a✝ : Unit
q : ℚ
a : α
ha : ∀ (r : ℚ), preCDF ρ r a ≤ 1
⊢ preCDF ρ q a ≤ ENNReal.ofReal 1

tactic: simp [ha]
state_before: case h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a✝ : Unit
q : ℚ
a : α
ha : ∀ (r : ℚ), preCDF ρ r a ≤ 1
⊢ preCDF ρ q a ≤ ENNReal.ofReal 1
state_after: no goals

tactic: simp_rw [kernel.const_apply, integral_preCDF_fst ρ]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : ℕ → ℚ
x✝ : Antitone s
hs_tendsto : Tendsto s atTop atBot
⊢ Tendsto (fun m => ∫ (c : α), (preCDF ρ (s m) (a, c).2).toReal ∂(kernel.const Unit ρ.fst) a) atTop (𝓝 0)
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : ℕ → ℚ
x✝ : Antitone s
hs_tendsto : Tendsto s atTop atBot
⊢ Tendsto (fun m => ((ρ.IicSnd ↑(s m)) univ).toReal) atTop (𝓝 0)

tactic: have h := ρ.tendsto_IicSnd_atBot MeasurableSet.univ
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : ℕ → ℚ
x✝ : Antitone s
hs_tendsto : Tendsto s atTop atBot
⊢ Tendsto (fun m => ((ρ.IicSnd ↑(s m)) univ).toReal) atTop (𝓝 0)
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : ℕ → ℚ
x✝ : Antitone s
hs_tendsto : Tendsto s atTop atBot
h : Tendsto (fun r => (ρ.IicSnd ↑r) univ) atBot (𝓝 0)
⊢ Tendsto (fun m => ((ρ.IicSnd ↑(s m)) univ).toReal) atTop (𝓝 0)

tactic: rw [← ENNReal.zero_toReal]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : ℕ → ℚ
x✝ : Antitone s
hs_tendsto : Tendsto s atTop atBot
h : Tendsto (fun r => (ρ.IicSnd ↑r) univ) atBot (𝓝 0)
⊢ Tendsto (fun m => ((ρ.IicSnd ↑(s m)) univ).toReal) atTop (𝓝 0)
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : ℕ → ℚ
x✝ : Antitone s
hs_tendsto : Tendsto s atTop atBot
h : Tendsto (fun r => (ρ.IicSnd ↑r) univ) atBot (𝓝 0)
⊢ Tendsto (fun m => ((ρ.IicSnd ↑(s m)) univ).toReal) atTop (𝓝 (ENNReal.toReal 0))

tactic: have h0 : Tendsto ENNReal.toReal (𝓝 0) (𝓝 0) :=
  ENNReal.continuousAt_toReal ENNReal.zero_ne_top
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : ℕ → ℚ
x✝ : Antitone s
hs_tendsto : Tendsto s atTop atBot
h : Tendsto (fun r => (ρ.IicSnd ↑r) univ) atBot (𝓝 0)
⊢ Tendsto (fun m => ((ρ.IicSnd ↑(s m)) univ).toReal) atTop (𝓝 (ENNReal.toReal 0))
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : ℕ → ℚ
x✝ : Antitone s
hs_tendsto : Tendsto s atTop atBot
h : Tendsto (fun r => (ρ.IicSnd ↑r) univ) atBot (𝓝 0)
h0 : Tendsto ENNReal.toReal (𝓝 0) (𝓝 0)
⊢ Tendsto (fun m => ((ρ.IicSnd ↑(s m)) univ).toReal) atTop (𝓝 (ENNReal.toReal 0))

tactic: exact h0.comp (h.comp hs_tendsto)
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : ℕ → ℚ
x✝ : Antitone s
hs_tendsto : Tendsto s atTop atBot
h : Tendsto (fun r => (ρ.IicSnd ↑r) univ) atBot (𝓝 0)
h0 : Tendsto ENNReal.toReal (𝓝 0) (𝓝 0)
⊢ Tendsto (fun m => ((ρ.IicSnd ↑(s m)) univ).toReal) atTop (𝓝 (ENNReal.toReal 0))
state_after: no goals

tactic: simp_rw [kernel.const_apply, integral_preCDF_fst ρ]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : ℕ → ℚ
x✝ : Monotone s
hs_tendsto : Tendsto s atTop atTop
⊢ Tendsto (fun m => ∫ (c : α), (preCDF ρ (s m) (a, c).2).toReal ∂(kernel.const Unit ρ.fst) a) atTop
    (𝓝 (((kernel.const Unit ρ.fst) a) univ).toReal)
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : ℕ → ℚ
x✝ : Monotone s
hs_tendsto : Tendsto s atTop atTop
⊢ Tendsto (fun m => ((ρ.IicSnd ↑(s m)) univ).toReal) atTop (𝓝 (ρ.fst univ).toReal)

tactic: have h := ρ.tendsto_IicSnd_atTop MeasurableSet.univ
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : ℕ → ℚ
x✝ : Monotone s
hs_tendsto : Tendsto s atTop atTop
⊢ Tendsto (fun m => ((ρ.IicSnd ↑(s m)) univ).toReal) atTop (𝓝 (ρ.fst univ).toReal)
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : ℕ → ℚ
x✝ : Monotone s
hs_tendsto : Tendsto s atTop atTop
h : Tendsto (fun r => (ρ.IicSnd ↑r) univ) atTop (𝓝 (ρ.fst univ))
⊢ Tendsto (fun m => ((ρ.IicSnd ↑(s m)) univ).toReal) atTop (𝓝 (ρ.fst univ).toReal)

tactic: have h0 : Tendsto ENNReal.toReal (𝓝 (ρ.fst univ)) (𝓝 (ρ.fst univ).toReal) :=
  ENNReal.continuousAt_toReal (measure_ne_top _ _)
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : ℕ → ℚ
x✝ : Monotone s
hs_tendsto : Tendsto s atTop atTop
h : Tendsto (fun r => (ρ.IicSnd ↑r) univ) atTop (𝓝 (ρ.fst univ))
⊢ Tendsto (fun m => ((ρ.IicSnd ↑(s m)) univ).toReal) atTop (𝓝 (ρ.fst univ).toReal)
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : ℕ → ℚ
x✝ : Monotone s
hs_tendsto : Tendsto s atTop atTop
h : Tendsto (fun r => (ρ.IicSnd ↑r) univ) atTop (𝓝 (ρ.fst univ))
h0 : Tendsto ENNReal.toReal (𝓝 (ρ.fst univ)) (𝓝 (ρ.fst univ).toReal)
⊢ Tendsto (fun m => ((ρ.IicSnd ↑(s m)) univ).toReal) atTop (𝓝 (ρ.fst univ).toReal)

tactic: exact h0.comp (h.comp hs_tendsto)
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : ℕ → ℚ
x✝ : Monotone s
hs_tendsto : Tendsto s atTop atTop
h : Tendsto (fun r => (ρ.IicSnd ↑r) univ) atTop (𝓝 (ρ.fst univ))
h0 : Tendsto ENNReal.toReal (𝓝 (ρ.fst univ)) (𝓝 (ρ.fst univ).toReal)
⊢ Tendsto (fun m => ((ρ.IicSnd ↑(s m)) univ).toReal) atTop (𝓝 (ρ.fst univ).toReal)
state_after: no goals

tactic: rw [kernel.const_apply, kernel.const_apply,
setIntegral_preCDF_fst _ _ hs, Measure.IicSnd_apply _ _ hs]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
inst✝ : IsFiniteMeasure ρ
a : Unit
s : Set α
hs : MeasurableSet s
q : ℚ
⊢ ∫ (c : α) in s, (preCDF ρ q (a, c).2).toReal ∂(kernel.const Unit ρ.fst) a =
    (((kernel.const Unit ρ) a) (s ×ˢ Iic ↑q)).toReal
state_after: no goals