| ((del-list(to_delete, n) * P))(H) ⊦ ⟪if to_delete ≠ [] then let r = to_delete.head in {to_delete := to_delete.tail; if H[r].nxt ≠ null then to_delete := H[r].nxt + to_delete; H := H -- r}⟫ ((1 ≤ n → ((del-list(to_delete, n - 1) * P))(H)) ∧ (n = 0 → to_delete = [] ∧ P(H))) |
((del-list(to_delete, n) * P))(H) ⊦ ⟪let r = to_delete.head in {to_delete := to_delete.tail; if H[r].nxt ≠ null then to_delete := H[r].nxt + to_delete; H := H -- r}⟫ ((1 ≤ n → ((del-list(to_delete, n - 1) * P))(H)) ∧ (n = 0 → to_delete = [] ∧ P(H))), to_delete = []
to_delete = [], ((del-list(to_delete, n) * P))(H) ⊦ ⟪skip⟫ ((1 ≤ n → ((del-list(to_delete, n - 1) * P))(H)) ∧ (n = 0 → to_delete = [] ∧ P(H)))