Theorem: ENNReal.trichotomy₂
File: Mathlib/Data/Real/ENNReal.lean

tactic: rcases eq_or_lt_of_le (bot_le : 0 ≤ p) with ((rfl : 0 = p) | (hp : 0 < p))
state_before: α : Type ?u.829236
β : Type ?u.829239
a b c d : ℝ≥0∞
r p✝ q✝ : ℝ≥0
p q : ℝ≥0∞
hpq : p ≤ q
⊢ p = 0 ∧ q = 0 ∨
    p = 0 ∧ q = ⊤ ∨
      p = 0 ∧ 0 < ENNReal.toReal q ∨
        p = ⊤ ∧ q = ⊤ ∨
          0 < ENNReal.toReal p ∧ q = ⊤ ∨
            0 < ENNReal.toReal p ∧ 0 < ENNReal.toReal q ∧ ENNReal.toReal p ≤ ENNReal.toReal q

tactic: rcases eq_or_lt_of_le (le_top : q ≤ ∞) with (rfl | hq)
state_before: case inr
α : Type ?u.829236
β : Type ?u.829239
a b c d : ℝ≥0∞
r p✝ q✝ : ℝ≥0
p q : ℝ≥0∞
hpq : p ≤ q
hp : 0 < p
⊢ p = 0 ∧ q = 0 ∨
    p = 0 ∧ q = ⊤ ∨
      p = 0 ∧ 0 < ENNReal.toReal q ∨
        p = ⊤ ∧ q = ⊤ ∨
          0 < ENNReal.toReal p ∧ q = ⊤ ∨
            0 < ENNReal.toReal p ∧ 0 < ENNReal.toReal q ∧ ENNReal.toReal p ≤ ENNReal.toReal q

tactic: repeat' right
state_before: case inr.inr
α : Type ?u.829236
β : Type ?u.829239
a b c d : ℝ≥0∞
r p✝ q✝ : ℝ≥0
p q : ℝ≥0∞
hpq : p ≤ q
hp : 0 < p
hq : q < ⊤
⊢ p = 0 ∧ q = 0 ∨
    p = 0 ∧ q = ⊤ ∨
      p = 0 ∧ 0 < ENNReal.toReal q ∨
        p = ⊤ ∧ q = ⊤ ∨
          0 < ENNReal.toReal p ∧ q = ⊤ ∨
            0 < ENNReal.toReal p ∧ 0 < ENNReal.toReal q ∧ ENNReal.toReal p ≤ ENNReal.toReal q

tactic: have hq' : 0 < q := lt_of_lt_of_le hp hpq
state_before: case inr.inr.h.h.h.h.h
α : Type ?u.829236
β : Type ?u.829239
a b c d : ℝ≥0∞
r p✝ q✝ : ℝ≥0
p q : ℝ≥0∞
hpq : p ≤ q
hp : 0 < p
hq : q < ⊤
⊢ 0 < ENNReal.toReal p ∧ 0 < ENNReal.toReal q ∧ ENNReal.toReal p ≤ ENNReal.toReal q

tactic: have hp' : p < ∞ := lt_of_le_of_lt hpq hq
state_before: case inr.inr.h.h.h.h.h
α : Type ?u.829236
β : Type ?u.829239
a b c d : ℝ≥0∞
r p✝ q✝ : ℝ≥0
p q : ℝ≥0∞
hpq : p ≤ q
hp : 0 < p
hq : q < ⊤
hq' : 0 < q
⊢ 0 < ENNReal.toReal p ∧ 0 < ENNReal.toReal q ∧ ENNReal.toReal p ≤ ENNReal.toReal q

tactic: simp [ENNReal.toReal_le_toReal hp'.ne hq.ne, ENNReal.toReal_pos_iff, hpq, hp, hp', hq', hq]
state_before: case inr.inr.h.h.h.h.h
α : Type ?u.829236
β : Type ?u.829239
a b c d : ℝ≥0∞
r p✝ q✝ : ℝ≥0
p q : ℝ≥0∞
hpq : p ≤ q
hp : 0 < p
hq : q < ⊤
hq' : 0 < q
hp' : p < ⊤
⊢ 0 < ENNReal.toReal p ∧ 0 < ENNReal.toReal q ∧ ENNReal.toReal p ≤ ENNReal.toReal q

tactic: simpa using q.trichotomy
state_before: case inl
α : Type ?u.829236
β : Type ?u.829239
a b c d : ℝ≥0∞
r p q✝ : ℝ≥0
q : ℝ≥0∞
hpq : 0 ≤ q
⊢ 0 = 0 ∧ q = 0 ∨
    0 = 0 ∧ q = ⊤ ∨
      0 = 0 ∧ 0 < ENNReal.toReal q ∨
        0 = ⊤ ∧ q = ⊤ ∨
          0 < ENNReal.toReal 0 ∧ q = ⊤ ∨
            0 < ENNReal.toReal 0 ∧ 0 < ENNReal.toReal q ∧ ENNReal.toReal 0 ≤ ENNReal.toReal q

tactic: simpa using p.trichotomy
state_before: case inr.inl
α : Type ?u.829236
β : Type ?u.829239
a b c d : ℝ≥0∞
r p✝ q : ℝ≥0
p : ℝ≥0∞
hp : 0 < p
hpq : p ≤ ⊤
⊢ p = 0 ∧ ⊤ = 0 ∨
    p = 0 ∧ ⊤ = ⊤ ∨
      p = 0 ∧ 0 < ENNReal.toReal ⊤ ∨
        p = ⊤ ∧ ⊤ = ⊤ ∨
          0 < ENNReal.toReal p ∧ ⊤ = ⊤ ∨
            0 < ENNReal.toReal p ∧ 0 < ENNReal.toReal ⊤ ∧ ENNReal.toReal p ≤ ENNReal.toReal ⊤

tactic: right
state_before: case inr.inr.h.h.h.h.h
α : Type ?u.829236
β : Type ?u.829239
a b c d : ℝ≥0∞
r p✝ q✝ : ℝ≥0
p q : ℝ≥0∞
hpq : p ≤ q
hp : 0 < p
hq : q < ⊤
⊢ 0 < ENNReal.toReal p ∧ 0 < ENNReal.toReal q ∧ ENNReal.toReal p ≤ ENNReal.toReal q