| (((abs|(tree, ino, p, m) * abs(tree[p], m)) * D))(dirs), tree[p].dir?, ispath(p, ino, m, dirs, files), p ∈ tree, m ∈ dirs, ∀ ino. ¬ ino ∈ files ∨ ¬ ino ∈ dirs, ∀ ino. ⌜ino⌝ ∈ tree.fids → ino ∈ files ⊦ tree[p].meta = dirs[m].meta |
tree[p] = dnode(md, sdt), (((abs|(tree, ino, p, m) * abs(tree[p], m)) * D))(dirs), tree[p].dir?, ispath(p, ino, m, dirs, files), m ∈ dirs, p ∈ tree, ∀ ino. ⌜ino⌝ ∈ tree.fids → ino ∈ files, ∀ ino. ¬ ino ∈ files ∨ ¬ ino ∈ dirs ⊦ md = dirs[m].meta
Used simplifier rules: tree.dir? ⊦ md = tree.meta ∧ sdt = tree.entries ↔ tree = dnode(md, sdt); (elim) Used terms: tree[p], md, sdt