| # buf = VFS_PAGE_SIZE, files[m0] = mkfile(n0, md, # links(m0, dirs), content), F(files -- m0), afs-cons(dirs, files), n ∈ content, m0 ∈ files ⊦ # ⌜content[n]⌝ = #((content.stream from n * VFS_PAGE_SIZE) to VFS_PAGE_SIZE) ∧ (∀ n0. ⌜n0⌝ < # ⌜content[n]⌝ → ⌜content[n]⌝ [n0] = ((content.stream from n * VFS_PAGE_SIZE) to VFS_PAGE_SIZE)[n0]) |
# buf = VFS_PAGE_SIZE, files[m0] = mkfile(n0, md, # links(m0, dirs), content), n1 < VFS_PAGE_SIZE, F(files -- m0), afs-cons(dirs, files), n ∈ content, m0 ∈ files ⊦ ⌜content[n]⌝ [n1] = (content.stream from n * VFS_PAGE_SIZE)[n1]
Used simplifier rules: ⊦ VFS_PAGE_SIZE ≠ 0; (s)%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%m < n, ¬ # σ0 < ⌜n⌝ ⊦ (σ0 to n)[m] = σ0[m]; (s)% ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)% ⊦ ⌜m⌝ = ⌜m0⌝ ↔ m = m0; (s)%¬ # σ0 < ⌜n⌝ ⊦ #(σ0 to n) = ⌜n⌝ ; (s)% ⊦ ¬ ∞ < n∞; (s)% ⊦ #(content.stream from n) = ∞; (s)%⊦ afs-cons(dirs, files) ∧ ino ∈ files ∧ files[ino] = mkfile(m, md, n0, content) ∧ n ∈ content → # content[n] = VFS_PAGE_SIZE; (s)% ⊦ # ⌜buf⌝ = ⌜# buf⌝ ; (s)