| # buf0 = # buf1, buf1[n2] = ((content.stream from n0) to n)[n2], files[ino] = mkfile(m, md, # links(ino, dirs), content), ⌜# buf1⌝ = ⌜n⌝ + #(⌜buf0⌝ from n), n2 < # buf1, ⌜n2⌝ < #((content.stream from n0) to n), afs-cons(dirs, files), ino ∈ files, n ≤ # buf1, n1 ≤ # buf1 + n0, n0 + n ≤ m, n0 + n ≤ n1 ⊦ (n ≤ n2 ⊃ buf0[n2];getbyte(n2 + n0, content)) = buf1[n2] |
# buf0 = # buf1, buf1[n2] = (content.stream from n0)[n2], files[ino] = mkfile(m, md, # links(ino, dirs), content), ⌜# buf1⌝ = ⌜n⌝ + #(⌜buf0⌝ from n), n2 < n, n2 < # buf1, afs-cons(dirs, files), ino ∈ files, n ≤ # buf1, n1 ≤ # buf1 + n0, n0 + n ≤ m, n0 + n ≤ n1 ⊦ getbyte(n2 + n0, content) = buf1[n2]
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ m < n → (n ≤ m ↔ false); (s)%m < n, ¬ # σ0 < ⌜n⌝ ⊦ (σ0 to n)[m] = σ0[m]; (s)% ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)%¬ # σ0 < ⌜n⌝ ⊦ #(σ0 to n) = ⌜n⌝ ; (s)% ⊦ ¬ ∞ < n∞; (s)% ⊦ #(content.stream from n) = ∞; (s)