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

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
⊢ 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: obtain ⟨z, z_mem, hz⟩ := (Ico x y).exists_maximal h_non
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: 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
⊢ 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 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
⊢ 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: by_cases hxz : x < z
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: refine ⟨(mem_Ico.mp z_mem).2, fun c hc hcy ↦ ?_⟩
state_before: ι : 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
⊢ z ⋖ y
state_after: ι : 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
c : α
hc : z < c
hcy : c < y
⊢ False

tactic: exact hz _ (mem_Ico.mpr ⟨((mem_Ico.mp z_mem).1.trans_lt hc).le, hcy⟩) hc
state_before: ι : 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
c : α
hc : z < c
hcy : c < y
⊢ False
state_after: no goals

tactic: exact .tail (transGen_covBy_of_lt hxz) hzy
state_before: 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
state_after: no goals

tactic: simp only [lt_iff_le_not_le, not_and, not_not] at hxz
state_before: 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
state_after: 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 → z ≤ x
⊢ TransGen (fun x x_1 => x ⋖ x_1) x y

tactic: exact .single (hzy.of_le_of_lt (hxz (mem_Ico.mp z_mem).1) hxy)
state_before: 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 → z ≤ x
⊢ TransGen (fun x x_1 => x ⋖ x_1) x y
state_after: no goals