| # avol = # avol0, n0 < n, id○(avol, avol0, n0), n + m + m0 ≤ # avol0 ⊦ # subarray(avol, n + m, m0) = # subarray(avol0, n + m, m0) ∧ (∀ n0. n0 < # subarray(avol, n + m, m0) → subarray(avol, n + m, m0)[n0] = subarray(avol0, n + m, m0)[n0]) |
# avol = # avol0, n1 < m0, n0 < n, id○(avol, avol0, n0), n + m + m0 ≤ # avol0 ⊦ avol[(n + m) + n1] = avol0[(n + m) + n1]
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ n0 < n → subarray(avol, m, n)[n0] = avol[m + n0]; (s)% ⊦ # subarray(avol, m, n) = n; (s)