| fs[ri[inodekey(ino)]].directory, inodekey(ino) ∈ ri, dentrykey(ino, str) ∈ ri \ orphans(fs, ri), fs[ri[inodekey(ino)]].nlink ≠ 0 ∨ ino = ROOT_INO ⊦ fs[ri[inodekey(ino)]].nlink = 0 ∧ ino ≠ ROOT_INO, (dentrykey(ino, str) ∈ ri \ orphans(fs, ri) → dentrykey(ino, str) ∈ ri) ∧ (dentrykey(ino, str) ∈ ri \ orphans(fs, ri) → fs[(ri \ orphans(fs, ri))[dentrykey(ino, str)]].ino = fs[ri[dentrykey(ino, str)]].ino) |
fs[ri[inodekey(ino)]].directory, inodekey(ino) ∈ ri, dentrykey(ino, str) ∈ ri, fs[ri[inodekey(ino)]].nlink ≠ 0 ∨ ino = ROOT_INO ⊦ fs[(ri \ orphans(fs, ri))[dentrykey(ino, str)]].ino = fs[ri[dentrykey(ino, str)]].ino, fs[ri[inodekey(ino)]].nlink = 0 ∧ ino ≠ ROOT_INO
Used simplifier rules: ⊦ ¬ dentrykey(m, str).inode?; (s)%⊦ key ∈ orphans(fs, ri) ↔ key.inode? ∧ key ∈ ri ∧ fs[ri[key]].nlink = 0 ∧ key.ino ≠ ROOT_INO; (s)% ⊦ key ∈ ri \ ks ↔ key ∈ ri ∧ ¬ key ∈ ks; (ws)