Theorem: ENNReal.mul_inv
File: Mathlib/Data/ENNReal/Inv.lean

tactic: induction' b with b
state_before: a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
a b : ℝ≥0∞
ha : a ≠ 0 ∨ b ≠ ⊤
hb : a ≠ ⊤ ∨ b ≠ 0
⊢ (a * b)⁻¹ = a⁻¹ * b⁻¹
state_after: case top
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
a : ℝ≥0∞
ha : a ≠ 0 ∨ ⊤ ≠ ⊤
hb : a ≠ ⊤ ∨ ⊤ ≠ 0
⊢ (a * ⊤)⁻¹ = a⁻¹ * ⊤⁻¹

case coe
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
a : ℝ≥0∞
b : ℝ≥0
ha : a ≠ 0 ∨ ↑b ≠ ⊤
hb : a ≠ ⊤ ∨ ↑b ≠ 0
⊢ (a * ↑b)⁻¹ = a⁻¹ * (↑b)⁻¹

tactic: induction' a with a
state_before: case coe
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
a : ℝ≥0∞
b : ℝ≥0
ha : a ≠ 0 ∨ ↑b ≠ ⊤
hb : a ≠ ⊤ ∨ ↑b ≠ 0
⊢ (a * ↑b)⁻¹ = a⁻¹ * (↑b)⁻¹
state_after: case coe.top
a b✝ c d : ℝ≥0∞
r p q b : ℝ≥0
ha : ⊤ ≠ 0 ∨ ↑b ≠ ⊤
hb : ⊤ ≠ ⊤ ∨ ↑b ≠ 0
⊢ (⊤ * ↑b)⁻¹ = ⊤⁻¹ * (↑b)⁻¹

case coe.coe
a✝ b✝ c d : ℝ≥0∞
r p q b a : ℝ≥0
ha : ↑a ≠ 0 ∨ ↑b ≠ ⊤
hb : ↑a ≠ ⊤ ∨ ↑b ≠ 0
⊢ (↑a * ↑b)⁻¹ = (↑a)⁻¹ * (↑b)⁻¹

tactic: by_cases h'a : a = 0
state_before: case coe.coe
a✝ b✝ c d : ℝ≥0∞
r p q b a : ℝ≥0
ha : ↑a ≠ 0 ∨ ↑b ≠ ⊤
hb : ↑a ≠ ⊤ ∨ ↑b ≠ 0
⊢ (↑a * ↑b)⁻¹ = (↑a)⁻¹ * (↑b)⁻¹
state_after: case pos
a✝ b✝ c d : ℝ≥0∞
r p q b a : ℝ≥0
ha : ↑a ≠ 0 ∨ ↑b ≠ ⊤
hb : ↑a ≠ ⊤ ∨ ↑b ≠ 0
h'a : a = 0
⊢ (↑a * ↑b)⁻¹ = (↑a)⁻¹ * (↑b)⁻¹

case neg
a✝ b✝ c d : ℝ≥0∞
r p q b a : ℝ≥0
ha : ↑a ≠ 0 ∨ ↑b ≠ ⊤
hb : ↑a ≠ ⊤ ∨ ↑b ≠ 0
h'a : ¬a = 0
⊢ (↑a * ↑b)⁻¹ = (↑a)⁻¹ * (↑b)⁻¹

tactic: by_cases h'b : b = 0
state_before: case neg
a✝ b✝ c d : ℝ≥0∞
r p q b a : ℝ≥0
ha : ↑a ≠ 0 ∨ ↑b ≠ ⊤
hb : ↑a ≠ ⊤ ∨ ↑b ≠ 0
h'a : ¬a = 0
⊢ (↑a * ↑b)⁻¹ = (↑a)⁻¹ * (↑b)⁻¹
state_after: case pos
a✝ b✝ c d : ℝ≥0∞
r p q b a : ℝ≥0
ha : ↑a ≠ 0 ∨ ↑b ≠ ⊤
hb : ↑a ≠ ⊤ ∨ ↑b ≠ 0
h'a : ¬a = 0
h'b : b = 0
⊢ (↑a * ↑b)⁻¹ = (↑a)⁻¹ * (↑b)⁻¹

case neg
a✝ b✝ c d : ℝ≥0∞
r p q b a : ℝ≥0
ha : ↑a ≠ 0 ∨ ↑b ≠ ⊤
hb : ↑a ≠ ⊤ ∨ ↑b ≠ 0
h'a : ¬a = 0
h'b : ¬b = 0
⊢ (↑a * ↑b)⁻¹ = (↑a)⁻¹ * (↑b)⁻¹

tactic: rw [← ENNReal.coe_mul, ← ENNReal.coe_inv, ← ENNReal.coe_inv h'a, ← ENNReal.coe_inv h'b, ←
  ENNReal.coe_mul, mul_inv_rev, mul_comm]
