Theorem: transGen_covBy_of_lt
File: Mathlib/Order/Interval/Finset/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
hxy : x < y
⊢ TransGen (fun x x_1 => x ⋖ x_1) x y
state_after: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
hxy : x < y
h_non : (Ico x y).Nonempty
⊢ TransGen (fun x x_1 => x ⋖ x_1) x y
tactic: have h_non : (Ico x y).Nonempty := ⟨x, mem_Ico.mpr ⟨le_rfl, hxy⟩⟩
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
hxy : x < y
h_non : (Ico x y).Nonempty
⊢ TransGen (fun x x_1 => x ⋖ x_1) x y
state_after: case intro.intro
ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
hxy : x < y
h_non : (Ico x y).Nonempty
z : α
z_mem : z ∈ Ico x y
hz : ∀ x_1 ∈ Ico x y, ¬z < x_1
⊢ TransGen (fun x x_1 => x ⋖ x_1) x y
tactic: obtain ⟨z, z_mem, hz⟩ := (Ico x y).exists_maximal h_non
state_before: case intro.intro
ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
hxy : x < y
h_non : (Ico x y).Nonempty
z : α
z_mem : z ∈ Ico x y
hz : ∀ x_1 ∈ Ico x y, ¬z < x_1
⊢ TransGen (fun x x_1 => x ⋖ x_1) x y
state_after: case intro.intro
ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
hxy : x < y
h_non : (Ico x y).Nonempty
z : α
z_mem : z ∈ Ico x y
hz : ∀ x_1 ∈ Ico x y, ¬z < x_1
z_card : (Ico x z).card < (Ico x y).card
⊢ TransGen (fun x x_1 => x ⋖ x_1) x y
tactic: have z_card : (Ico x z).card < (Ico x y).card := card_lt_card <| ssubset_iff_of_subset
    (Ico_subset_Ico le_rfl (mem_Ico.mp z_mem).2.le) |>.mpr ⟨z, z_mem, right_not_mem_Ico⟩
state_before: case intro.intro
ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
hxy : x < y
h_non : (Ico x y).Nonempty
z : α
z_mem : z ∈ Ico x y
hz : ∀ x_1 ∈ Ico x y, ¬z < x_1
z_card : (Ico x z).card < (Ico x y).card
⊢ TransGen (fun x x_1 => x ⋖ x_1) x y
state_after: case intro.intro
ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
hxy : x < y
h_non : (Ico x y).Nonempty
z : α
z_mem : z ∈ Ico x y
hz : ∀ x_1 ∈ Ico x y, ¬z < x_1
z_card : (Ico x z).card < (Ico x y).card
hzy : z ⋖ y
⊢ TransGen (fun x x_1 => x ⋖ x_1) x y
tactic: have hzy : z ⋖ y := by
    refine ⟨(mem_Ico.mp z_mem).2, fun c hc hcy ↦ ?_⟩
    exact hz _ (mem_Ico.mpr ⟨((mem_Ico.mp z_mem).1.trans_lt hc).le, hcy⟩) hc
state_before: case intro.intro
ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
hxy : x < y
h_non : (Ico x y).Nonempty
z : α
z_mem : z ∈ Ico x y
hz : ∀ x_1 ∈ Ico x y, ¬z < x_1
z_card : (Ico x z).card < (Ico x y).card
hzy : z ⋖ y
⊢ TransGen (fun x x_1 => x ⋖ x_1) x y
state_after: case pos
ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
hxy : x < y
h_non : (Ico x y).Nonempty
z : α
z_mem : z ∈ Ico x y
hz : ∀ x_1 ∈ Ico x y, ¬z < x_1
z_card : (Ico x z).card < (Ico x y).card
hzy : z ⋖ y
hxz : x < z
⊢ TransGen (fun x x_1 => x ⋖ x_1) x y

case neg
ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
hxy : x < y
h_non : (Ico x y).Nonempty
z : α
z_mem : z ∈ Ico x y
hz : ∀ x_1 ∈ Ico x y, ¬z < x_1
z_card : (Ico x z).card < (Ico x y).card
hzy : z ⋖ y
hxz : ¬x < z
⊢ TransGen (fun x x_1 => x ⋖ x_1) x y
tactic: by_cases hxz : x < z