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