simp only [if_neg hrk, if_neg <| Nat.ne_of_lt <| trans (lt_child_right i) hdk.le]
α : Type u
lt : α → α → Bool
inst✝ : LawfulLTBRel lt
x✝ : Subarray α
i✝ : Nat
y✝ x : Subarray α
i : Nat
y : Subarray α
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] = false
hx : lt x[i] x[2 * i + 2] = true
h✝ : heapifyDown.OpSpec lt (Subarray.swap x { val := i, isLt := hi } { val := 2 * i + 2, isLt := hr✝ }) (2 * i + 2) y
a_ih✝ :
  ∀
    (hr :
      2 * (2 * i + 2) + 2 < Subarray.size (Subarray.swap x { val := i, isLt := hi } { val := 2 * i + 2, isLt := hr✝ })),
    IsHeap lt (Subarray.swap x { val := i, isLt := hi } { val := 2 * i + 2, isLt := hr✝ }) (2 * (2 * i + 2) + 2) →
      lt y[2 * i + 2] y[2 * (2 * i + 2) + 2] = false
hr : 2 * i + 2 < Subarray.size x
heap_right : IsHeap lt x (2 * i + 2)
k : Nat
hk : k < Subarray.size (Subarray.swap x { val := i, isLt := hi } { val := 2 * i + 2, isLt := hr✝ })
hdk : Descendant (2 * i + 2) k
h : y[2 * i + 2] = (Subarray.swap x { val := i, isLt := hi } { val := 2 * i + 2, isLt := hr✝ })[k]
hrk : ¬2 * i + 2 = k
⊢ lt x[↑{ val := 2 * i + 2, isLt := hr✝ }]
      (if ↑{ val := 2 * i + 2, isLt := hr✝ } = k then x[↑{ val := i, isLt := hi }]
      else if ↑{ val := i, isLt := hi } = k then x[↑{ val := 2 * i + 2, isLt := hr✝ }] else x[k]) =
    false
α : Type u
lt : α → α → Bool
inst✝ : LawfulLTBRel lt
x✝ : Subarray α
i✝ : Nat
y✝ x : Subarray α
i : Nat
y : Subarray α
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] = false
hx : lt x[i] x[2 * i + 2] = true
h✝ : heapifyDown.OpSpec lt (Subarray.swap x { val := i, isLt := hi } { val := 2 * i + 2, isLt := hr✝ }) (2 * i + 2) y
a_ih✝ :
  ∀
    (hr :
      2 * (2 * i + 2) + 2 < Subarray.size (Subarray.swap x { val := i, isLt := hi } { val := 2 * i + 2, isLt := hr✝ })),
    IsHeap lt (Subarray.swap x { val := i, isLt := hi } { val := 2 * i + 2, isLt := hr✝ }) (2 * (2 * i + 2) + 2) →
      lt y[2 * i + 2] y[2 * (2 * i + 2) + 2] = false
hr : 2 * i + 2 < Subarray.size x
heap_right : IsHeap lt x (2 * i + 2)
k : Nat
hk : k < Subarray.size (Subarray.swap x { val := i, isLt := hi } { val := 2 * i + 2, isLt := hr✝ })
hdk : Descendant (2 * i + 2) k
h : y[2 * i + 2] = (Subarray.swap x { val := i, isLt := hi } { val := 2 * i + 2, isLt := hr✝ })[k]
hrk : ¬2 * i + 2 = k
⊢ lt x[2 * i + 2] x[k] = false