cases hlk
α : Type u
lt : α → α → Bool
x✝ : Subarray α
i✝ : Nat
y : Subarray α
k : Nat
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[i] x[2 * i + 1] = true
hk : k < Subarray.size x
hdesc : Descendant i k
hlk : 2 * i + 1 = k
⊢ ∃ l hl_1, Descendant i l ∧ (if 2 * i + 1 = k then x[i] else if i = k then x[2 * i + 1] else x[k]) = x[l]
case refl
α : Type u
lt : α → α → Bool
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[i] x[2 * i + 1] = true
hk : 2 * i + 1 < Subarray.size x
hdesc : Descendant i (2 * i + 1)
⊢ ∃ l hl_1,
    Descendant i l ∧
      (if 2 * i + 1 = 2 * i + 1 then x[i] else if i = 2 * i + 1 then x[2 * i + 1] else x[2 * i + 1]) = x[l]