| prefixn(h, xs1 + ys) = prefixn(h, xs0), xs = xs1, xs_len = # xs1, # xs1 < h, # xs1 + # ys ≤ # xs0, ys = [] ∨ # ys = h ⊦ ⟨if xs_len + 1 = h then {ys := a + xs; xs_len := 0; xs := []} else {xs := a + xs; xs_len := 1 + xs_len}⟩ (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 ⊦ ⟨ys := a + xs; xs_len := 0; xs := []⟩ (prefixn(h, xs + ys) = prefixn(h, a ' + xs0) ∧ # xs + # ys ≤ # xs0 + 1)
prefixn(h, xs1 + ys) = prefixn(h, xs0), xs = xs1, xs_len = # xs1, # xs1 < h, # xs1 + # ys ≤ # xs0, ys = [] ∨ # ys = h ⊦ ⟨xs := a + xs; xs_len := 1 + xs_len⟩ (prefixn(h, xs + ys) = prefixn(h, a ' + xs0) ∧ # xs + # ys ≤ # xs0 + 1), xs_len + 1 = h