| xs1 + prefixn(1, ys) = prefixn(# xs1, xs0) + prefixn(1, dropn(# xs1, xs0)), # xs1 + 1 = # xs1 + 1, # xs1 ≤ # xs0, # xs1 + # ys ≤ # xs0, ys = [] ∨ # ys = # xs1 + 1 ⊦ xs1 = prefixn(# xs1, xs0) |
xs1 + prefixn(1, ys) = prefixn(# xs1, xs0) + prefixn(1, dropn(# xs1, xs0)), # xs1 + # ys ≤ # xs0, # xs1 ≤ # xs0, ys = [] ∨ # ys = # xs1 + 1 ⊦ xs1 = prefixn(# xs1, xs0)