| range ri ∩ as = ∅ ⊦ ri[inodekey(ino)] ∈ as, (inodekey(ino) ∈ ri → (¬ fs[ri[inodekey(ino)]].directory ↔ ¬ (fs \ as)[ri[inodekey(ino)]].directory)) ∧ ( inodekey(ino) ∈ ri ∧ ¬ fs[ri[inodekey(ino)]].directory → mkfile(fs[ri[inodekey(ino)]].size, fs[ri[inodekey(ino)]].meta, fs[ri[inodekey(ino)]].nlink, abs-content(ino, fs, ri)) = mkfile ((fs \ as)[ri[inodekey(ino)]].size, (fs \ as)[ri[inodekey(ino)]].meta, (fs \ as)[ri[inodekey(ino)]].nlink, abs-content(ino, fs \ as, ri))) |
range ri ∩ as = ∅, inodekey(ino) ∈ ri, datakey(ino, n) ∈ ri ⊦ (fs \ as)[ri[datakey(ino, n)]].data = fs[ri[datakey(ino, n)]].data, fs[ri[inodekey(ino)]].directory
Used simplifier rules: 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;%at-content: ⊦ datakey(ino, n) ∈ ri → abs-content(ino, fs, ri)[n] = fs[ri[datakey(ino, n)]].data;% ⊦ key ∈ ri ∧ as ∩ range ri = ∅ → ¬ ri[key] ∈ as; (s)%int-c: ⊦ as ∩ as0 = as0 ∩ as; from specification set-union[node-store]%int-a: ⊦ (as ∩ as0) ∩ as1 = as ∩ as0 ∩ as1; from specification set-union[node-store]% ⊦ ¬ adr ∈ as → (fs \ as)[adr] = fs[adr]; (s)