Theorem: ltByCases_congr
File: Mathlib/Order/Basic.lean

tactic: refine ltByCases_rec _ (fun h => ?_) (fun h => ?_) (fun h => ?_)
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : LinearOrder α
P : Sort u_5
x y x' y' : α
h₁ : x < y → P
h₂ : x = y → P
h₃ : y < x → P
h₁' : x' < y' → P
h₂' : x' = y' → P
h₃' : y' < x' → P
ltc : x < y ↔ x' < y'
gtc : y < x ↔ y' < x'
hh'₁ : ∀ (h : x' < y'), h₁ ⋯ = h₁' h
hh'₂ : ∀ (h : x' = y'), h₂ ⋯ = h₂' h
hh'₃ : ∀ (h : y' < x'), h₃ ⋯ = h₃' h
⊢ ltByCases x y h₁ h₂ h₃ = ltByCases x' y' h₁' h₂' h₃'
state_after: case refine_1
ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : LinearOrder α
P : Sort u_5
x y x' y' : α
h₁ : x < y → P
h₂ : x = y → P
h₃ : y < x → P
h₁' : x' < y' → P
h₂' : x' = y' → P
h₃' : y' < x' → P
ltc : x < y ↔ x' < y'
gtc : y < x ↔ y' < x'
hh'₁ : ∀ (h : x' < y'), h₁ ⋯ = h₁' h
hh'₂ : ∀ (h : x' = y'), h₂ ⋯ = h₂' h
hh'₃ : ∀ (h : y' < x'), h₃ ⋯ = h₃' h
h : x < y
⊢ h₁ h = ltByCases x' y' h₁' h₂' h₃'

case refine_2
ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : LinearOrder α
P : Sort u_5
x y x' y' : α
h₁ : x < y → P
h₂ : x = y → P
h₃ : y < x → P
h₁' : x' < y' → P
h₂' : x' = y' → P
h₃' : y' < x' → P
ltc : x < y ↔ x' < y'
gtc : y < x ↔ y' < x'
hh'₁ : ∀ (h : x' < y'), h₁ ⋯ = h₁' h
hh'₂ : ∀ (h : x' = y'), h₂ ⋯ = h₂' h
hh'₃ : ∀ (h : y' < x'), h₃ ⋯ = h₃' h
h : x = y
⊢ h₂ h = ltByCases x' y' h₁' h₂' h₃'

case refine_3
ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : LinearOrder α
P : Sort u_5
x y x' y' : α
h₁ : x < y → P
h₂ : x = y → P
h₃ : y < x → P
h₁' : x' < y' → P
h₂' : x' = y' → P
h₃' : y' < x' → P
ltc : x < y ↔ x' < y'
gtc : y < x ↔ y' < x'
hh'₁ : ∀ (h : x' < y'), h₁ ⋯ = h₁' h
hh'₂ : ∀ (h : x' = y'), h₂ ⋯ = h₂' h
hh'₃ : ∀ (h : y' < x'), h₃ ⋯ = h₃' h
h : y < x
⊢ h₃ h = ltByCases x' y' h₁' h₂' h₃'

tactic: rw [ltByCases_lt (ltc.mp h), hh'₁]
state_before: case refine_1
ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : LinearOrder α
P : Sort u_5
x y x' y' : α
h₁ : x < y → P
h₂ : x = y → P
h₃ : y < x → P
h₁' : x' < y' → P
h₂' : x' = y' → P
h₃' : y' < x' → P
ltc : x < y ↔ x' < y'
gtc : y < x ↔ y' < x'
hh'₁ : ∀ (h : x' < y'), h₁ ⋯ = h₁' h
hh'₂ : ∀ (h : x' = y'), h₂ ⋯ = h₂' h
hh'₃ : ∀ (h : y' < x'), h₃ ⋯ = h₃' h
h : x < y
⊢ h₁ h = ltByCases x' y' h₁' h₂' h₃'
state_after: no goals

tactic: rw [eq_iff_eq_of_lt_iff_lt_of_gt_iff_gt ltc gtc] at h
state_before: case refine_2
ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : LinearOrder α
P : Sort u_5
x y x' y' : α
h₁ : x < y → P
h₂ : x = y → P
h₃ : y < x → P
h₁' : x' < y' → P
h₂' : x' = y' → P
h₃' : y' < x' → P
ltc : x < y ↔ x' < y'
gtc : y < x ↔ y' < x'
hh'₁ : ∀ (h : x' < y'), h₁ ⋯ = h₁' h
hh'₂ : ∀ (h : x' = y'), h₂ ⋯ = h₂' h
hh'₃ : ∀ (h : y' < x'), h₃ ⋯ = h₃' h
h : x = y
⊢ h₂ h = ltByCases x' y' h₁' h₂' h₃'
state_after: case refine_2
ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : LinearOrder α
P : Sort u_5
x y x' y' : α
h₁ : x < y → P
h₂ : x = y → P
h₃ : y < x → P
h₁' : x' < y' → P
h₂' : x' = y' → P
h₃' : y' < x' → P
ltc : x < y ↔ x' < y'
gtc : y < x ↔ y' < x'
hh'₁ : ∀ (h : x' < y'), h₁ ⋯ = h₁' h
hh'₂ : ∀ (h : x' = y'), h₂ ⋯ = h₂' h
hh'₃ : ∀ (h : y' < x'), h₃ ⋯ = h₃' h
h✝ : x = y
h : x' = y'
⊢ h₂ h✝ = ltByCases x' y' h₁' h₂' h₃'

tactic: rw [ltByCases_eq h, hh'₂]
state_before: case refine_2
ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : LinearOrder α
P : Sort u_5
x y x' y' : α
h₁ : x < y → P
h₂ : x = y → P
h₃ : y < x → P
h₁' : x' < y' → P
h₂' : x' = y' → P
h₃' : y' < x' → P
ltc : x < y ↔ x' < y'
gtc : y < x ↔ y' < x'
hh'₁ : ∀ (h : x' < y'), h₁ ⋯ = h₁' h
hh'₂ : ∀ (h : x' = y'), h₂ ⋯ = h₂' h
hh'₃ : ∀ (h : y' < x'), h₃ ⋯ = h₃' h
h✝ : x = y
h : x' = y'
⊢ h₂ h✝ = ltByCases x' y' h₁' h₂' h₃'
state_after: no goals

tactic: rw [ltByCases_gt (gtc.mp h), hh'₃]
state_before: case refine_3
ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : LinearOrder α
P : Sort u_5
x y x' y' : α
h₁ : x < y → P
h₂ : x = y → P
h₃ : y < x → P
h₁' : x' < y' → P
h₂' : x' = y' → P
h₃' : y' < x' → P
ltc : x < y ↔ x' < y'
gtc : y < x ↔ y' < x'
hh'₁ : ∀ (h : x' < y'), h₁ ⋯ = h₁' h
hh'₂ : ∀ (h : x' = y'), h₂ ⋯ = h₂' h
hh'₃ : ∀ (h : y' < x'), h₃ ⋯ = h₃' h
h : y < x
⊢ h₃ h = ltByCases x' y' h₁' h₂' h₃'
state_after: no goals