| # buf0 = # buf1, files[ino] = mkfile(m, md, # links(ino, dirs), content), ⌜buf1⌝ = ((content.stream from n0) to n) + (⌜buf0⌝ from n), afs-cons(dirs, files), ino ∈ files, n ≤ # buf1, n1 ≤ # buf1 + n0, n0 + n ≤ m, n0 + n ≤ n1 ⊦ copy((content.stream to m).buf, n0, buf0, 0, n) = buf1 |
⊦ buf = buf0 ↔ # buf = # buf0 ∧ (∀ n. n < # buf → buf[n] = buf0[n])
# buf0 = # buf1, files[ino] = mkfile(m, md, # links(ino, dirs), content), ⌜buf1⌝ = ((content.stream from n0) to n) + (⌜buf0⌝ from n), afs-cons(dirs, files), ino ∈ files, n0 + n ≤ n1, n0 + n ≤ m, n1 ≤ # buf1 + n0, n ≤ # buf1 ⊦ # copy((content.stream to m).buf, n0, buf0, 0, n) = # buf1 ∧ (∀ n1. n1 < # copy((content.stream to m).buf, n0, buf0, 0, n) → copy((content.stream to m).buf, n0, buf0, 0, n)[n1] = buf1[n1])
Used terms: buf1, copy((content.stream to m).buf, n0, buf0, 0, n)