| tree[p] = fnode(⌜ino1⌝ ), links(ino1, dirs) = ∅, abs(tree, ino0)(dirs), ispath(p, ino0, dirs, files), p ∈ tree, ino0 ∈ dirs, ino1 ∈ files, ∀ ino. ⌜ino⌝ ∈ tree.fids → ino ∈ files, ∀ ino. ¬ ino ∈ files ∨ ¬ ino ∈ dirs ⊦ |
⊦ abs(fnode(fid), ino) = (emp ∧ ⌜ino = fid.ino⌝ )
tree[p] = fnode(⌜ino1⌝ ), links(ino1, dirs) = ∅, abs(tree, ino0)(dirs), ispath(p, ino0, dirs, files), ino1 ∈ files, ino0 ∈ dirs, p ∈ tree, ∀ ino. ¬ ino ∈ files ∨ ¬ ino ∈ dirs, ∀ ino. ⌜ino⌝ ∈ tree.fids → ino ∈ files ⊦ p = ε
Used simplifier rules: abs-fnode: ⊦ abs(fnode(fid), ino) = (emp ∧ ⌜ino = fid.ino⌝ );% ⊦ tree[ε] = tree; (s)% ⊦ ε ∈ tree; (s)% ⊦ ispath(ε, n, dirs, files) ↔ n ∈ dirs ∨ n ∈ files; (s)% ⊦ ⌜m⌝ .ino = m; (s)% ⊦ ((D ∧ D0))(dirs) ↔ D(dirs) ∧ D0(dirs); (s)% ⊦ emp(dirs) ↔ dirs = ∅; (s)% ⊦ ⌜bv⌝ (dirs) ↔ bv; (s)%and-ass: ⊦ ((D ∧ D0) ∧ D1) = (D ∧ D0 ∧ D1); from specification heap-sep[dir-heap]%and-com: ⊦ (D ∧ D0) = (D0 ∧ D); from specification heap-sep[dir-heap]% ⊦ fnode(fid).fids = {fid} ; (s)% ⊦ fid ∈ {fid0} ↔ fid = fid0; (s)% ⊦ ⌜m⌝ = ⌜m0⌝ ↔ m = m0; (s)% ⊦ ¬ ino ∈ ∅; (s) Used formulas: p = ε