| # ax = # kx, new(ax, fs), ri-cons(ri, fs), inodekey(ino) ∈ ri, kx.toSet ⊆ dom ri ⊦ fs[ri[inodekey(ino)]].directory, dups(kx), dups(ax), (datakey(ino, n) ∈ ri → datakey(ino, n) ∈ ri[kx, ax]) ∧ (datakey(ino, n) ∈ ri[kx, ax] → fs[ax, fs[ri[kx]]][ri[kx, ax][datakey(ino, n)]].data = fs[ri[datakey(ino, n)]].data) |
# ax = # kx ⊦ new(ax, fs) ∧ ¬ dups(ax) ∧ ¬ dups(kx) ∧ ri-cons(ri, fs) ∧ kx.toSet ⊆ dom ri ∧ key ∈ ri → fs[ax, fs[ri[kx]]][ri[kx, ax][key]] = fs[ri[key]]
Used simplifier rules: ⊦ # kx = # ax → (key ∈ ri[kx, ax] ↔ key ∈ ri ∨ key ∈ kx); (ws)% ⊦ kx.toSet ⊆ dom ri ∧ ¬ key ∈ ri → ¬ key ∈ kx; (s) Used terms: datakey(ino, n), kx, ri, ax, fs