| err = ESUCCESS, files = files1, files0 = files1, n = n1, n0 = n1, of = of1, of0 = of1, afs-cons(dirs, files1), of-cons(of1, dirs, files1), n1 ≤ # buf ⊦ [file := of0[fd]] (EBADFD = 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 ∧ (EBADFD = EBADFD ∧ (fd ∈ of → file.mode ≠ MODE_W ∧ file.mode ≠ MODE_RW) ∨ ⌊EBADFD⌋ ) ), fd ∈ of |
Used simplifier rules: ⊦ ESUCCESS ≠ EBADFD; (s)% ⊦ files ~ files; (s)