| (ino0 = ino ⊃ mkfile(m, md, m0, content);files[ino0]) = mkfile(m1, md0, m2, content0), ⌜ino0⌝ ∈ abs-files(files)[⌜ino⌝ , mkfile(md, (content.stream to m).buf)], ino ∈ files, ino0 ∈ files ⊦ abs-files(files)[⌜ino⌝ , mkfile(md, (content.stream to m).buf)][⌜ino0⌝ ] = mkfile(md0, (content0.stream to m1).buf) |
⊦ fid ≠ fid0 → fs[fid0, f][fid] = fs[fid]
⊦ ino ∈ files → abs-files(files)[⌜ino⌝ ] = mkfile(files[ino].meta, (files[ino].content.stream to files[ino].size).buf)
Used simplifier rules: abs-files-at: ⊦ ino ∈ files → abs-files(files)[⌜ino⌝ ] = mkfile (files[ino].meta, (files[ino].content.stream to files[ino].size).buf);% ⊦ ⌜m⌝ = ⌜m0⌝ ↔ m = m0; (s)% ⊦ mkfile(m, md, m0, content).meta = md; (s)% ⊦ mkfile(m, md, m0, content).content = content; (s)% ⊦ mkfile(m, md, m0, content).size = m; (s)%⊦ mkfile(m, md, m0, content) = mkfile(m1, md0, m2, content0) ↔ m = m1 ∧ md = md0 ∧ m0 = m2 ∧ content = content0; (ws)% ⊦ fs[fid, f][fid] = f; (s) Used terms: ⌜ino0⌝ , mkfile(md, (content.stream to m).buf), ⌜ino⌝ , abs-files(files)