| xs_len + 1 = h, prefixn(h, xs1 + ys) = prefixn(h, xs0), xs = xs1, xs_len = # xs1, # xs1 < h, # xs1 + # ys ≤ # xs0, ys = [] ∨ # ys = h ⊦ ⟨ys := a + xs; xs_len := 0; xs := []⟩ (prefixn(h, xs + ys) = prefixn(h, a ' + xs0) ∧ # xs + # ys ≤ # xs0 + 1) |
xs_len + 1 = h, prefixn(h, xs1 + ys) = prefixn(h, xs0), xs = xs1, xs_len = # xs1, # xs1 < h, # xs1 + # ys ≤ # xs0, ys = [] ∨ # ys = h ⊦ ⟨xs_len := 0; xs1 := []⟩ (prefixn(h, xs1 + (a + xs)) = prefixn(h, a ' + xs0) ∧ # xs1 + #(a + xs) ≤ # xs0 + 1)