α : Type u_1
s : Heap α
le : α → α → Bool
hwf : WF le s
⊢ WF le (Option.getD (Heap.tail? le s) Heap.nil)
α : Type u_1
s : Heap α
le : α → α → Bool
hwf : WF le s
⊢ WF le (Heap.tail le s)
simp only [Heap.tail]
no goals
α : Type u_1
s : Heap α
le : α → α → Bool
hwf : WF le s
⊢ WF le (Option.getD (Heap.tail? le s) Heap.nil)
match eq : s.tail? le with
| none => exact Heap.WF.nil
| some tl => exact hwf.tail? eq
no goals
α : Type u_1
s : Heap α
le : α → α → Bool
hwf : WF le s
eq : Heap.tail? le s = none
⊢ WF le (Option.getD none Heap.nil)
exact Heap.WF.nil
no goals
α : Type u_1
s : Heap α
le : α → α → Bool
hwf : WF le s
tl : Heap α
eq : Heap.tail? le s = some tl
⊢ WF le (Option.getD (some tl) Heap.nil)
exact hwf.tail? eq