| ⊦ (_∃(λ ad. (⌜ad.entries = ∅⌝ ∧ ino => ad) ∧ ⌜ad.meta = md⌝ ∧ ⌜ad.size = # ad.entries⌝ ))(dirs) ↔ (_∃(λ m, m0. ino => mkdir(0, md, m, m0, ∅)))(dirs) |
⊦ (∃ ad. ad.entries = ∅ ∧ ((ino => ad))(dirs) ∧ ad.meta = md ∧ ad.size = # ad.entries) ↔ (∃ ino1, ino0. ((ino => mkdir(0, md, ino1, ino0, ∅)))(dirs))
Used simplifier rules: ⊦ (_∃ nnD)(dirs) ↔ (∃ ino, ino0. nnD(ino, ino0)(dirs)); (s)%and-com: ⊦ (D ∧ D0) = (D0 ∧ D); from specification heap-sep[dir-heap]%and-ass: ⊦ ((D ∧ D0) ∧ D1) = (D ∧ D0 ∧ D1); from specification heap-sep[dir-heap]% ⊦ ⌜bv⌝ (dirs) ↔ bv; (s)% ⊦ ((D ∧ D0))(dirs) ↔ D(dirs) ∧ D0(dirs); (s)% ⊦ (_∃ adD)(dirs) ↔ (∃ ad. adD(ad)(dirs)); (s)