| # ⌜buf1⌝ = #(((content.stream from n0) to n) + (⌜buf0⌝ from n)), # buf0 = # buf1, files[ino] = mkfile(m, md, # links(ino, dirs), content), n2 < # buf1, afs-cons(dirs, files), ino ∈ files, n ≤ # buf1, n1 ≤ # buf1 + n0, n0 + n ≤ m, n0 + n ≤ n1, ∀ n1. ⌜n1⌝ < # ⌜buf1⌝ → ⌜buf1⌝ [n1] = (((content.stream from n0) to n) + (⌜buf0⌝ from n))[n1] ⊦ (n ≤ n2 ⊃ buf0[n2];getbyte(n2 + n0, content)) = buf1[n2] |
# buf0 = # buf1, files[ino] = mkfile(m, md, # links(ino, dirs), content), ⌜# buf1⌝ = ⌜n⌝ + #(⌜buf0⌝ from n), n2 < # buf1, afs-cons(dirs, files), ino ∈ files, n0 + n ≤ n1, n0 + n ≤ m, n1 ≤ # buf1 + n0, n ≤ # buf1, ∀ n3. n3 < # buf1 → buf1[n3] = (((content.stream from n0) to n) + (⌜buf0⌝ from n))[n3] ⊦ (n ≤ n2 ⊃ buf0[n2];getbyte(n2 + n0, content)) = buf1[n2]
Used simplifier rules: ⊦ n < # buf → ⌜buf⌝ [n] = buf[n]; (s)% ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)%append-assoc: ⊦ (σ0 + σ3) + σ4 = σ0 + σ3 + σ4; from specification stream[buffer-inf]%¬ # σ0 < ⌜n⌝ ⊦ #(σ0 to n) = ⌜n⌝ ; (s)% ⊦ ¬ ∞ < n∞; (s)% ⊦ #(content.stream from n) = ∞; (s)% ⊦ #(σ0 + σ2) = # σ0 + # σ2; (s)% ⊦ # ⌜buf⌝ = ⌜# buf⌝ ; (s)