| orphans(fs0, ri1).inodes?, fo0.inodes?, afs-cons(abs-dirs(fs0, ri1), abs-files(fs0, ri1)), file-node-cons(fs0, ri1), file-node-cons(fs0, ri1 ⊖ orphans(fs0, ri1)), log-cons(log0, fs0), orphans-cons(fs0, ri1, orphans(fs0, ri1)), orphans-cons(fs0, ri1 ⊖ orphans(fs0, ri1), ∅), replay-safe(log0, fs0, fi0 ⊖ fo0), ri-inj(ri1), ri-inj(fi0), ri-inj(ri1 ⊖ orphans(fs0, ri1)), ubifs-cons(fs0, ri1, orphans(fs0, ri1), fi0, fo0, log0), ubifs-cons(fs0, ri1 ⊖ orphans(fs0, ri1), ∅, fi0, fo0, log0), datakey(ino, n) ∈ ri1, inodekey(ino) ∈ ri1, fs0[ri1[inodekey(ino)]].nlink ≠ 0 ∨ ino = ROOT_INO ⊦ fs0[ri1[inodekey(ino)]].directory, datakey(ino, n) ∈ ri1 ⊖ orphans(fs0, ri1), fs0[ri1[inodekey(ino)]].nlink = 0 ∧ ino ≠ ROOT_INO |
⊦ ri ⊖ ks = (ri \ ks) \ datakeys(ks, ri)
Used simplifier rules: ⊦ key ∈ ri \ ks ↔ key ∈ ri ∧ ¬ key ∈ ks; (ls)% ⊦ ks.inodes? → ¬ datakey(ino, n) ∈ ks; (s)%⊦ key ∈ datakeys(ks, ri) ↔ key ∈ ri ∧ key.data? ∧ inodekey(key.ino) ∈ ks; (s)% ⊦ datakey(m, m0).data?; (s)% ⊦ datakey(m, m0).ino = m; (s)%⊦ 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: orphans(fs0, ri1), ri1