| err = ESUCCESS, file = of1[fd], files = files1, files0 = files1, n = n1, n0 = n1, of = of1, of0 = of1, afs-cons(dirs, files1), of-cons(of1, dirs, files1), fd ∈ of, n1 ≤ # buf, of[fd].mode ≠ MODE_W → fd ∈ of ⊦ [err := EBADFD] (err = ESUCCESS ⊃ (files[file.ino].content.stream to files[file.ino].size).buf = splice(buf, 0, (files0[file.ino].content.stream to files0[file.ino].size).buf, file.pos, n) ∧ fd ∈ of0 ∧ of = of0[fd, file.pos:= (file.pos + n)] ∧ n ≤ n0 ∧ file.ino ∈ files0 ∧ file.ino ∈ files ∧ files[file.ino].meta = files0[file.ino].meta ∧ files -- file.ino = files0 -- file.ino ∧ (file.mode = MODE_W ∨ file.mode = MODE_RW) ;files ~ files0 ∧ of0 = of ∧ (err = EBADFD ∧ (fd ∈ of → file.mode ≠ MODE_W ∧ file.mode ≠ MODE_RW) ∨ ⌊err⌋ ) ), of[fd].mode = MODE_RW, of[fd].mode = MODE_W |
Used simplifier rules: ⊦ ESUCCESS ≠ EBADFD; (s)% ⊦ files ~ files; (s)