| ⊦ (fd0 ∈ abs-of(of)[fd, mkfh(⌜ino⌝ , mode, n)] ↔ fd0 ∈ of[fd, mkfile(ino, mode, n)]) ∧ (fd0 ∈ abs-of(of)[fd, mkfh(⌜ino⌝ , mode, n)] → abs-of(of)[fd, mkfh(⌜ino⌝ , mode, n)][fd0] = abs-of(of[fd, mkfile(ino, mode, n)])[fd0]) |
fd ∈ of ⊦ abs-of(of)[fd] = mkfh(⌜of[fd].ino⌝ , of[fd].mode, of[fd].pos)
⊦ fd ∈ abs-of(of) ↔ fd ∈ of
fd ∈ of ⊦ abs-of(of)[fd] = mkfh(⌜of[fd].ino⌝ , of[fd].mode, of[fd].pos)
Used simplifier rules: abs-of-at: fd ∈ of ⊦ abs-of(of)[fd] = mkfh(⌜of[fd].ino⌝ , of[fd].mode, of[fd].pos);%abs-of-in: ⊦ fd ∈ abs-of(of) ↔ fd ∈ of;%abs-of-at: fd ∈ of ⊦ abs-of(of)[fd] = mkfh(⌜of[fd].ino⌝ , of[fd].mode, of[fd].pos);% ⊦ fd ≠ fd0 → (fd ∈ ofh[fd0, fh] ↔ fd ∈ ofh); (s)% ⊦ fd ≠ fd0 → (fd ∈ of[fd0, file] ↔ fd ∈ of); (s)% ⊦ fd ≠ fd0 → ofh[fd0, fh][fd] = ofh[fd]; (s)% ⊦ fd ≠ fd0 → of[fd0, file][fd] = of[fd]; (s)% ⊦ fd ∈ ofh[fd, fh]; (s)% ⊦ fd ∈ of[fd, file]; (s)% ⊦ ofh[fd, fh][fd] = fh; (s)% ⊦ fd ∈ of[fd0, file] ↔ fd = fd0 ∨ fd ∈ of; (ws)% ⊦ of[fd, file][fd] = file; (s)% ⊦ mkfile(m, mode, m0).ino = m; (s)% ⊦ mkfile(m, mode, m0).mode = mode; (s)% ⊦ mkfile(m, mode, m0).pos = m0; (s) Used formulas: fd0 = fd