Theorem: HahnSeries.order_ofForallLtEqZero
File: Mathlib/RingTheory/HahnSeries/Basic.lean

Proof steps:
state_before: Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
⊢ n ≤ (ofSuppBddBelow f ⋯).order
state_after: Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
⊢ n ≤ if h : ofSuppBddBelow f ⋯ = 0 then 0 else ⋯.min ⋯
tactic: dsimp only [order]
state_before: Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
⊢ n ≤ if h : ofSuppBddBelow f ⋯ = 0 then 0 else ⋯.min ⋯
state_after: case pos
Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
h : ofSuppBddBelow f ⋯ = 0
⊢ n ≤ if h : ofSuppBddBelow f ⋯ = 0 then 0 else ⋯.min ⋯

case neg
Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
h : ¬ofSuppBddBelow f ⋯ = 0
⊢ n ≤ if h : ofSuppBddBelow f ⋯ = 0 then 0 else ⋯.min ⋯
tactic: by_cases h : ofSuppBddBelow f (forallLTEqZero_supp_BddBelow f n hn) = 0
state_before: case pos
Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
h : ofSuppBddBelow f ⋯ = 0
⊢ n ≤ if h : ofSuppBddBelow f ⋯ = 0 then 0 else ⋯.min ⋯

case neg
Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
h : ¬ofSuppBddBelow f ⋯ = 0
⊢ n ≤ if h : ofSuppBddBelow f ⋯ = 0 then 0 else ⋯.min ⋯
state_after: case pos.refl
Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
n : Γ
hf : 0 ≠ 0
hn : ∀ m < n, 0 m = 0
⊢ n ≤ if h : ofSuppBddBelow 0 ⋯ = 0 then 0 else ⋯.min ⋯

case neg
Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
h : ¬ofSuppBddBelow f ⋯ = 0
⊢ n ≤ if h : ofSuppBddBelow f ⋯ = 0 then 0 else ⋯.min ⋯
tactic: cases h
state_before: case neg
Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
h : ¬ofSuppBddBelow f ⋯ = 0
⊢ n ≤ if h : ofSuppBddBelow f ⋯ = 0 then 0 else ⋯.min ⋯
state_after: case neg
Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
h : ¬ofSuppBddBelow f ⋯ = 0
⊢ n ≤ ⋯.min ⋯
tactic: simp_all only [dite_false]
state_before: case neg
Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
h : ¬ofSuppBddBelow f ⋯ = 0
⊢ n ≤ ⋯.min ⋯
state_after: case neg
Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
h : ¬ofSuppBddBelow f ⋯ = 0
⊢ ∀ b ∈ (ofSuppBddBelow f ⋯).support, n ≤ b
tactic: rw [Set.IsWF.le_min_iff]
state_before: case neg
Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
h : ¬ofSuppBddBelow f ⋯ = 0
⊢ ∀ b ∈ (ofSuppBddBelow f ⋯).support, n ≤ b
state_after: case neg
Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
h : ¬ofSuppBddBelow f ⋯ = 0
m : Γ
hm : m ∈ (ofSuppBddBelow f ⋯).support
⊢ n ≤ m
tactic: intro m hm
state_before: case neg
Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
h : ¬ofSuppBddBelow f ⋯ = 0
m : Γ
hm : m ∈ (ofSuppBddBelow f ⋯).support
⊢ n ≤ m
state_after: case neg
Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
h : ¬ofSuppBddBelow f ⋯ = 0
m : Γ
hm : ¬(ofSuppBddBelow f ⋯).coeff m = 0
⊢ n ≤ m
tactic: rw [HahnSeries.support, Function.mem_support, ne_eq] at hm
state_before: case neg
Γ : Type u_1
R : Type u_2
inst✝³ : Zero R
inst✝² : LinearOrder Γ
inst✝¹ : LocallyFiniteOrder Γ
inst✝ : Zero Γ
f : Γ → R
hf : f ≠ 0
n : Γ
hn : ∀ m < n, f m = 0
h : ¬ofSuppBddBelow f ⋯ = 0
m : Γ
hm : ¬(ofSuppBddBelow f ⋯).coeff m = 0
⊢ n ≤ m
state_after: no goals
tactic: exact not_lt.mp (mt (hn m) hm)