| ((abs(tree, ino) * abs(sdt0, entries0) * ino0 => mkdir(# entries0 + 1, md, m0, m1, entries0[str, ino])))(dirs2 ∪ dirs ∪ dirs1), ((ino0 => mkdir(# entries0 + 1, md, m0, m1, entries0[str, ino]) * abs(sdt0, entries0)))(dirs1), abs(tree, ino)(dirs2 ∪ dirs), abs(tree[p0], ino1)(dirs2), abs(tree[p0], ino1)(dirs0), abs(tree, ino)(dirs0 ∪ dirs), p0 ∈ tree, dirs1 ⊥ dirs2, dirs2 ⊥ dirs, dirs1 ⊥ dirs, dirs0 ⊥ dirs1, dirs0 ⊥ dirs ⊦ (((abs(tree, ino) * abs(sdt0, entries0)) * ino0 => mkdir(# entries0 + 1, md, m0, m1, entries0[str, ino])))(dirs0 ∪ dirs ∪ dirs1), str ∈ entries0, str ∈ sdt0 |
⊦ (D * D0) * D1 = D * D0 * D1
((ino0 => mkdir(# entries0 + 1, md, m0, m1, entries0[str, ino]) * abs(sdt0, entries0)))(dirs1), ((abs(tree, ino) * abs(sdt0, entries0) * ino0 => mkdir(# entries0 + 1, md, m0, m1, entries0[str, ino])))(dirs2 ∪ dirs ∪ dirs1), abs(tree, ino)(dirs0 ∪ dirs), abs(tree[p0], ino1)(dirs0), abs(tree[p0], ino1)(dirs2), abs(tree, ino)(dirs2 ∪ dirs), p0 ∈ tree, dirs0 ⊥ dirs, dirs0 ⊥ dirs1, dirs1 ⊥ dirs, dirs2 ⊥ dirs, dirs1 ⊥ dirs2 ⊦ ((abs(tree, ino) * abs(sdt0, entries0) * ino0 => mkdir(# entries0 + 1, md, m0, m1, entries0[str, ino])))(dirs0 ∪ dirs ∪ dirs1), str ∈ sdt0, str ∈ entries0
Used simplifier rules: 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: ino0 => mkdir(# entries0 + 1, md, m0, m1, entries0[str, ino]), abs(sdt0, entries0), abs(tree, ino)