| inodekey(ino) ∈ ri ⊦ fs[ri[inodekey(ino)]].directory, fs[ri[inodekey(ino)]].nlink = 0 ∧ ino ≠ ROOT_INO, (¬ fs[(ri \ orphans(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))) = mkfile(fs[ri[inodekey(ino)]].size, fs[ri[inodekey(ino)]].meta, fs[ri[inodekey(ino)]].nlink, abs-content(ino, fs, ri))) |
⊦ ¬ key ∈ ks → (ri \ ks)[key] = ri[key]
inodekey(ino) ∈ ri ⊦ fs[ri[inodekey(ino)]].directory, inodekey(ino) ∈ orphans(fs, ri), (¬ fs[ri[inodekey(ino)]].directory ↔ fs[ri[inodekey(ino)]].nlink ≠ 0 ∨ ino = ROOT_INO) ∧ ( inodekey(ino) ∈ ri \ orphans(fs, ri) ∧ ¬ fs[ri[inodekey(ino)]].directory → mkfile(fs[ri[inodekey(ino)]].size, fs[ri[inodekey(ino)]].meta, fs[ri[inodekey(ino)]].nlink, abs-content(ino, fs, ri \ orphans(fs, ri))) = mkfile(fs[ri[inodekey(ino)]].size, fs[ri[inodekey(ino)]].meta, fs[ri[inodekey(ino)]].nlink, abs-content(ino, fs, ri))), 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)% ⊦ inodekey(m).inode?; (s)% ⊦ inodekey(m).ino = m; (s) Used terms: inodekey(ino), orphans(fs, ri), ri