| files[ino0] = mkfile(m, md, m0, content), dom of < ino1, afs-cons(dirs, files), ispath(p, ROOT_INO, ino0, dirs, files), of-cons(of, dirs, files), px-parent(user, p, ROOT_INO, dirs, files), ino0 ∈ files, of[n].ino ∈ files, n ∈ of, n ∈ of[ino1, mkfile(ino0, mode, 0)] ⊦ ino0 ∈ dirs, of[ino1, mkfile(ino0, mode, 0)][n].ino ∈ files, (mode = MODE_R ∨ mode = MODE_RW) ∧ ¬ pr(user, md), (mode = MODE_W ∨ mode = MODE_RW) ∧ ¬ pw(user, md) |
files[ino0] = mkfile(m, md, # links(ino0, dirs), content), dom of < ino1, afs-cons(dirs, files), ispath(p, ROOT_INO, ino0, dirs, files), of-cons(of, dirs, files), px-parent(user, p, ROOT_INO, dirs, files), ino0 ∈ files, of[n].ino ∈ files, n ∈ of, n ∈ of[ino1, mkfile(ino0, mode, 0)] ⊦ ino0 ∈ dirs, of[ino1, mkfile(ino0, mode, 0)][n].ino ∈ files, (mode = MODE_R ∨ mode = MODE_RW) ∧ ¬ pr(user, md), (mode = MODE_W ∨ mode = MODE_RW) ∧ ¬ pw(user, md)
Used simplifier rules: afs-cons-file-nlink: ⊦ afs-cons(dirs, files) ∧ ino ∈ files ∧ files[ino] = mkfile(m, md, n, content) → # links(ino, dirs) = n; (forward) from specification afs-base