| ⊦ valid-ino(ino0, abs-dirs(fs, ri), abs-files(fs, ri \ datakeys(inodekey(ino), n, ri))) ∧ links(ino0, abs-dirs(fs, ri)) = ∅ ∧ ino0 ≠ ROOT_INO ↔ (inodekey(ino0) ∈ ri ∧ fs[ri[inodekey(ino0)]].directory ∨ inodekey(ino0) ∈ ri ∧ ¬ fs[ri[inodekey(ino0)]].directory) ∧ links(ino0, abs-dirs(fs, ri)) = ∅, ino0 = ROOT_INO |
links(ino0, abs-dirs(fs, ri)) = ∅, fs[(ri \ datakeys(inodekey(ino), n, ri))[inodekey(ino0)]].directory, inodekey(ino0) ∈ ri ⊦ ino0 = ROOT_INO, fs[ri[inodekey(ino0)]].directory
Used simplifier rules: in-dirs: ⊦ ino ∈ abs-dirs(fs, ri) ↔ inodekey(ino) ∈ ri ∧ fs[ri[inodekey(ino)]].directory;%in-files: ⊦ ino ∈ abs-files(fs, ri) ↔ inodekey(ino) ∈ ri ∧ ¬ fs[ri[inodekey(ino)]].directory;% ⊦ ¬ inodekey(m).data?; (s)%⊦ key ∈ datakeys(key0, ri) ↔ key ∈ ri ∧ key.data? ∧ key0.inode? ∧ key.ino = key0.ino; (s)%⊦ key ∈ datakeys(key0, n, ri) ↔ key ∈ datakeys(key0, ri) ∧ n ≤ key.part * VFS_PAGE_SIZE; (s)% ⊦ key ∈ ri \ ks ↔ key ∈ ri ∧ ¬ key ∈ ks; (ws)% ⊦ valid-ino(ino, dirs, files) ↔ ino ∈ dirs ∨ ino ∈ files; (s)