| fs[ri[key]].key = key, key = inodekey(ino), ro.inodes?, orphans-cons(fs, ri, ro), ri-closed(ri, fs, ro), ri[key] ∈ fs, key ∈ ri, key.inode? → fs[ri[key]].inode? ∧ key.ino ≠ 0, key.dentry? → fs[ri[key]].dentry?, key.data? → fs[ri[key]].data?, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ replay-one(adr, fs[ri[key]], ri ⊖ ro) = ri[key, adr] ⊖ ro |
fs[ri[inodekey(ino)]].key = inodekey(ino), fs[ri[inodekey(ino)]].inode?, ro.inodes?, orphans-cons(fs, ri, ro), ri-closed(ri, fs, ro), inodekey(ino) ∈ ri, ri[inodekey(ino)] ∈ fs, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ ino = 0, replay-one(adr, fs[ri[inodekey(ino)]], ri ⊖ ro) = ri[inodekey(ino), adr] ⊖ ro
Used simplifier rules: ⊦ inodekey(m).ino = m; (s)% ⊦ inodekey(m).inode?; (s)% ⊦ ¬ inodekey(m).dentry?; (s)% ⊦ ¬ inodekey(m).data?; (s)