| log-cons(log, fs), replay-safe(log, fs, fi ⊖ fo), key ∈ ri, key.data? → ¬ inodekey(key.ino) ∈ ro ⊦ (ri ⊖ (ro ++ datakey(ino, n)))[key] = ((ri -- datakey(ino, n)) ⊖ ro)[key], key = datakey(ino, n), key ∈ ro |
⊦ key ∈ ri ∧ ¬ key ∈ ks ∧ ¬ key.data? → (ri ⊖ ks)[key] = ri[key]
log-cons(log, fs), replay-safe(log, fs, fi ⊖ fo), key ∈ ri, key.data? → ¬ inodekey(key.ino) ∈ ro ⊦ (ri ⊖ (ro ++ datakey(ino, n)))[key] = ((ri -- datakey(ino, n)) ⊖ ro)[key], key = datakey(ino, n), key ∈ ro, key ∈ ri ∧ ¬ key ∈ ro ++ datakey(ino, n) ∧ ¬ key.data?
log-cons(log, fs), replay-safe(log, fs, fi ⊖ fo), key ∈ ri, key.data? → ¬ inodekey(key.ino) ∈ ro ⊦ ri[key] = ((ri -- datakey(ino, n)) ⊖ ro)[key], key = datakey(ino, n), key.data?, key ∈ ro, key ∈ ro ++ datakey(ino, n)
Used terms: key, ro ++ datakey(ino, n), ri