| inodekey(ino) ∈ ri ⊦ (fs[ri[inodekey(ino)]].directory ↔ fs[(ri \ datakeys(key, n, ri))[inodekey(ino)]].directory) ∧ ( fs[ri[inodekey(ino)]].directory → mkdir (fs[ri[inodekey(ino)]].size, fs[ri[inodekey(ino)]].meta, fs[ri[inodekey(ino)]].nlink, fs[ri[inodekey(ino)]].nsubdirs, abs-children(ino, fs, ri)) = mkdir (fs[(ri \ datakeys(key, n, ri))[inodekey(ino)]].size, fs[(ri \ datakeys(key, n, ri))[inodekey(ino)]].meta, fs[(ri \ datakeys(key, n, ri))[inodekey(ino)]].nlink, fs[(ri \ datakeys(key, n, ri))[inodekey(ino)]].nsubdirs, abs-children(ino, fs, ri \ datakeys(key, n, ri)))) |
⊦ ¬ key ∈ ks → (ri \ ks)[key] = ri[key]
inodekey(ino) ∈ ri ⊦ inodekey(ino) ∈ datakeys(key, n, ri), (fs[ri[inodekey(ino)]].directory ↔ fs[ri[inodekey(ino)]].directory) ∧ ( fs[ri[inodekey(ino)]].directory → mkdir (fs[ri[inodekey(ino)]].size, fs[ri[inodekey(ino)]].meta, fs[ri[inodekey(ino)]].nlink, fs[ri[inodekey(ino)]].nsubdirs, abs-children(ino, fs, ri)) = mkdir (fs[ri[inodekey(ino)]].size, fs[ri[inodekey(ino)]].meta, fs[ri[inodekey(ino)]].nlink, fs[ri[inodekey(ino)]].nsubdirs, abs-children(ino, fs, ri \ datakeys(key, n, ri))))
Used simplifier rules: ⊦ key ∈ datakeys(key0, n, ri) ↔ key ∈ datakeys(key0, ri) ∧ n ≤ key.part * VFS_PAGE_SIZE; (s)%⊦ key ∈ datakeys(key0, ri) ↔ key ∈ ri ∧ key.data? ∧ key0.inode? ∧ key.ino = key0.ino; (s)% ⊦ ¬ inodekey(m).data?; (s) Used terms: inodekey(ino), datakeys(key, n, ri), ri