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