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