| dirs0 = dirs \ orphans(dirs, files), files0 = files \ orphans(dirs, files), 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 ⊦ ⌊EIO⌋ ∧ ⟨err := EIO; asynced := ?⟩ asynced, ⟨if boolvar then dirs[m].meta := md else {files[m].meta := md; files[m].size := m2}; err := ESUCCESS; asynced := ?⟩ (asynced ∧ dirs0 = dirs \ orphans(dirs, files) ∧ files0 = files \ orphans(dirs, files)) |
dirs0 = dirs \ orphans(dirs, files), files0 = files \ orphans(dirs, files), 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 ⊦ ⟨if boolvar then dirs[m].meta := md else {files[m].meta := md; files[m].size := m2}; err := ESUCCESS; asynced := ?⟩ (asynced ∧ dirs0 = dirs \ orphans(dirs, files) ∧ files0 = files \ orphans(dirs, files)), ⟨err := EIO; asynced := ?⟩ asynced
Used simplifier rules: ⊦ ⌊EIO⌋ ; (s)