. exact hdesc (.refl _)
case hik.refl
α : Type u
lt : α → α → Bool
x✝ : Subarray α
i : Nat
y✝ : Subarray α
k : Nat
x y : Subarray α
hk : k < Subarray.size y
hi : k < Subarray.size x
hl : 2 * k + 1 < Subarray.size x
hr : 2 * k + 2 < Subarray.size x
hx' : lt x[2 * k + 2] x[2 * k + 1] = true
hx : lt x[k] x[2 * k + 1] = true
a✝ : heapifyDown.OpSpec lt (Subarray.swap x { val := k, isLt := hi } { val := 2 * k + 1, isLt := hl }) (2 * k + 1) y
IH :
  ∀ {hk : k < Subarray.size y},
    ¬Descendant (2 * k + 1) k → y[k] = (Subarray.swap x { val := k, isLt := hi } { val := 2 * k + 1, isLt := hl })[k]
hdesc : ¬Descendant k k
⊢ False

case hjk.refl
α : Type u
lt : α → α → Bool
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] = true
hx : lt x[i] x[2 * i + 1] = true
a✝ : heapifyDown.OpSpec lt (Subarray.swap x { val := i, isLt := hi } { val := 2 * i + 1, isLt := hl }) (2 * i + 1) y
IH :
  ∀ {hk : 2 * i + 1 < Subarray.size y},
    ¬Descendant (2 * i + 1) (2 * i + 1) →
      y[2 * i + 1] = (Subarray.swap x { val := i, isLt := hi } { val := 2 * i + 1, isLt := hl })[2 * i + 1]
hk : 2 * i + 1 < Subarray.size y
hdesc : ¬Descendant i (2 * i + 1)
⊢ False
case hjk.refl
α : Type u
lt : α → α → Bool
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] = true
hx : lt x[i] x[2 * i + 1] = true
a✝ : heapifyDown.OpSpec lt (Subarray.swap x { val := i, isLt := hi } { val := 2 * i + 1, isLt := hl }) (2 * i + 1) y
IH :
  ∀ {hk : 2 * i + 1 < Subarray.size y},
    ¬Descendant (2 * i + 1) (2 * i + 1) →
      y[2 * i + 1] = (Subarray.swap x { val := i, isLt := hi } { val := 2 * i + 1, isLt := hl })[2 * i + 1]
hk : 2 * i + 1 < Subarray.size y
hdesc : ¬Descendant i (2 * i + 1)
⊢ False