simp only [if_neg hlk, ite_true]
case refl
α : Type u
lt : α → α → Bool
x✝ : Subarray α
i : Nat
y : Subarray α
k : Nat
x : Subarray α
hk hi : k < Subarray.size x
hl : 2 * k + 1 < Subarray.size x
hr : 2 * k + 2 ≥ Subarray.size x
hx : lt x[k] x[2 * k + 1] = true
hdesc : Descendant k k
hlk : ¬2 * k + 1 = k
⊢ ∃ l hl_1, Descendant k l ∧ (if 2 * k + 1 = k then x[k] else if k = k then x[2 * k + 1] else x[k]) = x[l]
case refl
α : Type u
lt : α → α → Bool
x✝ : Subarray α
i : Nat
y : Subarray α
k : Nat
x : Subarray α
hk hi : k < Subarray.size x
hl : 2 * k + 1 < Subarray.size x
hr : 2 * k + 2 ≥ Subarray.size x
hx : lt x[k] x[2 * k + 1] = true
hdesc : Descendant k k
hlk : ¬2 * k + 1 = k
⊢ ∃ l hl_1, Descendant k l ∧ x[2 * k + 1] = x[l]