| ro.inodes?, fo.inodes?, log-cons(log, fs), ri-closed(ri, fs, ro), ri-cons(ri, fs), inodekey(ino) ∈ ri, datakey(ino, n) ∈ ri, ri[datakey(ino, n)] ∈ fs, ro ⊆ dom ri, fo ⊆ dom fi ⊦ fs[ri[datakey(ino, n)]].data?, fs[ri[inodekey(ino)]].directory, dups(log), inodekey(0) ∈ ri |
⊦ ri-cons(ri, fs) ↔ (∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]))
fo.inodes?, ro.inodes?, log-cons(log, fs), ri-closed(ri, fs, ro), ri[datakey(ino, n)] ∈ fs, datakey(ino, n) ∈ ri, inodekey(ino) ∈ ri, fo ⊆ dom fi, ro ⊆ dom ri, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ fs[ri[datakey(ino, n)]].data?, fs[ri[inodekey(ino)]].directory, dups(log), inodekey(0) ∈ ri
Used terms: fs, ri