| ⊦ abs-dirs(fs, ri \ datakeys(key, n, ri)) = abs-dirs(fs, ri) |
⊦ ( inodekey(ino) ∈ ri ∧ fs[ri[inodekey(ino)]].directory ↔ inodekey(ino) ∈ ri \ datakeys(key, n, ri) ∧ fs[(ri \ datakeys(key, n, ri))[inodekey(ino)]].directory) ∧ ( inodekey(ino) ∈ ri ∧ 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))))
Used simplifier rules: D-ext: ⊦ dirs = abs-dirs(fs, ri) ↔ (∀ ino. ( ino ∈ dirs ↔ inodekey(ino) ∈ ri ∧ fs[ri[inodekey(ino)]].directory) ∧ (ino ∈ dirs → dirs[ino] = abs-dir(ino, fs, ri)));%in-dirs: ⊦ ino ∈ abs-dirs(fs, ri) ↔ inodekey(ino) ∈ ri ∧ fs[ri[inodekey(ino)]].directory;%at-dirs: ⊦ inodekey(ino) ∈ ri ∧ fs[ri[inodekey(ino)]].directory → abs-dirs(fs, ri)[ino] = abs-dir(ino, fs, ri);%dir: ⊦ abs-dir(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));