| ⊦ ∀ ino. (ino ∈ abs-files(fs, ri \ orphans(fs, ri)) ↔ ino ∈ abs-files(fs, ri) \ abs-keys(orphans(fs, ri))) ∧ (ino ∈ abs-files(fs, ri \ orphans(fs, ri)) → abs-files(fs, ri \ orphans(fs, ri))[ino] = (abs-files(fs, ri) \ abs-keys(orphans(fs, ri)))[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)) ∧ ( inodekey(ino) ∈ ri \ orphans(fs, ri) ∧ ¬ fs[(ri \ orphans(fs, ri))[inodekey(ino)]].directory → mkfile (fs[(ri \ orphans(fs, ri))[inodekey(ino)]].size, fs[(ri \ orphans(fs, ri))[inodekey(ino)]].meta, fs[(ri \ orphans(fs, ri))[inodekey(ino)]].nlink, abs-content(ino, fs, ri \ orphans(fs, ri))) = (abs-files(fs, ri) \ abs-keys(orphans(fs, ri)))[ino])
Used simplifier rules: in-files: ⊦ ino ∈ abs-files(fs, ri) ↔ inodekey(ino) ∈ ri ∧ ¬ fs[ri[inodekey(ino)]].directory;%abs-keys: ⊦ n ∈ abs-keys(ks) ↔ inodekey(n) ∈ ks;%at-files: ⊦ inodekey(ino) ∈ ri ∧ ¬ fs[ri[inodekey(ino)]].directory → abs-files(fs, ri)[ino] = abs-file(ino, fs, ri);%file: ⊦ abs-file(ino, fs, ri) = mkfile (fs[ri[inodekey(ino)]].size, fs[ri[inodekey(ino)]].meta, fs[ri[inodekey(ino)]].nlink, abs-content(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 ∈ files \ ns ↔ ino ∈ files ∧ ¬ ino ∈ ns; (s)