| # buf = LEB_SIZE, avol1[n] = mapped(buf), n0 < # avol1, n < # avol0, n < # avol1, n0 < m + m2, m < # avol0, n < n0 + n1, n < m + m2, n0 < # avol0, m < n0 + n1, m < # avol1, n0 + n1 ≤ # avol0, n0 + n1 ≤ # avol1, m ≤ n, n0 ≤ n, n0 + n1 ≤ m + m2, m ≤ n0, m + m2 ≤ # avol0, m + m2 ≤ # avol1, n - m < m2 → avol0[m + (n - m)] = avol1[m + (n - m)] ⊦ m2 = 0, n1 = 0, avol0[n].mapped? ∧ # avol0[n].data = LEB_SIZE |
# buf = LEB_SIZE, avol1[n] = mapped(buf), avol0[m + (n - m)] = avol1[m + (n - m)], m < # avol1, m < n0 + n1, n0 < # avol0, n < m + m2, n < n0 + n1, m < # avol0, n0 < m + m2, n < # avol1, n < # avol0, n0 < # avol1, m + m2 ≤ # avol1, m + m2 ≤ # avol0, m ≤ n0, n0 + n1 ≤ m + m2, n0 ≤ n, m ≤ n, n0 + n1 ≤ # avol1, n0 + n1 ≤ # avol0 ⊦ m2 = 0, n1 = 0, avol0[n].mapped? ∧ # avol0[n].data = LEB_SIZE
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic%n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0; (s)% ⊦ m ≤ n → (n < m ↔ false); (s)% ⊦ m ≤ n ↔ ¬ n < m; (ss)