| ad.size = # ad.entries, (((((abs|(sdt[str], ad.entries[str], p0, ino) * abs(sdt -- str, ad.entries -- str)) * ino0 => ad) * abs(sdt[str][p0], ino)) * D))(dirs), str ∈ ad.entries, p0 ∈ sdt[str], str ∈ sdt, ∀ tree, ino0, ino, D, dirs. (((abs|(tree, ino0, p0, ino) * abs(tree[p0], ino)) * D))(dirs) ∧ p0 ∈ tree → ((abs(tree, ino0) * D))(dirs) ⊦ ∃ ad0. ad0.meta = ad.meta ∧ ad0.size = # ad0.entries ∧ (((ino0 => ad0 * abs(sdt, ad0.entries)) * D))(dirs) |
ad = mkdir(m, md, m0, m1, entries), m = # entries, (((((abs|(sdt[str], entries[str], p0, ino) * abs(sdt -- str, entries -- str)) * ino0 => ad) * abs(sdt[str][p0], ino)) * D))(dirs), str ∈ sdt, p0 ∈ sdt[str], str ∈ entries, ∀ tree, ino0, ino, D, dirs. (((abs|(tree, ino0, p0, ino) * abs(tree[p0], ino)) * D))(dirs) ∧ p0 ∈ tree → ((abs(tree, ino0) * D))(dirs) ⊦ ∃ ad0. ad0.meta = md ∧ ad0.size = # ad0.entries ∧ (((ino0 => ad0 * abs(sdt, ad0.entries)) * D))(dirs)
Used simplifier rules: ⊦ ( ((m = ad.size ∧ md = ad.meta) ∧ m0 = ad.nlink) ∧ m1 = ad.nsubdirs) ∧ entries = ad.entries ↔ ad = mkdir(m, md, m0, m1, entries); (elim) Used terms: ad, m, md, m0, entries