| inodekey(ino) ∈ ri ⊦ abs-files(fs, ri -- inodekey(ino)) = abs-files(fs, ri) -- ino, fs[ri[inodekey(ino)]].directory |
inodekey(ino) ∈ ri, inodekey(ino0) ∈ ri, datakey(ino0, n) ∈ ri ⊦ abs-content(ino0, fs, ri -- inodekey(ino))[n] = fs[ri[datakey(ino0, n)]].data, ino0 = ino, fs[ri[inodekey(ino)]].directory, fs[ri[inodekey(ino0)]].directory
Used simplifier rules: F-ext: ⊦ files = abs-files(fs, ri) ↔ (∀ ino. ( ino ∈ files ↔ inodekey(ino) ∈ ri ∧ ¬ fs[ri[inodekey(ino)]].directory) ∧ (ino ∈ files → files[ino] = abs-file(ino, fs, ri)));%in-files: ⊦ ino ∈ abs-files(fs, ri) ↔ inodekey(ino) ∈ ri ∧ ¬ fs[ri[inodekey(ino)]].directory;%at-files: ⊦ inodekey(ino) ∈ ri ∧ ¬ fs[ri[inodekey(ino)]].directory → abs-files(fs, ri)[ino] = abs-file(ino, fs, ri);%file: ⊦ abs-file(ino, fs, ri) = mkfile (fs[ri[inodekey(ino)]].size, fs[ri[inodekey(ino)]].meta, fs[ri[inodekey(ino)]].nlink, abs-content(ino, fs, ri));%F-inj: ⊦ mkfile(m0, md0, n0, content0) = mkfile(m1, md1, n1, content1) ↔ ¬(n0 ≠ n1 ∨ md0 ≠ md1 ∨ m0 ≠ m1 ∨ content0 ≠ content1);%P-ext: ⊦ content = abs-content(ino, fs, ri) ↔ (∀ n. (n ∈ content ↔ datakey(ino, n) ∈ ri) ∧ (n ∈ content → content[n] = fs[ri[datakey(ino, n)]].data));%in-content: ⊦ n ∈ abs-content(ino, fs, ri) ↔ datakey(ino, n) ∈ ri;% ⊦ inodekey(m) ≠ datakey(m0, m1); (s)%ino ∈ files ⊦ ino ≠ ino0 → (files -- ino0)[ino] = files[ino]; (s)%key ≠ key0 ⊦ (ri -- key0)[key] = ri[key]; (s)% ⊦ inodekey(m) = inodekey(m0) ↔ m = m0; (s)% ⊦ key ∈ ri -- key0 ↔ key ≠ key0 ∧ key ∈ ri; (s)% ⊦ ino ∈ files -- ino0 ↔ ino ≠ ino0 ∧ ino ∈ files; (s)