| n ≤ # ar1, n0 + m ≤ # ar0, n1 + m ≤ # resize(ar1, n), ∀ n2. n2 < m → ar0[n0 + n2] = resize(ar1, n)[n1 + n2] ⊦ range=(ar0, n0, ar1, n1, m) ∧ m + n1 ≤ n |
⊦ # resize(ar, n) = n
n0 + m ≤ # ar0, n ≤ # ar1, n1 + m ≤ n, n1 + m ≤ # ar1, ∀ n2. n2 < m → ar0[n0 + n2] = resize(ar1, n)[n1 + n2] ⊦ range=(ar0, n0, ar1, n1, m)
Used simplifier rules: resize-len: ⊦ # resize(ar, n) = n;%let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat%c: ⊦ m + n = n + m; from specification nat-basic