| abs(tree, ino0)(dirs), ino0 ∈ dirs, ino1 ∈ files, ∀ ino. ⌜ino⌝ ∈ tree.fids → ino ∈ files, ∀ ino. ¬ ino ∈ files ∨ ¬ ino ∈ dirs ⊦ # links(ino1, dirs) = 0, ⌜ino1⌝ ∈ tree.fids, ∀ alink. alink ∈ links(ino1, dirs) ↔ alink ∈ ∅ |
abs(tree, ino0)(dirs), dirs[alink.pino].entries[alink.name] ∈ files, ino0 ∈ dirs, alink.pino ∈ dirs, alink.name ∈ dirs[alink.pino].entries, ∀ ino. ¬ ino ∈ files ∨ ¬ ino ∈ dirs, ∀ ino. ⌜ino⌝ ∈ tree.fids → ino ∈ files ⊦ # links(dirs[alink.pino].entries[alink.name], dirs) = 0, links(dirs[alink.pino].entries[alink.name], dirs) = ∅, ⌜dirs[alink.pino].entries[alink.name]⌝ ∈ 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]% ⊦ ¬ alink ∈ ∅; (s)%⊦ alink ∈ links(ino, dirs) ↔ alink.pino ∈ dirs ∧ alink.name ∈ dirs[alink.pino].entries ∧ ino = dirs[alink.pino].entries[alink.name]; (s)