| fid = ⌜m⌝ , ∀ ino. (ino ∈ files0 ↔ ino ∈ files1) ∧ ( ino ∈ files0 → files0[ino].size = files1[ino].size ∧ files0[ino].meta = files1[ino].meta ∧ files0[ino].nlink = files1[ino].nlink ∧ files0[ino].content.stream to files0[ino].size = files1[ino].content.stream to files1[ino].size) ⊦ (fid ∈ abs-files(files0) ↔ fid ∈ abs-files(files1)) ∧ (fid ∈ abs-files(files0) → abs-files(files0)[fid] = abs-files(files1)[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)
∀ ino. (ino ∈ files0 ↔ ino ∈ files1) ∧ ( ino ∈ files0 → files0[ino].size = files1[ino].size ∧ files0[ino].meta = files1[ino].meta ∧ files0[ino].nlink = files1[ino].nlink ∧ files0[ino].content.stream to files0[ino].size = files1[ino].content.stream to files1[ino].size) ⊦ (m ∈ files0 ↔ m ∈ files1) ∧ (m ∈ files0 → mkfile(files0[m].meta, (files0[m].content.stream to files0[m].size).buf) = abs-files(files1)[⌜m⌝ ])
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);