| ad.size = # ad.entries, (((ino0 => ad * abs(sdt, ad.entries)) * D))(dirs), str ∈ ad.entries, p0 ∈ sdt[str], str ∈ sdt, ∀ tree, ino0, D, dirs. ((abs(tree, ino0) * D))(dirs) ∧ p0 ∈ tree → (∃ ino. (((abs|(tree, ino0, p0, ino) * abs(tree[p0], ino)) * D))(dirs)) ⊦ ∃ ino, ad0. str ∈ ad0.entries ∧ ad0.meta = ad.meta ∧ ad0.size = # ad0.entries ∧ (((((abs|(sdt[str], ad0.entries[str], p0, ino) * abs(sdt -- str, ad0.entries -- str)) * ino0 => ad0) * abs(sdt[str][p0], ino)) * D))(dirs) |
ad = mkdir(m, md, m0, m1, entries), m = # entries, (((ino0 => ad * abs(sdt, entries)) * D))(dirs), str ∈ sdt, p0 ∈ sdt[str], str ∈ entries, ∀ tree, ino0, D, dirs. ((abs(tree, ino0) * D))(dirs) ∧ p0 ∈ tree → (∃ ino. (((abs|(tree, ino0, p0, ino) * abs(tree[p0], ino)) * D))(dirs)) ⊦ ∃ ino, ad0. str ∈ ad0.entries ∧ ad0.meta = md ∧ ad0.size = # ad0.entries ∧ (((((abs|(sdt[str], ad0.entries[str], p0, ino) * abs(sdt -- str, ad0.entries -- str)) * ino0 => ad0) * abs(sdt[str][p0], ino)) * 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