refine .node lt x i hr hx ?_ heap_left heap_right
case node_end_left
α : Type u
lt : α → α → Bool
inst✝ : LawfulLTBRel lt
x✝ : Subarray α
i✝ : Nat
y x : Subarray α
i : Nat
hi✝ : i < Subarray.size x
hl : 2 * i + 1 < Subarray.size x
hr : 2 * i + 2 < Subarray.size x
hx' : lt x[2 * i + 2] x[2 * i + 1] = true
hx : lt x[i] x[2 * i + 1] = false
heap_left : IsHeap lt x (2 * i + 1)
heap_right : IsHeap lt x (2 * i + 2)
_hy_left : ∀ (hl_1 : 2 * i + 1 < Subarray.size x), lt x[i] x[2 * i + 1] = false :=
  fun hl_1 => not_lt_left (node_end_left x i hi✝ hl hr hx' hx) hl_1 heap_left
_hy_right : ∀ (hr_1 : 2 * i + 2 < Subarray.size x), lt x[i] x[2 * i + 2] = false :=
  fun hr_1 => not_lt_right (node_end_left x i hi✝ hl hr hx' hx) hr_1 heap_right
⊢ IsHeap lt x i
case node_end_left
α : Type u
lt : α → α → Bool
inst✝ : LawfulLTBRel lt
x✝ : Subarray α
i✝ : Nat
y x : Subarray α
i : Nat
hi✝ : i < Subarray.size x
hl : 2 * i + 1 < Subarray.size x
hr : 2 * i + 2 < Subarray.size x
hx' : lt x[2 * i + 2] x[2 * i + 1] = true
hx : lt x[i] x[2 * i + 1] = false
heap_left : IsHeap lt x (2 * i + 1)
heap_right : IsHeap lt x (2 * i + 2)
_hy_left : ∀ (hl_1 : 2 * i + 1 < Subarray.size x), lt x[i] x[2 * i + 1] = false :=
  fun hl_1 => not_lt_left (node_end_left x i hi✝ hl hr hx' hx) hl_1 heap_left
_hy_right : ∀ (hr_1 : 2 * i + 2 < Subarray.size x), lt x[i] x[2 * i + 2] = false :=
  fun hr_1 => not_lt_right (node_end_left x i hi✝ hl hr hx' hx) hr_1 heap_right
⊢ lt x[i] x[2 * i + 2] = false