| # entries = m + 1, tree[p] = dnode(md, sdt), ((abs|(tree, ROOT_INO, p, ino0) * ino0 => mkdir(m, md, m0, m1, entries -- str) * abs(sdt -- str, entries -- str) * D))(dirs), str ∈ entries, p ∈ tree ⊦ entries = ∅, ((abs(tree[p, dnode(md, sdt -- str)], ROOT_INO) * D))(dirs) |
⊦ p ∈ tree → abs(tree, ino0) = _∃(λ ino1. abs|(tree, ino0, p, ino1) * abs(tree[p], ino1))
# entries = m + 1, tree[p] = dnode(md, sdt), ((abs|(tree, ROOT_INO, p, ino0) * ino0 => mkdir(m, md, m0, m1, entries -- str) * abs(sdt -- str, entries -- str) * D))(dirs), p ∈ tree, str ∈ entries, p ∈ tree[p, dnode(md, sdt -- str)] ⊦ entries = ∅, ((_∃(λ ino1. abs|(tree[p, dnode(md, sdt -- str)], ROOT_INO, p, ino1) * abs(tree[p, dnode(md, sdt -- str)][p], ino1)) * D))(dirs)
Used simplifier rules: ⊦ p ∈ tree → p ∈ tree[p, tree0]; (s) Used terms: p, ROOT_INO, tree[p, dnode(md, sdt -- str)]