| log-cons(log, fs), replay-safe(log, fs, fi ⊖ fo), datakey(m, m0) ∈ ri ⊦ (ri ⊖ (ro ++ inodekey(ino)))[datakey(m, m0)] = ((ri ⊖ inodekey(ino)) ⊖ ro)[datakey(m, m0)], m = ino, datakey(m, m0) ∈ ro, inodekey(m) ∈ ro |
⊦ datakey(ino, n) ∈ ri ∧ ¬ datakey(ino, n) ∈ ks ∧ ¬ inodekey(ino) ∈ ks → (ri ⊖ ks)[datakey(ino, n)] = ri[datakey(ino, n)]
log-cons(log, fs), replay-safe(log, fs, fi ⊖ fo), datakey(m, m0) ∈ ri ⊦ ri[datakey(m, m0)] = ((ri ⊖ inodekey(ino)) ⊖ ro)[datakey(m, m0)], m = ino, inodekey(m) ∈ ro, datakey(m, m0) ∈ ro, inodekey(m) ∈ ro ++ inodekey(ino), datakey(m, m0) ∈ ro ++ inodekey(ino)
Used simplifier rules: ⊦ ¬ key ∈ ks → (key ∈ ks ++ key0 ↔ key = key0); (s)% ⊦ inodekey(m) ≠ datakey(m0, m1); (s)% ⊦ inodekey(m) = inodekey(m0) ↔ m = m0; (s) Used terms: m0, m, ro ++ inodekey(ino), ri