| # ar ≤ n ⊦ # resize(resize(ar, n), m) = # resize(ar, m) ∧ (∀ n0. n0 < # resize(resize(ar, n), m) → resize(resize(ar, n), m)[n0] = resize(ar, m)[n0]) |
⊦ # resize(ar, n) = n
⊦ m < n → resize(ar, n)[m] = (# ar ≤ m ∧ m < n ⊃ zero;ar[m])
n0 < m, # ar ≤ n ⊦ (n ≤ n0 ⊃ zero;resize(ar, n)[n0]) = (# ar ≤ n0 ⊃ zero;ar[n0])
Used simplifier rules: resize-len: ⊦ # resize(ar, n) = n;%resize-at: ⊦ m < n → resize(ar, n)[m] = (# ar ≤ m ∧ m < n ⊃ zero;ar[m]);% ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic