| alink = mklink(m, str), abs(tree, ino0)(dirs), str ∈ dirs[m].entries, m ∈ dirs, ino0 ∈ dirs, dirs[m].entries[str] ∈ files, ∀ ino. ⌜ino⌝ ∈ tree.fids → ino ∈ files, ∀ ino. ¬ ino ∈ files ∨ ¬ ino ∈ dirs ⊦ # links(dirs[m].entries[str], dirs) = 0, links(dirs[m].entries[str], dirs) = ∅, ⌜dirs[m].entries[str]⌝ ∈ tree.fids |
abs(tree, ino0)(dirs), dirs[m].entries[str] ∈ files, ino0 ∈ dirs, m ∈ dirs, str ∈ dirs[m].entries, ∀ ino. ¬ ino ∈ files ∨ ¬ ino ∈ dirs, ∀ ino. ⌜ino⌝ ∈ tree.fids → ino ∈ files ⊦ # links(dirs[m].entries[str], dirs) = 0, links(dirs[m].entries[str], dirs) = ∅, ⌜dirs[m].entries[str]⌝ ∈ tree.fids
Used simplifier rules: size-zero-01: ⊦ ls ≠ ∅ → # ls ≠ 0; (forward) from specification set-basic[alink-set]%size-zero: ⊦ # ls ≠ 0 → ls ≠ ∅; (forward) from specification set-basic[alink-set]