| 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(m8, md2, m11, 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(q0 + str ', ROOT_INO, m9, dirs, files), ispath(path, ROOT_INO, m, dirs, files), ispath(q0, ROOT_INO, m10, dirs, files), ispath(q1, ROOT_INO, m10, dirs, files), of-cons(of, dirs, files), pr(user, md1), px-parent(user, path, ROOT_INO, dirs, files), m10 ∈ dirs, str ' ∈ root[q0], m ∈ files, ROOT_INO ∈ dirs, str ∈ entries1, str ' ∈ root[q1], entries1[str] ∈ files, psynced → asynced ⊦ # links(⌜m⌝ , root) = 0, # links(m, dirs) = count(⌜m⌝ , root.fids), links(⌜m⌝ , root) = ∅, q0 = q1, root[path].dir?, m9 ∈ dirs, entries1[str] ∈ dirs, m ∈ dirs |
⊦ afs-cons(dirs, files) ∧ ino ∈ dirs ∧ dirs[ino] = mkdir(n, md, n0, n1, entries) → # entries = n
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(q0 + str ', ROOT_INO, m9, dirs, files), ispath(path, ROOT_INO, m, dirs, files), ispath(q0, ROOT_INO, m10, dirs, files), ispath(q1, ROOT_INO, m10, dirs, files), of-cons(of, dirs, files), pr(user, md1), px-parent(user, path, ROOT_INO, dirs, files), m10 ∈ dirs, str ' ∈ root[q0], m ∈ files, ROOT_INO ∈ dirs, str ∈ entries1, str ' ∈ root[q1], entries1[str] ∈ files, psynced → asynced ⊦ # links(⌜m⌝ , root) = 0, # links(m, dirs) = count(⌜m⌝ , root.fids), links(⌜m⌝ , root) = ∅, q0 = q1, root[path].dir?, m9 ∈ dirs, entries1[str] ∈ dirs, m ∈ dirs
Used simplifier rules: make-abs-fold-work: ⊦ afs-cons(dirs, files) ∧ ino ∈ dirs ∧ dirs[ino] = mkdir(n, md, n0, n1, entries) → # entries = n;%afs-cons-dir-nlink: ⊦ afs-cons(dirs, files) ∧ ino ∈ dirs ∧ dirs[ino] = mkdir(n0, md, n, n1, entries) → # links(ino, dirs) = n; (forward) from specification afs-base