Theorem: WellFounded.eq_strictMono_iff_eq_range_aux
File: Mathlib/Order/WellFounded.lean

tactic: obtain ⟨c, hc⟩ : g b ∈ Set.range f := by
  rw [hfg]
  exact Set.mem_range_self b
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
b : β
H : ∀ a < b, f a = g a
⊢ f b ≤ g b
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
b : β
H : ∀ a < b, f a = g a
c : β
hc : f c = g b
⊢ f b ≤ g b

tactic: cases' lt_or_le c b with hcb hbc
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
b : β
H : ∀ a < b, f a = g a
c : β
hc : f c = g b
⊢ f b ≤ g b
state_after: case intro.inl
α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
b : β
H : ∀ a < b, f a = g a
c : β
hc : f c = g b
hcb : c < b
⊢ f b ≤ g b

case intro.inr
α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
b : β
H : ∀ a < b, f a = g a
c : β
hc : f c = g b
hbc : b ≤ c
⊢ f b ≤ g b

tactic: rw [hfg]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
b : β
H : ∀ a < b, f a = g a
⊢ g b ∈ range f
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
b : β
H : ∀ a < b, f a = g a
⊢ g b ∈ range g

tactic: exact Set.mem_range_self b
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
b : β
H : ∀ a < b, f a = g a
⊢ g b ∈ range g
state_after: no goals

tactic: rw [H c hcb] at hc
state_before: case intro.inl
α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
b : β
H : ∀ a < b, f a = g a
c : β
hc : f c = g b
hcb : c < b
⊢ f b ≤ g b
state_after: case intro.inl
α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
b : β
H : ∀ a < b, f a = g a
c : β
hc : g c = g b
hcb : c < b
⊢ f b ≤ g b

tactic: rw [hg.injective hc] at hcb
state_before: case intro.inl
α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
b : β
H : ∀ a < b, f a = g a
c : β
hc : g c = g b
hcb : c < b
⊢ f b ≤ g b
state_after: case intro.inl
α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
b : β
H : ∀ a < b, f a = g a
c : β
hc : g c = g b
hcb : b < b
⊢ f b ≤ g b

tactic: exact hcb.false.elim
state_before: case intro.inl
α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
b : β
H : ∀ a < b, f a = g a
c : β
hc : g c = g b
hcb : b < b
⊢ f b ≤ g b
state_after: no goals

tactic: rw [← hc]
state_before: case intro.inr
α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
b : β
H : ∀ a < b, f a = g a
c : β
hc : f c = g b
hbc : b ≤ c
⊢ f b ≤ g b
state_after: case intro.inr
α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
b : β
H : ∀ a < b, f a = g a
c : β
hc : f c = g b
hbc : b ≤ c
⊢ f b ≤ f c

tactic: exact hf.monotone hbc
state_before: case intro.inr
α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
b : β
H : ∀ a < b, f a = g a
c : β
hc : f c = g b
hbc : b ≤ c
⊢ f b ≤ f c
state_after: no goals