| afs-cons(dirs, files), m ∈ dirs ∧ m0 = dirs[m].nlink ∧ m2 = dirs[m].size ∧ m1 = dirs[m].nsubdirs ∧ boolvar ∨ m ∈ files ∧ m0 = files[m].nlink ∧ m1 = 0 ∧ ¬ boolvar ⊦ ⟪afs_write_inode#(mkinode(m, md, boolvar, m0, m1, m2); err, dirs, files; asynced)⟫ afs-cons(dirs, files) |
files[m] = mkfile(m3, md0, m4, content), afs-cons(dirs, files), m ∈ dirs ∧ m0 = dirs[m].nlink ∧ m2 = dirs[m].size ∧ m1 = dirs[m].nsubdirs ∧ boolvar ∨ m ∈ files ∧ m0 = m4 ∧ m1 = 0 ∧ ¬ boolvar ⊦ ⟪afs_write_inode#(mkinode(m, md, boolvar, m0, m1, m2); err, dirs, files; asynced)⟫ afs-cons(dirs, files)
Used simplifier rules: ⊦ ((m = af.size ∧ md = af.meta) ∧ m0 = af.nlink) ∧ content = af.content ↔ af = mkfile(m, md, m0, content); (elim) Used terms: files[m], m3, md0, m4, content