| replay-log(log, fs, fi ⊖ fo) = ri ⊖ ro, log-cons(log, fs), node-cons(nd.key, nd), replay-safe(log, fs, fi ⊖ fo), ri-cons(ri, fs) ⊦ replay-safe(log, fs, fi ⊖ fo) ∧ ¬ adr ∈ replay-log(log, fs[adr, nd], fi ⊖ fo) ∧ replay-one(adr, nd, replay-log(log, fs[adr, nd], fi ⊖ fo)) = ri[nd.key, adr] ⊖ ro ↔ replay-one(adr, nd, ri ⊖ ro) = ri[nd.key, adr] ⊖ ro, adr ∈ fs, adr ∈ log |
replay-log(log, fs, fi ⊖ fo) = ri ⊖ ro, replay-one(adr, nd, ri ⊖ ro) = ri[nd.key, adr] ⊖ ro, log-cons(log, fs), node-cons(nd.key, nd), replay-safe(log, fs, fi ⊖ fo), ri-cons(ri, fs), adr ∈ ri ⊖ ro ⊦ adr ∈ fs, adr ∈ log
Used simplifier rules: replay-log-write: ⊦ ¬ adr ∈ log → replay-log(log, fs[adr, nd], ri) = replay-log(log, fs, ri);