| ((((abs|(sdt[str0], entries[str0], q0, ino1) * abs(sdt -- str0, entries -- str0)) * ino0 => mkdir(# entries, md, m0, m1, entries)) * D))(dirs), ((abs|(sdt[str0][p0, tree0], entries[str0], q0, ino1) * D * ino0 => mkdir(# entries, md, m0, m1, entries) * abs(sdt -- str0, entries -- str0)) )(dirs), sdt[str0][parent(p0)].dir?, str0 ∈ entries, str0 ∈ sdt, parent(p0) ∈ sdt[str0], q0 ⊑ p0 ⊦ p0 = ε, ∃ ad0. str0 ∈ ad0.entries ∧ ad0.meta = md ∧ ad0.size = # ad0.entries ∧ ((((abs|(sdt[str0][p0, tree0], ad0.entries[str0], q0, ino1) * abs(sdt -- str0, ad0.entries -- str0)) * ino0 => ad0) * D))(dirs) |
Used simplifier rules: ⊦ mkdir(m, md, m0, m1, entries).entries = entries; (s)% ⊦ mkdir(m, md, m0, m1, entries).meta = md; (s)% ⊦ mkdir(m, md, m0, m1, entries).size = m; (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] Used terms: mkdir(# entries, md, m0, m1, entries)