Theorem: ProbabilityTheory.iInf_rat_gt_defaultRatCDF
File: Mathlib/Probability/Kernel/Disintegration/MeasurableStieltjes.lean

tactic: simp only [defaultRatCDF]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
⊢ ⨅ r, defaultRatCDF ↑r = defaultRatCDF t
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
⊢ (⨅ r, if ↑r < 0 then 0 else 1) = if t < 0 then 0 else 1

tactic: have h_bdd : BddBelow (range fun r : ↥(Ioi t) ↦ ite ((r : ℚ) < 0) (0 : ℝ) 1) := by
  refine ⟨0, fun x hx ↦ ?_⟩
  obtain ⟨y, rfl⟩ := mem_range.mpr hx
  dsimp only
  split_ifs
  exacts [le_rfl, zero_le_one]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
⊢ (⨅ r, if ↑r < 0 then 0 else 1) = if t < 0 then 0 else 1
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
⊢ (⨅ r, if ↑r < 0 then 0 else 1) = if t < 0 then 0 else 1

tactic: split_ifs with h
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
⊢ (⨅ r, if ↑r < 0 then 0 else 1) = if t < 0 then 0 else 1
state_after: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
⊢ (⨅ r, if ↑r < 0 then 0 else 1) = 0

case neg
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : ¬t < 0
⊢ (⨅ r, if ↑r < 0 then 0 else 1) = 1

tactic: refine ⟨0, fun x hx ↦ ?_⟩
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
⊢ BddBelow (range fun r => if ↑r < 0 then 0 else 1)
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
x : ℝ
hx : x ∈ range fun r => if ↑r < 0 then 0 else 1
⊢ 0 ≤ x

tactic: obtain ⟨y, rfl⟩ := mem_range.mpr hx
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
x : ℝ
hx : x ∈ range fun r => if ↑r < 0 then 0 else 1
⊢ 0 ≤ x
state_after: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
y : ↑(Ioi t)
hx : (fun r => if ↑r < 0 then 0 else 1) y ∈ range fun r => if ↑r < 0 then 0 else 1
⊢ 0 ≤ (fun r => if ↑r < 0 then 0 else 1) y

tactic: dsimp only
state_before: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
y : ↑(Ioi t)
hx : (fun r => if ↑r < 0 then 0 else 1) y ∈ range fun r => if ↑r < 0 then 0 else 1
⊢ 0 ≤ (fun r => if ↑r < 0 then 0 else 1) y
state_after: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
y : ↑(Ioi t)
hx : (fun r => if ↑r < 0 then 0 else 1) y ∈ range fun r => if ↑r < 0 then 0 else 1
⊢ 0 ≤ if ↑y < 0 then 0 else 1

tactic: split_ifs
state_before: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
y : ↑(Ioi t)
hx : (fun r => if ↑r < 0 then 0 else 1) y ∈ range fun r => if ↑r < 0 then 0 else 1
⊢ 0 ≤ if ↑y < 0 then 0 else 1
state_after: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
y : ↑(Ioi t)
hx : (fun r => if ↑r < 0 then 0 else 1) y ∈ range fun r => if ↑r < 0 then 0 else 1
h✝ : ↑y < 0
⊢ 0 ≤ 0

case neg
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
y : ↑(Ioi t)
hx : (fun r => if ↑r < 0 then 0 else 1) y ∈ range fun r => if ↑r < 0 then 0 else 1
h✝ : ¬↑y < 0
⊢ 0 ≤ 1

tactic: exacts [le_rfl, zero_le_one]
state_before: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
y : ↑(Ioi t)
hx : (fun r => if ↑r < 0 then 0 else 1) y ∈ range fun r => if ↑r < 0 then 0 else 1
h✝ : ↑y < 0
⊢ 0 ≤ 0

case neg
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
y : ↑(Ioi t)
hx : (fun r => if ↑r < 0 then 0 else 1) y ∈ range fun r => if ↑r < 0 then 0 else 1
h✝ : ¬↑y < 0
⊢ 0 ≤ 1
state_after: no goals

tactic: refine le_antisymm ?_ (le_ciInf fun x ↦ ?_)
state_before: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
⊢ (⨅ r, if ↑r < 0 then 0 else 1) = 0
state_after: case pos.refine_1
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
⊢ (⨅ r, if ↑r < 0 then 0 else 1) ≤ 0

case pos.refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
x : ↑(Ioi t)
⊢ 0 ≤ if ↑x < 0 then 0 else 1

tactic: obtain ⟨q, htq, hq_neg⟩ : ∃ q, t < q ∧ q < 0 := ⟨t / 2, by linarith, by linarith⟩
state_before: case pos.refine_1
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
⊢ (⨅ r, if ↑r < 0 then 0 else 1) ≤ 0
state_after: case pos.refine_1.intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
q : ℚ
htq : t < q
hq_neg : q < 0
⊢ (⨅ r, if ↑r < 0 then 0 else 1) ≤ 0

