| 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) ⊦ ((abs|(tree[p, dnode(md, sdt[str, tree0])], ROOT_INO, p, ino0) * abs(dnode(md, sdt[str, tree0]), ino0)))(dirs), str ∈ entries |
⊦ abs(dnode(md, sdt), ino) = _∃(λ ad. ino => ad * abs(sdt, ad.entries) ∧ ⌜ad.meta = md⌝ ∧ ⌜ad.size = # ad.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) ⊦ (( abs|(tree[p, dnode(md, sdt[str, tree0])], ROOT_INO, p, ino0) * _∃(λ ad. ino0 => ad * abs(sdt[str, tree0], ad.entries) ∧ ⌜ad.meta = md⌝ ∧ ⌜ad.size = # ad.entries⌝ )) )(dirs), str ∈ entries
Used terms: ino0, sdt[str, tree0], md