| tree[p] = dnode(md, sdt), abs(tree0, ino1) = emp, ((abs|(tree, ROOT_INO, p, ino0) * ino0 => mkdir(# entries + 1, md, m0, m1, entries[str, ino1]) * abs(sdt, entries)))(dirs), p ∈ tree ⊦ abs(tree[p + str ', tree0], ROOT_INO)(dirs), str ∈ entries |
D ⊆ abs(tree0, ino1) ⊦ ¬ str ∈ entries ∧ p ∈ tree ∧ 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) → abs(tree[p + str ', tree0], ROOT_INO)(dirs)
Used simplifier rules: ⊦ emp * D = D; (s)%sep-ass: ⊦ (D * D0) * D1 = D * D0 * D1; from specification heap-sep[dir-heap]%sep-com: ⊦ D * D0 = D0 * D; from specification heap-sep[dir-heap]% ⊦ D ⊆ D; (s) Used terms: emp, tree0, ino1, str, entries, p, tree, md, sdt, ino0, m0, m1, dirs