Theorem: HahnSeries.orderTop_add_orderTop_le_orderTop_mul
File: Mathlib/RingTheory/HahnSeries/Multiplication.lean

Proof steps:
state_before: Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝² : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝¹ : LinearOrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalNonAssocSemiring R
x y : HahnSeries Γ R
⊢ x.orderTop + y.orderTop ≤ (x * y).orderTop
state_after: case pos
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝² : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝¹ : LinearOrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalNonAssocSemiring R
x y : HahnSeries Γ R
hx : x = 0
⊢ x.orderTop + y.orderTop ≤ (x * y).orderTop

case neg
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝² : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝¹ : LinearOrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalNonAssocSemiring R
x y : HahnSeries Γ R
hx : ¬x = 0
⊢ x.orderTop + y.orderTop ≤ (x * y).orderTop
tactic: by_cases hx : x = 0
state_before: case neg
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝² : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝¹ : LinearOrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalNonAssocSemiring R
x y : HahnSeries Γ R
hx : ¬x = 0
⊢ x.orderTop + y.orderTop ≤ (x * y).orderTop
state_after: case pos
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝² : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝¹ : LinearOrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalNonAssocSemiring R
x y : HahnSeries Γ R
hx : ¬x = 0
hy : y = 0
⊢ x.orderTop + y.orderTop ≤ (x * y).orderTop

case neg
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝² : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝¹ : LinearOrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalNonAssocSemiring R
x y : HahnSeries Γ R
hx : ¬x = 0
hy : ¬y = 0
⊢ x.orderTop + y.orderTop ≤ (x * y).orderTop
tactic: by_cases hy : y = 0
state_before: case neg
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝² : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝¹ : LinearOrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalNonAssocSemiring R
x y : HahnSeries Γ R
hx : ¬x = 0
hy : ¬y = 0
⊢ x.orderTop + y.orderTop ≤ (x * y).orderTop
state_after: case pos
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝² : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝¹ : LinearOrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalNonAssocSemiring R
x y : HahnSeries Γ R
hx : ¬x = 0
hy : ¬y = 0
hxy : x * y = 0
⊢ x.orderTop + y.orderTop ≤ (x * y).orderTop

case neg
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝² : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝¹ : LinearOrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalNonAssocSemiring R
x y : HahnSeries Γ R
hx : ¬x = 0
hy : ¬y = 0
hxy : ¬x * y = 0
⊢ x.orderTop + y.orderTop ≤ (x * y).orderTop
tactic: by_cases hxy : x * y = 0
state_before: case neg
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝² : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝¹ : LinearOrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalNonAssocSemiring R
x y : HahnSeries Γ R
hx : ¬x = 0
hy : ¬y = 0
hxy : ¬x * y = 0
⊢ x.orderTop + y.orderTop ≤ (x * y).orderTop
state_after: case neg
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝² : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝¹ : LinearOrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalNonAssocSemiring R
x y : HahnSeries Γ R
hx : ¬x = 0
hy : ¬y = 0
hxy : ¬x * y = 0
⊢ ⋯.min ⋯ ≤ ⋯.min ⋯
tactic: rw [orderTop_of_ne hx, orderTop_of_ne hy, orderTop_of_ne hxy, ← WithTop.coe_add,
    WithTop.coe_le_coe, ← Set.IsWF.min_add]
state_before: case neg
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝² : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝¹ : LinearOrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalNonAssocSemiring R
x y : HahnSeries Γ R
hx : ¬x = 0
hy : ¬y = 0
hxy : ¬x * y = 0
⊢ ⋯.min ⋯ ≤ ⋯.min ⋯
state_after: no goals
tactic: exact Set.IsWF.min_le_min_of_subset support_mul_subset_add_support