| # buf0 = VFS_PAGE_SIZE, fs[ri[datakey(m, pageno)]] = datanode(key, buf1), fo.inodes?, orphans(fs, ri).inodes?, afs-cons(abs-dirs(fs, ri), abs-files(fs, ri)), file-node-cons(fs, ri), log-cons(log, fs), orphans-cons(fs, ri, orphans(fs, ri)), replay-cons-strong(fs, ri, orphans(fs, ri), fi, fo, log), ri-cons(ri, fs), ri-inj(fi), ri-inj(ri), ri[datakey(m, pageno)] ∈ fs, datakey(m, pageno) ∈ ri, inodekey(m) ∈ ri, fo ⊆ dom fi, orphans(fs, ri) ⊆ dom ri, asynced → boolvar2, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ node-closed(fs[ri[key]], ri, fs, orphans(fs, ri)) ⊦ copy(buf1, 0, buf0, 0, VFS_PAGE_SIZE) = buf1, fs[ri[inodekey(m)]].directory, dups(log), inodekey(0) ∈ ri |
Used simplifier rules: ⊦ node-closed(datanode(key, buf), ri, fs, ro) ↔ inodekey(key.ino) ∈ ri ∧ ¬ fs[ri[inodekey(key.ino)]].directory ∧ # buf = VFS_PAGE_SIZE; (s)%# buf = m, # buf0 = m ⊦ copy(buf, 0, buf0, 0, m) = buf; (s) Used terms: datakey(m, pageno)