| ad.size = # ad.entries, tree[p] = dnode(ad.meta, sdt), ((((m => ad * abs(sdt, ad.entries)) * abs|(tree, ino, p, m)) * D))(dirs), ispath(p, ino, m, dirs, files), p ∈ tree, ∀ ino. ¬ ino ∈ files ∨ ¬ ino ∈ dirs, ∀ ino. ⌜ino⌝ ∈ tree.fids → ino ∈ files ⊦ ad.meta = dirs[m].meta |
tree[p] = dnode(md, sdt), ad = mkdir(m0, md, m1, m2, entries), m0 = # entries, ((((m => ad * abs(sdt, entries)) * abs|(tree, ino, p, m)) * D))(dirs), ispath(p, ino, m, dirs, files), p ∈ tree, ∀ ino. ⌜ino⌝ ∈ tree.fids → ino ∈ files, ∀ ino. ¬ ino ∈ files ∨ ¬ ino ∈ dirs ⊦ md = dirs[m].meta
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: ad, m0, md, m1, m2, entries