| tree[p].dir? ↔ m ∈ dirs, (((abs|(tree, ino, p, m) * abs(tree[p], m)) * D))(dirs), tree[p].dir?, ispath(p, ino, m, dirs, files), p ∈ tree, ∀ ino. ⌜ino⌝ ∈ tree.fids → ino ∈ files, ∀ ino. ¬ ino ∈ files ∨ ¬ ino ∈ dirs ⊦ tree[p].meta = meta(ε, m, dirs, files) |
(((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
Used simplifier rules: ⊦ ino ∈ dirs → meta(ε, ino, dirs, files) = dirs[ino].meta; (s)