| root[q0][str '] = fnode(⌜m⌝ ), root[q1 + str '] = fnode(⌜m⌝ ), dirs[lookup(parent(p), ROOT_INO, dirs, files)] = mkdir(m2, md, m3, m4, entries), files[m] = mkfile(m0, md1, # links(m, dirs), content), dirs[m1] = mkdir(m5, md0, m6, m7, entries0), dirs[m10] = mkdir(# entries1, md2, # links(m10, dirs), m12, entries1), root[q0].dir?, root.dir?, root[q1].dir?, dom of < ino6, abs(root, ROOT_INO)(dirs), afs-cons(dirs, files), fids-cons(root, abs-files(files), abs-of(of)), ispath(path, ROOT_INO, m, dirs, files), ispath(q1, ROOT_INO, m10, dirs, files), ispath(q0, ROOT_INO, m10, dirs, files), of-cons(of, dirs, files), pr(user, md1), px-parent(user, path, ROOT_INO, dirs, files), str ' ∈ root[q0], m ∈ files, ROOT_INO ∈ dirs, str ' ∈ root[q1], m10 ∈ dirs, str ∈ entries1, entries1[str] ∈ files, psynced → asynced ⊦ # links(⌜m⌝ , root) = 0, # links(m, dirs) = count(⌜m⌝ , root.fids), links(⌜m⌝ , root) = ∅, q0 = q1, root[path].dir?, m ∈ dirs, entries1[str] ∈ dirs |
abs(tree, ino0)(dirs), ∀ ino. ¬ ino ∈ files ∨ ¬ ino ∈ dirs, ∀ ino. ⌜ino⌝ ∈ tree.fids → ino ∈ files, ispath(p0, ino0, ino1, dirs, files), ispath(p1, ino0, ino1, dirs, files), ino1 ∈ dirs ⊦ p0 = p1
⊦ ⌜n⌝ ∈ tree.fids ∧ abs(tree, ino)(dirs) ∧ fids-cons(tree, abs-files(files), ofh) → n ∈ files
Used simplifier rules: fid-file: ⊦ ⌜n⌝ ∈ tree.fids ∧ abs(tree, ino)(dirs) ∧ fids-cons(tree, abs-files(files), ofh) → n ∈ files;% ⊦ afs-cons(dirs, files) ∧ ino ∈ dirs → ¬ ino ∈ files; (s) Used terms: root, ROOT_INO, dirs, files, q0, m10, q1