| fs[⌜ino0⌝ ] = mkfile(md, (content.stream to m).buf), files1[ino0] = mkfile(m, md, m0, content), tree0.dir?, dom of1 < ino, abs(tree0, ROOT_INO)(dirs0), afs-cons(dirs0, files1), afs-cons(dirs0, files1 \ orphans(dirs0, files1)), fids-cons(tree0, abs-files(files1), abs-of(of1)), of-cons(of1, dirs0, files1), of-cons(∅, dirs0, files1 \ orphans(dirs0, files1)), ⌜ino0⌝ ∈ fs, ino0 ∈ files1, ∀ ino. ⌜ino⌝ ∈ tree0.fids → ino ∈ files1 ⊦ # links(ino0, dirs0) = 0, links(ino0, dirs0) = ∅, mkfile(md, (content.stream to m).buf) = abs-files(files1 \ orphans(dirs0, files1))[⌜ino0⌝ ] |
fs[⌜ino0⌝ ] = mkfile(md, (content.stream to m).buf), files1[ino0] = mkfile(m, md, # links(ino0, dirs0), content), tree0.dir?, dom of1 < ino, abs(tree0, ROOT_INO)(dirs0), afs-cons(dirs0, files1), afs-cons(dirs0, files1 \ orphans(dirs0, files1)), fids-cons(tree0, abs-files(files1), abs-of(of1)), of-cons(of1, dirs0, files1), of-cons(∅, dirs0, files1 \ orphans(dirs0, files1)), ⌜ino0⌝ ∈ fs, ino0 ∈ files1, ∀ ino. ⌜ino⌝ ∈ tree0.fids → ino ∈ files1 ⊦ # links(ino0, dirs0) = 0, links(ino0, dirs0) = ∅, mkfile(md, (content.stream to m).buf) = abs-files(files1 \ orphans(dirs0, files1))[⌜ino0⌝ ]
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