| files1[ino0] = mkfile(m2, md0, # links(ino0, dirs), content0), files1[ino] = mkfile(m, md, m0, content), afs-cons(dirs, files1), ino ∈ files1, ino0 ∈ files1 ⊦ m = (ino = ino0 ⊃ mkfile(m2, md0, # links(ino0, dirs), content0 upto m2);files1[ino]).size ∧ md = (ino = ino0 ⊃ mkfile(m2, md0, # links(ino0, dirs), content0 upto m2);files1[ino]).meta ∧ m0 = (ino = ino0 ⊃ mkfile(m2, md0, # links(ino0, dirs), content0 upto m2);files1[ino]).nlink ∧ content.stream to m = (ino = ino0 ⊃ mkfile(m2, md0, # links(ino0, dirs), content0 upto m2);files1[ino]).content.stream to (ino = ino0 ⊃ mkfile(m2, md0, # links(ino0, dirs), content0 upto m2);files1[ino]).size, m2 % VFS_PAGE_SIZE ≠ 0 ∧ m2 / VFS_PAGE_SIZE ∈ content0 |
files1[ino0] = mkfile(m2, md0, # links(ino0, dirs), content0), files1[ino] = mkfile(m, md, # links(ino, dirs), content), afs-cons(dirs, files1), ino ∈ files1, ino0 ∈ files1 ⊦ m = (ino = ino0 ⊃ mkfile(m2, md0, # links(ino0, dirs), content0 upto m2);mkfile(m, md, # links(ino, dirs), content)).size ∧ md = (ino = ino0 ⊃ mkfile(m2, md0, # links(ino0, dirs), content0 upto m2);mkfile(m, md, # links(ino, dirs), content)).meta ∧ # links(ino, dirs) = (ino = ino0 ⊃ mkfile(m2, md0, # links(ino0, dirs), content0 upto m2);mkfile(m, md, # links(ino, dirs), content)).nlink ∧ content.stream to (ino = ino0 ⊃ mkfile(m2, md0, # links(ino0, dirs), content0 upto m2);mkfile(m, md, # links(ino, dirs), content)).size = (ino = ino0 ⊃ mkfile(m2, md0, # links(ino0, dirs), content0 upto m2);mkfile(m, md, # links(ino, dirs), content)).content.stream to (ino = ino0 ⊃ mkfile(m2, md0, # links(ino0, dirs), content0 upto m2);mkfile(m, md, # links(ino, dirs), content)).size, m2 % VFS_PAGE_SIZE ≠ 0 ∧ m2 / VFS_PAGE_SIZE ∈ content0
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