| files[of[n].ino] = mkfile(m, md, m0, content), m0 = 0, afs-cons(dirs, files), afs-cons(dirs, files -- of[n].ino), of-cons(of, dirs, files), n ∈ of, of[n].ino ∈ files ⊦ of[n].ino = ROOT_INO, is-open(of[n].ino, of), of[n].ino ∈ dirs |
# links(of[n].ino, dirs) = 0, files[of[n].ino] = mkfile(m, md, 0, content), afs-cons(dirs, files -- of[n].ino), afs-cons(dirs, files), of-cons(of, dirs, files), of[n].ino ∈ files, n ∈ of ⊦ of[n].ino = ROOT_INO, is-open(of[n].ino, of), of[n].ino ∈ dirs
Used simplifier rules: ⊦ ino ∈ files -- ino0 ↔ ino ≠ ino0 ∧ ino ∈ files; (s)%⊦ afs-cons(dirs, files) → ( links(ino, dirs) = ∅ ↔ (ino ∈ dirs → dirs[ino].nlink = 0) ∧ (ino ∈ files → files[ino].nlink = 0)); (ws)%size-zero-02: ⊦ # ls = 0 → ls = ∅; (forward) from specification set-basic[alink-set]%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