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