Theorem: ProbabilityTheory.IsRatCondKernelCDFAux.tendsto_atBot_zero
File: Mathlib/Probability/Kernel/Disintegration/CdfToKernel.lean

tactic: suffices ∀ᵐ t ∂(ν a), Tendsto (fun q : ℚ ↦ f (a, t) (-q)) atTop (𝓝 0) by
  filter_upwards [this] with t ht
  have h_eq_neg : f (a, t) = fun q : ℚ ↦ f (a, t) (- -q) := by
    simp_rw [neg_neg]
  rw [h_eq_neg]
  convert ht.comp tendsto_neg_atBot_atTop
  simp
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
⊢ ∀ᵐ (t : β) ∂ν a, Tendsto (f (a, t)) atBot (𝓝 0)
state_after: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
⊢ ∀ᵐ (t : β) ∂ν a, Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)

tactic: suffices ∀ᵐ t ∂(ν a), Tendsto (fun (n : ℕ) ↦ f (a, t) (-n)) atTop (𝓝 0) by
  filter_upwards [this, hf.mono a] with t ht h_mono
  have h_anti : Antitone (fun q ↦ f (a, t) (-q)) := h_mono.comp_antitone monotone_id.neg
  exact (tendsto_iff_tendsto_subseq_of_antitone h_anti tendsto_natCast_atTop_atTop).mpr ht
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
⊢ ∀ᵐ (t : β) ∂ν a, Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
state_after: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
⊢ ∀ᵐ (t : β) ∂ν a, Tendsto (fun n => f (a, t) (-↑n)) atTop (𝓝 0)

tactic: exact hf.tendsto_zero_of_antitone _ _ Nat.mono_cast.neg
  (tendsto_neg_atBot_iff.mpr tendsto_natCast_atTop_atTop)
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
⊢ ∀ᵐ (t : β) ∂ν a, Tendsto (fun n => f (a, t) (-↑n)) atTop (𝓝 0)
state_after: no goals

tactic: filter_upwards [this] with t ht
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
this : ∀ᵐ (t : β) ∂ν a, Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
⊢ ∀ᵐ (t : β) ∂ν a, Tendsto (f (a, t)) atBot (𝓝 0)
state_after: case h
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
this : ∀ᵐ (t : β) ∂ν a, Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
t : β
ht : Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
⊢ Tendsto (f (a, t)) atBot (𝓝 0)

tactic: have h_eq_neg : f (a, t) = fun q : ℚ ↦ f (a, t) (- -q) := by
  simp_rw [neg_neg]
state_before: case h
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
this : ∀ᵐ (t : β) ∂ν a, Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
t : β
ht : Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
⊢ Tendsto (f (a, t)) atBot (𝓝 0)
state_after: case h
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
this : ∀ᵐ (t : β) ∂ν a, Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
t : β
ht : Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
h_eq_neg : f (a, t) = fun q => f (a, t) (- -q)
⊢ Tendsto (f (a, t)) atBot (𝓝 0)

tactic: rw [h_eq_neg]
state_before: case h
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
this : ∀ᵐ (t : β) ∂ν a, Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
t : β
ht : Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
h_eq_neg : f (a, t) = fun q => f (a, t) (- -q)
⊢ Tendsto (f (a, t)) atBot (𝓝 0)
state_after: case h
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
this : ∀ᵐ (t : β) ∂ν a, Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
t : β
ht : Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
h_eq_neg : f (a, t) = fun q => f (a, t) (- -q)
⊢ Tendsto (fun q => f (a, t) (- -q)) atBot (𝓝 0)

tactic: convert ht.comp tendsto_neg_atBot_atTop
state_before: case h
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
this : ∀ᵐ (t : β) ∂ν a, Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
t : β
ht : Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
h_eq_neg : f (a, t) = fun q => f (a, t) (- -q)
⊢ Tendsto (fun q => f (a, t) (- -q)) atBot (𝓝 0)
state_after: case h.e'_3.h.h.e'_1
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
this : ∀ᵐ (t : β) ∂ν a, Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
t : β
ht : Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
h_eq_neg : f (a, t) = fun q => f (a, t) (- -q)
x✝ : ℚ
⊢ - -x✝ = x✝

tactic: simp
state_before: case h.e'_3.h.h.e'_1
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
this : ∀ᵐ (t : β) ∂ν a, Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
t : β
ht : Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
h_eq_neg : f (a, t) = fun q => f (a, t) (- -q)
x✝ : ℚ
⊢ - -x✝ = x✝
state_after: no goals

tactic: simp_rw [neg_neg]
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
this : ∀ᵐ (t : β) ∂ν a, Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
t : β
ht : Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
⊢ f (a, t) = fun q => f (a, t) (- -q)
state_after: no goals

tactic: filter_upwards [this, hf.mono a] with t ht h_mono
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
this : ∀ᵐ (t : β) ∂ν a, Tendsto (fun n => f (a, t) (-↑n)) atTop (𝓝 0)
⊢ ∀ᵐ (t : β) ∂ν a, Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
state_after: case h
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
this : ∀ᵐ (t : β) ∂ν a, Tendsto (fun n => f (a, t) (-↑n)) atTop (𝓝 0)
t : β
ht : Tendsto (fun n => f (a, t) (-↑n)) atTop (𝓝 0)
h_mono : Monotone (f (a, t))
⊢ Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)

tactic: have h_anti : Antitone (fun q ↦ f (a, t) (-q)) := h_mono.comp_antitone monotone_id.neg
state_before: case h
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
this : ∀ᵐ (t : β) ∂ν a, Tendsto (fun n => f (a, t) (-↑n)) atTop (𝓝 0)
t : β
ht : Tendsto (fun n => f (a, t) (-↑n)) atTop (𝓝 0)
h_mono : Monotone (f (a, t))
⊢ Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
state_after: case h
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
this : ∀ᵐ (t : β) ∂ν a, Tendsto (fun n => f (a, t) (-↑n)) atTop (𝓝 0)
t : β
ht : Tendsto (fun n => f (a, t) (-↑n)) atTop (𝓝 0)
h_mono : Monotone (f (a, t))
h_anti : Antitone fun q => f (a, t) (-q)
⊢ Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)

tactic: exact (tendsto_iff_tendsto_subseq_of_antitone h_anti tendsto_natCast_atTop_atTop).mpr ht
state_before: case h
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
inst✝ : IsFiniteKernel ν
a : α
this : ∀ᵐ (t : β) ∂ν a, Tendsto (fun n => f (a, t) (-↑n)) atTop (𝓝 0)
t : β
ht : Tendsto (fun n => f (a, t) (-↑n)) atTop (𝓝 0)
h_mono : Monotone (f (a, t))
h_anti : Antitone fun q => f (a, t) (-q)
⊢ Tendsto (fun q => f (a, t) (-q)) atTop (𝓝 0)
state_after: no goals