| ad.meta = sdt[str].meta, ad.size = # ad.entries, entries[str] = ROOT_INO, tree[p] = dnode(md0, sdt), (( ( ((ROOT_INO => ad * abs(sdt[str].entries, ad.entries)) * ino => mkdir(# entries, md0, # links(ino, dirs), m2, entries)) * abs(sdt -- str, entries -- str)) * abs|(tree, ROOT_INO, p, ino)) )(dirs), sdt[str].dir?, abs(tree, ROOT_INO)(dirs), afs-cons(dirs, files), fids-cons(tree, abs-files(files), ofh), ispath(p, ROOT_INO, ino, dirs, files), str ∈ entries, str ∈ sdt ⊦ |
tree[p] = dnode(md0, sdt), entries[str] = ROOT_INO, ad = mkdir(m, md, m0, m1, entries0), m = # entries0, md = sdt[str].meta, (( ( ((ROOT_INO => ad * abs(sdt[str].entries, entries0)) * ino => mkdir(# entries, md0, # links(ino, dirs), m2, entries)) * abs(sdt -- str, entries -- str)) * abs|(tree, ROOT_INO, p, ino)) )(dirs), sdt[str].dir?, abs(tree, ROOT_INO)(dirs), afs-cons(dirs, files), fids-cons(tree, abs-files(files), ofh), ispath(p, ROOT_INO, ino, dirs, files), str ∈ sdt, str ∈ entries ⊦
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, m, md0, m1, m2, entries0