| ⊦ ri[inodekey(ino)] = adr, adr ∈ ri, (inodekey(ino) ∈ ri → (fs[ri[inodekey(ino)]].directory ↔ fs[adr, nd][ri[inodekey(ino)]].directory)) ∧ ( inodekey(ino) ∈ ri ∧ fs[ri[inodekey(ino)]].directory → mkdir (fs[ri[inodekey(ino)]].size, fs[ri[inodekey(ino)]].meta, fs[ri[inodekey(ino)]].nlink, fs[ri[inodekey(ino)]].nsubdirs, abs-children(ino, fs, ri)) = mkdir (fs[adr, nd][ri[inodekey(ino)]].size, fs[adr, nd][ri[inodekey(ino)]].meta, fs[adr, nd][ri[inodekey(ino)]].nlink, fs[adr, nd][ri[inodekey(ino)]].nsubdirs, abs-children(ino, fs[adr, nd], ri))) |
fs[ri[inodekey(ino)]].directory, inodekey(ino) ∈ ri, dentrykey(ino, str) ∈ ri ⊦ fs[adr, nd][ri[dentrykey(ino, str)]].ino = fs[ri[dentrykey(ino, str)]].ino, ri[inodekey(ino)] = adr, adr ∈ ri
Used simplifier rules: D-inj: ⊦ mkdir(n0, md0, m0, m1, entries0) = mkdir(n1, md1, m2, m3, entries1) ↔ ¬(md0 ≠ md1 ∨ n0 ≠ n1 ∨ m0 ≠ m2 ∨ m1 ≠ m3 ∨ entries0 ≠ entries1);%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)