| # buf0 = # buf1, buf1[n2] = (((content.stream from n0) to n) + (⌜buf0⌝ from n))[n2], files[ino] = mkfile(m, md, # links(ino, dirs), content), ⌜# buf1⌝ = ⌜n⌝ + #(⌜buf0⌝ from n), n2 < # buf1, 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], ⌜n2⌝ < #((content.stream from n0) to n) |
# buf0 = # buf1, files[ino] = mkfile(m, md, # links(ino, dirs), content), buf1[n2] = (⌜buf0⌝ from n)[n2 - n], ⌜# buf1⌝ = ⌜n⌝ + #(⌜buf0⌝ from n), n2 < # buf1, n < # buf1, afs-cons(dirs, files), ino ∈ files, n0 + n ≤ n1, n0 + n ≤ m, n1 ≤ # buf1 + n0, n ≤ n2 ⊦ buf0[n2] = buf1[n2]
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic% ⊦ m < n → m ≤ n; (s)%fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)%append-assoc: ⊦ (σ0 + σ3) + σ4 = σ0 + σ3 + σ4; from specification stream[buffer-inf]% ⊦ ⌜m⌝ .n = m; (s)%¬ # σ0 < ⌜n⌝ ⊦ #(σ0 to n) = ⌜n⌝ ; (s)% ⊦ ¬ ∞ < n∞; (s)% ⊦ #(content.stream from n) = ∞; (s)% ⊦ ¬ ⌜m⌝ < # σ0 → (σ0 + σ2)[m] = σ2[m - (# σ0).n]; (s)