| ⊦ abs-dirs(fs, ri ⊖ orphans(fs, ri)) = abs-dirs(fs, ri) \ abs-keys(orphans(fs, ri)) |
⊦ ( inodekey(ino) ∈ ri ∧ fs[ri[inodekey(ino)]].directory ∧ (fs[ri[inodekey(ino)]].nlink ≠ 0 ∨ ino = ROOT_INO) ↔ inodekey(ino) ∈ ri ⊖ orphans(fs, ri) ∧ fs[(ri ⊖ orphans(fs, ri))[inodekey(ino)]].directory) ∧ ( inodekey(ino) ∈ ri ∧ fs[ri[inodekey(ino)]].directory ∧ (fs[ri[inodekey(ino)]].nlink ≠ 0 ∨ ino = ROOT_INO) → (abs-dirs(fs, ri) \ abs-keys(orphans(fs, ri)))[ino] = mkdir (fs[(ri ⊖ orphans(fs, ri))[inodekey(ino)]].size, fs[(ri ⊖ orphans(fs, ri))[inodekey(ino)]].meta, fs[(ri ⊖ orphans(fs, ri))[inodekey(ino)]].nlink, fs[(ri ⊖ orphans(fs, ri))[inodekey(ino)]].nsubdirs, abs-children(ino, fs, ri ⊖ orphans(fs, 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;%abs-keys: ⊦ n ∈ abs-keys(ks) ↔ inodekey(n) ∈ ks;%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));% ⊦ inodekey(m).ino = m; (s)% ⊦ inodekey(m).inode?; (s)%⊦ key ∈ orphans(fs, ri) ↔ key.inode? ∧ key ∈ ri ∧ fs[ri[key]].nlink = 0 ∧ key.ino ≠ ROOT_INO; (s)% ⊦ ino ∈ dirs \ ns ↔ ino ∈ dirs ∧ ¬ ino ∈ ns; (s)