state_before: case neg
a✝ b✝ c d : ℝ≥0∞
r p q b a : ℝ≥0
ha : ↑a ≠ 0 ∨ ↑b ≠ ⊤
hb : ↑a ≠ ⊤ ∨ ↑b ≠ 0
h'a : ¬a = 0
h'b : ¬b = 0
⊢ (↑a * ↑b)⁻¹ = (↑a)⁻¹ * (↑b)⁻¹
state_after: case neg
a✝ b✝ c d : ℝ≥0∞
r p q b a : ℝ≥0
ha : ↑a ≠ 0 ∨ ↑b ≠ ⊤
hb : ↑a ≠ ⊤ ∨ ↑b ≠ 0
h'a : ¬a = 0
h'b : ¬b = 0
⊢ a * b ≠ 0

tactic: simp [h'a, h'b]
state_before: case neg
a✝ b✝ c d : ℝ≥0∞
r p q b a : ℝ≥0
ha : ↑a ≠ 0 ∨ ↑b ≠ ⊤
hb : ↑a ≠ ⊤ ∨ ↑b ≠ 0
h'a : ¬a = 0
h'b : ¬b = 0
⊢ a * b ≠ 0
state_after: no goals

tactic: replace ha : a ≠ 0 := ha.neg_resolve_right rfl
state_before: case top
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
a : ℝ≥0∞
ha : a ≠ 0 ∨ ⊤ ≠ ⊤
hb : a ≠ ⊤ ∨ ⊤ ≠ 0
⊢ (a * ⊤)⁻¹ = a⁻¹ * ⊤⁻¹
state_after: case top
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
a : ℝ≥0∞
hb : a ≠ ⊤ ∨ ⊤ ≠ 0
ha : a ≠ 0
⊢ (a * ⊤)⁻¹ = a⁻¹ * ⊤⁻¹

tactic: simp [ha]
state_before: case top
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
a : ℝ≥0∞
hb : a ≠ ⊤ ∨ ⊤ ≠ 0
ha : a ≠ 0
⊢ (a * ⊤)⁻¹ = a⁻¹ * ⊤⁻¹
state_after: no goals

tactic: replace hb : b ≠ 0 := coe_ne_zero.1 (hb.neg_resolve_left rfl)
state_before: case coe.top
a b✝ c d : ℝ≥0∞
r p q b : ℝ≥0
ha : ⊤ ≠ 0 ∨ ↑b ≠ ⊤
hb : ⊤ ≠ ⊤ ∨ ↑b ≠ 0
⊢ (⊤ * ↑b)⁻¹ = ⊤⁻¹ * (↑b)⁻¹
state_after: case coe.top
a b✝ c d : ℝ≥0∞
r p q b : ℝ≥0
ha : ⊤ ≠ 0 ∨ ↑b ≠ ⊤
hb : b ≠ 0
⊢ (⊤ * ↑b)⁻¹ = ⊤⁻¹ * (↑b)⁻¹

tactic: simp [hb]
state_before: case coe.top
a b✝ c d : ℝ≥0∞
r p q b : ℝ≥0
ha : ⊤ ≠ 0 ∨ ↑b ≠ ⊤
hb : b ≠ 0
⊢ (⊤ * ↑b)⁻¹ = ⊤⁻¹ * (↑b)⁻¹
state_after: no goals

tactic: simp only [h'a, top_mul, ENNReal.inv_zero, ENNReal.coe_ne_top, zero_mul, Ne,
  not_false_iff, ENNReal.coe_zero, ENNReal.inv_eq_zero]
state_before: case pos
a✝ b✝ c d : ℝ≥0∞
r p q b a : ℝ≥0
ha : ↑a ≠ 0 ∨ ↑b ≠ ⊤
hb : ↑a ≠ ⊤ ∨ ↑b ≠ 0
h'a : a = 0
⊢ (↑a * ↑b)⁻¹ = (↑a)⁻¹ * (↑b)⁻¹
state_after: no goals

tactic: simp only [h'b, ENNReal.inv_zero, ENNReal.coe_ne_top, mul_top, Ne, not_false_iff,
  mul_zero, ENNReal.coe_zero, ENNReal.inv_eq_zero]
state_before: case pos
a✝ b✝ c d : ℝ≥0∞
r p q b a : ℝ≥0
ha : ↑a ≠ 0 ∨ ↑b ≠ ⊤
hb : ↑a ≠ ⊤ ∨ ↑b ≠ 0
h'a : ¬a = 0
h'b : b = 0
⊢ (↑a * ↑b)⁻¹ = (↑a)⁻¹ * (↑b)⁻¹
state_after: no goals