| (((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 ⊦ x0 + x1 = prefixn(h0, x0 + x1 + y), # x0 + # x1 < h0 ∧ r ≠ null |
⊦ # x0 ≤ n → prefixn(n, x0 + x1) = x0 + prefixn(n - # x0, x1)
((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
Used simplifier rules: ⊦ #(x + y) = # x + # y; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ m ≤ n → (n ≤ m ↔ m = n); (s)% ⊦ m ≠ n → (m ≤ n ↔ m < n); (s)% ⊦ m < n → m ≤ n; (s)%n ≤ # x ⊦ prefixn(n, x + y) = prefixn(n, x); (s)% ⊦ m ≤ n ↔ ¬ n < m; (ss)% ⊦ m ≤ n → (n < m ↔ false); (s)%# x ≤ m ⊦ prefixn(m, x) = x; (s)% ⊦ x + y = x + z ↔ y = z; (s) Used terms: x1 + y, x0, h0