| datakey(ino, n) ∈ ri, inodekey(ino) ∈ ri, fs[ri[inodekey(ino)]].nlink ≠ 0 ∨ ino = ROOT_INO ⊦ fs[ri[inodekey(ino)]].directory, fs[ri[inodekey(ino)]].nlink = 0 ∧ ino ≠ ROOT_INO, datakey(ino, n) ∈ ri ⊖ orphans(fs, ri) ∧ fs[(ri ⊖ orphans(fs, ri))[datakey(ino, n)]].data = fs[ri[datakey(ino, n)]].data |
⊦ datakey(ino, n) ∈ ri ∧ ¬ datakey(ino, n) ∈ ks ∧ ¬ inodekey(ino) ∈ ks → (ri ⊖ ks)[datakey(ino, n)] = ri[datakey(ino, n)]
inodekey(ino) ∈ ri, datakey(ino, n) ∈ ri, fs[ri[inodekey(ino)]].nlink ≠ 0 ∨ ino = ROOT_INO ⊦ fs[ri[inodekey(ino)]].directory, inodekey(ino) ∈ orphans(fs, ri), datakey(ino, n) ∈ orphans(fs, ri), datakey(ino, n) ∈ ri ⊖ orphans(fs, ri) ∧ fs[ri[datakey(ino, n)]].data = fs[ri[datakey(ino, n)]].data, fs[ri[inodekey(ino)]].nlink = 0 ∧ ino ≠ ROOT_INO
Used simplifier rules: ⊦ key ∈ orphans(fs, ri) ↔ key.inode? ∧ key ∈ ri ∧ fs[ri[key]].nlink = 0 ∧ key.ino ≠ ROOT_INO; (s)% ⊦ ¬ datakey(m, m0).inode?; (s)% ⊦ inodekey(m).inode?; (s)% ⊦ inodekey(m).ino = m; (s) Used terms: n, ino, orphans(fs, ri), ri