| ((ls(rxs, x0) * lls(rys, r, x1) * ls(r, y) * del-list(to_delete, n0)))(H), ((ls(rxs, x0) * ls(rys, x1 + y) * del-list(to_delete, n0)))(H), (((lls(rxs, null, x0) * ls(rys, x1 + y)) * del-list(to_delete, n0)))(H), # x0 < h0, n0 ≤ # x0 + # x1 + # y, # x0 + # x1 ≤ h0, n0 + # x0 ≤ h0, # x0 ≤ h0, x1 + y = [] ∨ # x1 + # y = h0 ⊦ x0 + x1 = x0 + prefixn(h0 - # x0, x1 + y), # x0 + # x1 < h0 ∧ r ≠ null |
(((lls(rxs, null, x0) * ls(rys, x1 + y)) * del-list(to_delete, n0)))(H), ((ls(rxs, x0) * ls(rys, x1 + y) * del-list(to_delete, n0)))(H), ((ls(rxs, x0) * lls(rys, r, x1) * ls(r, y) * del-list(to_delete, n0)))(H), # x0 < h0, n0 + # x0 ≤ h0, # x0 + # x1 ≤ h0, n0 ≤ # x0 + # x1 + # y, x1 + y = [] ∨ # x1 + # y = h0 ⊦ x1 = prefixn(h0 - # x0, x1 + y), # x0 + # x1 < h0 ∧ r ≠ null
Used simplifier rules: ⊦ m < n → m ≤ n; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ x + y = x + z ↔ y = z; (s)