| fid = ⌜ino0⌝ ⊦ fid = ⌜ino⌝ , ino = 0, ino ∈ files, (fid ∈ abs-files(files) ↔ fid ∈ abs-files((files ++ ino)[ino, mkfile(0, md, 1, ∅)])) ∧ (fid ∈ abs-files(files) → abs-files(files)[fid] = abs-files((files ++ ino)[ino, mkfile(0, md, 1, ∅)])[fid]) |
⊦ ⌜ino⌝ ∈ abs-files(files) ↔ ino ∈ files
⊦ ino ∈ files → abs-files(files)[⌜ino⌝ ] = mkfile(files[ino].meta, (files[ino].content.stream to files[ino].size).buf)
ino0 ∈ files ⊦ ino = 0, mkfile(files[ino0].meta, (files[ino0].content.stream to files[ino0].size).buf) = abs-files((files ++ ino)[ino, mkfile(0, md, 1, ∅)])[⌜ino0⌝ ], ino ∈ files
Used simplifier rules: abs-files-in: ⊦ ⌜ino⌝ ∈ abs-files(files) ↔ ino ∈ files;%abs-files-at: ⊦ ino ∈ files → abs-files(files)[⌜ino⌝ ] = mkfile (files[ino].meta, (files[ino].content.stream to files[ino].size).buf);%ino ≠ 0, ¬ ino ∈ files ⊦ ino0 ∈ files ++ ino ↔ ino0 = ino ∨ ino0 ∈ files; (s)% ⊦ ino ∈ files[ino0, af] ↔ ino ∈ files; (s)% ⊦ ⌜m⌝ = ⌜m0⌝ ↔ m = m0; (s)