tactic: refine (ciInf_le h_bdd ⟨q, htq⟩).trans ?_
state_before: case pos.refine_1.intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
q : ℚ
htq : t < q
hq_neg : q < 0
⊢ (⨅ r, if ↑r < 0 then 0 else 1) ≤ 0
state_after: case pos.refine_1.intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
q : ℚ
htq : t < q
hq_neg : q < 0
⊢ (if ↑⟨q, htq⟩ < 0 then 0 else 1) ≤ 0

tactic: rw [if_pos]
state_before: case pos.refine_1.intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
q : ℚ
htq : t < q
hq_neg : q < 0
⊢ (if ↑⟨q, htq⟩ < 0 then 0 else 1) ≤ 0
state_after: case pos.refine_1.intro.intro.hc
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
q : ℚ
htq : t < q
hq_neg : q < 0
⊢ ↑⟨q, htq⟩ < 0

tactic: rwa [Subtype.coe_mk]
state_before: case pos.refine_1.intro.intro.hc
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
q : ℚ
htq : t < q
hq_neg : q < 0
⊢ ↑⟨q, htq⟩ < 0
state_after: no goals

tactic: linarith
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
⊢ t < t / 2
state_after: no goals

tactic: linarith
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
⊢ t / 2 < 0
state_after: no goals

tactic: split_ifs
state_before: case pos.refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
x : ↑(Ioi t)
⊢ 0 ≤ if ↑x < 0 then 0 else 1
state_after: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
x : ↑(Ioi t)
h✝ : ↑x < 0
⊢ 0 ≤ 0

case neg
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
x : ↑(Ioi t)
h✝ : ¬↑x < 0
⊢ 0 ≤ 1

tactic: exacts [le_rfl, zero_le_one]
state_before: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
x : ↑(Ioi t)
h✝ : ↑x < 0
⊢ 0 ≤ 0

case neg
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : t < 0
x : ↑(Ioi t)
h✝ : ¬↑x < 0
⊢ 0 ≤ 1
state_after: no goals

tactic: refine le_antisymm ?_ ?_
state_before: case neg
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : ¬t < 0
⊢ (⨅ r, if ↑r < 0 then 0 else 1) = 1
state_after: case neg.refine_1
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : ¬t < 0
⊢ (⨅ r, if ↑r < 0 then 0 else 1) ≤ 1

case neg.refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : ¬t < 0
⊢ 1 ≤ ⨅ r, if ↑r < 0 then 0 else 1

tactic: refine (ciInf_le h_bdd ⟨t + 1, lt_add_one t⟩).trans ?_
state_before: case neg.refine_1
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : ¬t < 0
⊢ (⨅ r, if ↑r < 0 then 0 else 1) ≤ 1
state_after: case neg.refine_1
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : ¬t < 0
⊢ (if ↑⟨t + 1, ⋯⟩ < 0 then 0 else 1) ≤ 1

tactic: split_ifs
state_before: case neg.refine_1
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : ¬t < 0
⊢ (if ↑⟨t + 1, ⋯⟩ < 0 then 0 else 1) ≤ 1
state_after: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : ¬t < 0
h✝ : ↑⟨t + 1, ⋯⟩ < 0
⊢ 0 ≤ 1

case neg
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : ¬t < 0
h✝ : ¬↑⟨t + 1, ⋯⟩ < 0
⊢ 1 ≤ 1

tactic: exacts [zero_le_one, le_rfl]
state_before: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : ¬t < 0
h✝ : ↑⟨t + 1, ⋯⟩ < 0
⊢ 0 ≤ 1

case neg
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : ¬t < 0
h✝ : ¬↑⟨t + 1, ⋯⟩ < 0
⊢ 1 ≤ 1
state_after: no goals

tactic: refine le_ciInf fun x ↦ ?_
state_before: case neg.refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : ¬t < 0
⊢ 1 ≤ ⨅ r, if ↑r < 0 then 0 else 1
state_after: case neg.refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : ¬t < 0
x : ↑(Ioi t)
⊢ 1 ≤ if ↑x < 0 then 0 else 1

tactic: rw [if_neg]
state_before: case neg.refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : ¬t < 0
x : ↑(Ioi t)
⊢ 1 ≤ if ↑x < 0 then 0 else 1
state_after: case neg.refine_2.hnc
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : ¬t < 0
x : ↑(Ioi t)
⊢ ¬↑x < 0

tactic: rw [not_lt] at h ⊢
state_before: case neg.refine_2.hnc
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : ¬t < 0
x : ↑(Ioi t)
⊢ ¬↑x < 0
state_after: case neg.refine_2.hnc
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : 0 ≤ t
x : ↑(Ioi t)
⊢ 0 ≤ ↑x

tactic: exact h.trans (mem_Ioi.mp x.prop).le
state_before: case neg.refine_2.hnc
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
t : ℚ
h_bdd : BddBelow (range fun r => if ↑r < 0 then 0 else 1)
h : 0 ≤ t
x : ↑(Ioi t)
⊢ 0 ≤ ↑x
state_after: no goals