| fs[ri[inodekey(ino)]].directory, inodekey(ino) ∈ ri ⊦ ri[inodekey(ino)] = adr, adr ∈ ri, fs[ri[inodekey(ino)]].meta = fs[adr, truncnode(key, n)][ri[inodekey(ino)]].meta ∧ fs[ri[inodekey(ino)]].size = fs[adr, truncnode(key, n)][ri[inodekey(ino)]].size ∧ fs[ri[inodekey(ino)]].nlink = fs[adr, truncnode(key, n)][ri[inodekey(ino)]].nlink ∧ fs[ri[inodekey(ino)]].nsubdirs = fs[adr, truncnode(key, n)][ri[inodekey(ino)]].nsubdirs ∧ abs-children(ino, fs, ri) = abs-children(ino, fs[adr, truncnode(key, n)], ri) |
fs[ri[inodekey(ino)]].directory, inodekey(ino) ∈ ri, dentrykey(ino, str) ∈ ri ⊦ fs[adr, truncnode(key, n)][ri[dentrykey(ino, str)]].ino = fs[ri[dentrykey(ino, str)]].ino, ri[inodekey(ino)] = adr, adr ∈ ri
Used simplifier rules: C-ext: ⊦ entries = abs-children(ino, fs, ri) ↔ (∀ str. (str ∈ entries ↔ dentrykey(ino, str) ∈ ri) ∧ ( str ∈ entries → entries[str] = fs[ri[dentrykey(ino, str)]].ino));%in-children: ⊦ str ∈ abs-children(ino, fs, ri) ↔ dentrykey(ino, str) ∈ ri;%at-children: ⊦ dentrykey(ino, str) ∈ ri → abs-children(ino, fs, ri)[str] = fs[ri[dentrykey(ino, str)]].ino;% ⊦ adr ≠ adr0 → fs[adr0, nd][adr] = fs[adr]; (s)