| files[m] = mkfile(m0, md1, # links(m, dirs), content), root.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), of-cons(of, dirs, files), pr(user, md1), px-parent(user, path, ROOT_INO, dirs, files), m ∈ files, ROOT_INO ∈ dirs, psynced → asynced ⊦ # links(m, dirs) = count(⌜m⌝ , root.fids), root[path].dir?, m ∈ dirs, ( p ∈ links(⌜m⌝ , root) → lookup(parent(p), ROOT_INO, dirs, files) ∈ dirs ∧ p.last ∈ dirs[lookup(parent(p), ROOT_INO, dirs, files)].entries ∧ m = dirs[lookup(parent(p), ROOT_INO, dirs, files)].entries[p.last]) ∧ ( m1 ∈ dirs ∧ str ∈ dirs[m1].entries ∧ m = dirs[m1].entries[str] → (∃ p0. p0 ∈ links(⌜dirs[lookup(parent(p0), ROOT_INO, dirs, files)].entries[p0.last]⌝ , root) ∧ mklink(lookup(parent(p0), ROOT_INO, dirs, files), p0.last) = mklink(m1, str))) ∧ ( p0 ∈ links(⌜m⌝ , root) ∧ q ∈ links(⌜m⌝ , root) ∧ mklink(lookup(parent(p0), ROOT_INO, dirs, files), p0.last) = mklink(lookup(parent(q), ROOT_INO, dirs, files), q.last) → p0 = q) |
files[m] = mkfile(m0, md1, # links(m, dirs), content), dirs[lookup(parent(p), ROOT_INO, dirs, files)] = mkdir(m2, md, m3, m4, entries), root.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), of-cons(of, dirs, files), pr(user, md1), px-parent(user, path, ROOT_INO, dirs, files), ROOT_INO ∈ dirs, m ∈ files, psynced → asynced ⊦ # links(m, dirs) = count(⌜m⌝ , root.fids), root[path].dir?, m ∈ dirs, (p ∈ links(⌜m⌝ , root) → lookup(parent(p), ROOT_INO, dirs, files) ∈ dirs ∧ p.last ∈ entries ∧ m = entries[p.last]) ∧ ( m1 ∈ dirs ∧ str ∈ dirs[m1].entries ∧ m = dirs[m1].entries[str] → (∃ p0. p0 ∈ links(⌜dirs[lookup(parent(p0), ROOT_INO, dirs, files)].entries[p0.last]⌝ , root) ∧ mklink(lookup(parent(p0), ROOT_INO, dirs, files), p0.last) = mklink(m1, str))) ∧ ( p0 ∈ links(⌜m⌝ , root) ∧ q ∈ links(⌜m⌝ , root) ∧ mklink(lookup(parent(p0), ROOT_INO, dirs, files), p0.last) = mklink(lookup(parent(q), ROOT_INO, dirs, files), q.last) → p0 = q)
Used simplifier rules: ⊦ ( ((m = ad.size ∧ md = ad.meta) ∧ m0 = ad.nlink) ∧ m1 = ad.nsubdirs) ∧ entries = ad.entries ↔ ad = mkdir(m, md, m0, m1, entries); (elim) Used terms: dirs[lookup(parent(p), ROOT_INO, dirs, files)], m2, md0, m3, m4, entries