| log-cons(log, fs), replay-safe(log, fs, fi ⊖ fo), key ∈ ri, key.data? → key.ino ≠ ino ∧ ¬ inodekey(key.ino) ∈ ro, key.data? → ¬ inodekey(key.ino) ∈ ro, key.data? → key.ino ≠ ino ⊦ (ri ⊖ (ro ++ inodekey(ino)))[key] = ((ri ⊖ inodekey(ino)) ⊖ ro)[key], key = inodekey(ino), 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? → key.ino ≠ ino, key.data? → ¬ inodekey(key.ino) ∈ ro, key.data? → key.ino ≠ ino ∧ ¬ inodekey(key.ino) ∈ ro ⊦ (ri ⊖ (ro ++ inodekey(ino)))[key] = ((ri ⊖ inodekey(ino)) ⊖ ro)[key], key = inodekey(ino), key ∈ ro, key ∈ ri ⊖ inodekey(ino) ∧ ¬ key ∈ ro ∧ ¬ key.data?
log-cons(log, fs), replay-safe(log, fs, fi ⊖ fo), key ∈ ri, key ∈ ri ⊖ inodekey(ino), key.data? → key.ino ≠ ino, key.data? → ¬ inodekey(key.ino) ∈ ro, key.data? → key.ino ≠ ino ∧ ¬ inodekey(key.ino) ∈ ro ⊦ (ri ⊖ (ro ++ inodekey(ino)))[key] = (ri ⊖ inodekey(ino))[key], key = inodekey(ino), key.data?, key ∈ ro
Used terms: key, ro, ri ⊖ inodekey(ino)