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